访问视频资产中的音轨的原始数据以进行实时处理

时间:2012-02-13 11:12:02

标签: ios avfoundation core-audio avplayer

我试图实时拦截基于文件的视频资源的音频流,以便在播放视频时将一些实时效果应用于声道并与其他音频源混合。

理想情况下,能够获取AVPlayer对象的音轨,将其作为单独的可寻址输入插入音频Graph,通过具有合适音频单元的回调处理它,然后重新注入它将会很棒实时传送到音频输出,但我找不到一个简单的方法来做到这一点,同时保持原始视频资产的完整性。我一直无法找到如何访问AVPlayer的音频缓冲区,以便将其原始数据转发到声音处理回调。

在我看来,唯一合适的方法是将音频和视频轨道分离出来,将它们作为单独的文件处理,然后使用AVPlayer处理视频轨道(删除声音)并运行所有音频通过并行运行的独立Core Audio处理路径,但我担心这种方法会使AV同步变得更具挑战性,此外还会添加繁琐的离线准备任务。任何想法或替代方法?

1 个答案:

答案 0 :(得分:0)

我认为AVAudioPlayer不具备实时功能,并且无法直接将此高级框架与最低级别的音频单元(和音频图形)连接。

我建议在音频图中实现文件播放器节点。该播放器节点将播放视频中的音频。但也许新的AVAudioEngine是很好的方法,但是这个框架非常错误,目前还没有很好的文档 - 它的测试版。 音频信号实时处理对于它自己来说是一个难题 - 与视频结合起来真的很难。 :-)如果您找到适合您应用的可行解决方案,请告诉我。