2015-04-03 19 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