多个音频队列的同步

Posted

技术标签:

【中文标题】多个音频队列的同步【英文标题】:Synchronization of Multiple Audio Queues 【发布时间】:2016-06-28 14:07:57 【问题描述】:

Apple 的音频队列文档声称具有“其他高级功能支持多个音频队列的预定播放和同步”。但是,在网络上的任何地方都找不到相同的文档。

我有三个音频队列,需要同步播放/停止/暂停/恢复。任何指针表示赞赏。

【问题讨论】:

【参考方案1】:

AudioQueue 头文件中有许多使用 AudioTimeStamp 的有趣函数。

特别是AudioQueueStart 有一个名为inStartTimeAudioTimeStamp 参数。 也许您可以使用mHostTime 字段来指定主机的时基,mach_absolute_time 您应该能够使用它来同步多个音频队列。

那么我猜你会使用AudioQueueEnqueueBufferWithParameters 中的inStartTime 参数在正确的时间对缓冲区进行排队。不知道如何同步停止...

就我个人而言,我发现AudioQueues 比 LPCM 更让人心痛,所以我会使用远程 io 音频单元(或现代等效设备)自己混合和输出三个音频流,因为你可以同步播放,继续/stop,免费暂停。

【讨论】:

实际上,我不断地从套接字连接获取音频缓冲区。所以在这里我面临与视频同步的问题。有什么线索可以挽救我的一天吗? 确保只有一个时间线(可能是主机时间)并将音频和视频映射到该时间线。并提出一个新问题,详细说明您正在使用什么 API。 使用 AudioQueueServices API。

以上是关于多个音频队列的同步的主要内容,如果未能解决你的问题,请参考以下文章

FFmpeg concat 视频和音频不同步

Xcode:多个音频文件,单个按钮

是否可以最好使用javascript混合多个音频文件

使用 WiFi 在 iOS 设备之间同步音频的最佳方法是啥?

音频队列 |在 audioQueue 运行时更改音频设备

当我需要自定义音频效果时,我是不是需要处理音频单元,或者我可以依赖音频队列服务?