Wwise SDK 2023.1.8
|
Marker(标记)是插入 WAV 文件并用在波形中标示位置的标识符。通常可以在 WAV 编辑器应用程序(例如 SoundForge®、Adobe® Audition® 或 CueTool)中创建这些标记。
当播放到特定位置时,应用程序可使用这些标记来获得通知。例如,您可以使用此信息将视觉内容的绘制与正在播放的音频同步,或者了解随机容器正在播放哪个文件,以便在游戏中显示正确的字幕。
备注: 使用 Wwise 标记通知(Marker Notification)功能通常是集成对口型或字幕解决方案最高效的方式。 |
块(chunk)是用于存储提示点(cue point)或有关提示点的数据的数据存储单元。提示点是 .wav 格式文件中标示的兴趣点。
提示块(cue chunk)格式用于存储标记位置,标记位置用于提示 .wav 文件中的兴趣点。
列表块(list chunk)是包 .wav 文件内部的容器,其中包含子块。相关数据列表块(associated data list chunk,adtl)格式用于存储标签、注释以及与提示点的关联文本。
标签子块(label sub-chunk)格式用于存储提示点的关联字符串。它应该位于关联数据列表块内。
源插件也可生成标记通知。
在源插件内,可使用 AK::IAkPluginServiceMarkers::CreateMarkerNotificationService()
创建 AK::IAkPluginServiceMarkers::IAkMarkerNotificationService
实例。然后,可使用 AK::IAkPluginServiceMarkers::IAkMarkerNotificationService::SubmitMarkerNotifications()
将标记通知发给使用 AkAudioMarker
结构的游戏。
下面举例展示了用于生成标记通知的源插件。
以下是有关如何设置应用程序,以使它能够接收标记通知的说明:
AK_Marker
标识添加到 in_uiFlags
。如果您还想收到End of Event(事件结束)通知,则应使用 AK_EndOfEvent
| AK_Marker
,因为这些标志采取按位异或运算。AK_Marker
通知,则在收到任何其他事件类型时应返回。in_pCallbackInfo
类型转换(typecast)为相应的信息结构类型。对于 AK_Marker 通知,相应的信息结构类型为 AkMarkerCallbackInfo。strLabel
字符串成员的内容,因为在回调返回后,指针可能会被作废。目前当缓冲区向下传递到硬件时发送通知。这意味着,发送通知与遇到标记之间存在一定延时。这样在真正播放与标记关联的声音之前,应用程序有足够的时间来收集并处理标记中的信息。
注意这个延时取决于平台。
Marker 回调和 End of Event 回调从声音引擎的主线程完成。这意味着您的应用程序应从通知中收集它所需的全部信息,并立即返回。如果需要进行任何处理,则应当从通知中复制相关信息后,使用单独的线程来执行。
如果应用程序占用线程太久,声音引擎可能掉入 underrun(欠载运行)状态,导致输出停止播放。
Wwise Profiler 可以显示来自声音引擎的标记通知。为此,必须确保启用 Profiler Settings 对话框中的 Markers Notification Data 选项。当播放到达标记处并已请求通知时,Capture Log 中将在新的一行中显示相关信息。注意,如果需要可以过滤掉这些通知,方法是取消选择 Capture Log Filter 对话框中的 Markers Notification Data 复选框。