【问题标题】:iOS process audio stream while playing videoiOS在播放视频时处理音频流
【发布时间】:2013-02-04 13:46:30
【问题描述】:

我正在尝试为 iOS 创建一个视频播放器,但需要阅读一些额外的音轨。我一直在检查 MPVideoPlayerController,以及 AV Foundation 中的 AVPlayer,但都有些模糊。 我要做的是播放视频(来自本地 .mp4),在播放电影时获取当前的音频缓冲区/帧,这样我就可以进行一些计算和其他(不是视频/audio 相关)依赖于当前播放的音频的操作。这意味着视频应该继续播放,它的音轨,但我还想要实时原始音频数据进行计算(例如:获取特定频率的幅度)。

有没有人有这样做的例子或提示?当然,我查看了 Apple 的 AV Foundation 库文档,但对我来说还不够清楚。

【问题讨论】:

    标签: ios audio video real-time avfoundation


    【解决方案1】:

    经过非常(非常)长时间的谷歌搜索,我找到了一篇描述 MTAudioProcessingTap 的博文。 iOS 6.0 引入,完美解决了我的问题。

    操作方法/博客文章可以在这里找到:http://chritto.wordpress.com/2013/01/07/processing-avplayers-audio-with-mtaudioprocessingtap/

    我希望它现在对其他人有所帮助....... 谷歌搜索(有很多不同的术语)对我来说唯一弹出的是我自己的帖子。而且只要你不知道 MTAudioProcessingTap 的存在,你就不知道如何用谷歌搜索它:-)

    【讨论】:

    • 嗨,Niek,一个后续问题,MTAudioProcessingTap 是否支持多声道 (>2) ?提前谢谢!
    • @PeiXiang 是的,请检查此答案中的链接。 bufferListInOut->mBuffers 包含不同通道的集合,请参阅博文底部的代码。
    • 感谢@Niek,是的,bufferListInOut 是一个可以包含多个缓冲区的列表,但是如果我们将两个以上的通道填充到 MTAudioProcessingTap 中,系统将运行异常并且 MTAudioProcessingTap 的“准备”回调永远不会被调用。鉴于它在其结构中具有“左”和“右”概念,我怀疑是否不支持超过 2 个通道案例......
    猜你喜欢
    • 1970-01-01
    • 2014-06-06
    • 2015-10-20
    • 1970-01-01
    • 2019-12-14
    • 1970-01-01
    • 2017-10-17
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多