2015-04-03 73 views
2

AVPlayerItemVideoOutput是AVFoundation中AVPlayerItemOutput的子类,我可以获得像素缓冲区格式的可视化数据并执行一些操作。 (通过copyPixelBufferForItemTime :)为什么AVFoundation中不存在AVPlayerItemAudioOutput?

但是,没有相应的AVPlayerItemAudioOutput存在。我如何处理音频数据?

我必须使用AVAssetReader类来获得这个吗?

+0

它们表面上相似,但都是较低级C库的薄包装。 – uchuugaka 2015-04-03 12:05:18

回答

1

这是一个很好的问题。 -[AVPlayerItem addOutput:]提到音频,但没有什么可以在AVPlayerItemOutput.h找到它(除非你打算通过AVPlayerItemLegibleOutput类获得音频 - 我只是半开玩笑,作为一个类,我认为假设AVPlayerItemAudioOutput看起来像一个很多像这样)。

所以我不知道在哪里AVPlayerItemAudioOutput是,但是可以使用AVAssetReader来获取音频数据。

但是,如果您已经在使用AVPlayer,那么您最无痛的路径是使用MTAudioProcessingTap来扮演假设的AVPlayerItemAudioOutput的角色。

您可以将自来水加入的inputParametersAVPlayercurrentItemaudioMix接收(甚至修改)您所选择的音轨的音频。

读取some example code可能比解析我刚刚写的内容更容易。

+0

非常感谢!这真是太好了。我刚刚实现了AVPlayer,发现没有办法处理音频数据,除非我通过AVAssetReader重写它。我会看看'MTAudioProcessingTap'和你发布的例子。顺便说一句:你的意思是“你打算通过AVPlayerItemLegibleOutput类获取音频”,你的意思是音频数据可以通过这个AVPlayerItemLegibleOutput类获得?怎么样? – 2015-04-03 13:22:59

+0

似乎使用'MTAudioProcessingTap'将比使用AVAssetReader更加痛苦。我甚至找不到任何文件是ios8.2 docset。 – 2015-04-03 16:58:18

+0

我对“AVPlayerItemLegibleOutput”的评论是一个笑话,现在在答案中解释。 – 2015-04-03 19:38:03

相关问题