AVPlayerItemVideoOutput是AVFoundation中AVPlayerItemOutput的子類,我可以獲得像素緩衝區格式的可視化數據並執行一些操作。 (通過copyPixelBufferForItemTime :)爲什麼AVFoundation中不存在AVPlayerItemAudioOutput?
但是,沒有相應的AVPlayerItemAudioOutput存在。我如何處理音頻數據?
我必須使用AVAssetReader類來獲得這個嗎?
AVPlayerItemVideoOutput是AVFoundation中AVPlayerItemOutput的子類,我可以獲得像素緩衝區格式的可視化數據並執行一些操作。 (通過copyPixelBufferForItemTime :)爲什麼AVFoundation中不存在AVPlayerItemAudioOutput?
但是,沒有相應的AVPlayerItemAudioOutput存在。我如何處理音頻數據?
我必須使用AVAssetReader類來獲得這個嗎?
這是一個很好的問題。 -[AVPlayerItem addOutput:]
提到音頻,但沒有什麼可以在AVPlayerItemOutput.h
找到它(除非你打算通過AVPlayerItemLegibleOutput
類獲得音頻 - 我只是半開玩笑,作爲一個類,我認爲假設AVPlayerItemAudioOutput
看起來像一個很多像這樣)。
所以我不知道在哪裏AVPlayerItemAudioOutput
是,但是可以使用AVAssetReader
來獲取音頻數據。
但是,如果您已經在使用AVPlayer
,那麼您最無痛的路徑是使用MTAudioProcessingTap
來扮演假設的AVPlayerItemAudioOutput
的角色。
您可以將自來水加入的inputParameters
您AVPlayer
的currentItem
的audioMix
接收(甚至修改)您所選擇的音軌的音頻。
讀取some example code可能比解析我剛剛寫的內容更容易。
非常感謝!這真是太好了。我剛剛實現了AVPlayer,發現沒有辦法處理音頻數據,除非我通過AVAssetReader重寫它。我會看看'MTAudioProcessingTap'和你發佈的例子。順便說一句:你的意思是「你打算通過AVPlayerItemLegibleOutput類獲取音頻」,你的意思是音頻數據可以通過這個AVPlayerItemLegibleOutput類獲得?怎麼樣? – 2015-04-03 13:22:59
似乎使用'MTAudioProcessingTap'將比使用AVAssetReader更加痛苦。我甚至找不到任何文件是ios8.2 docset。 – 2015-04-03 16:58:18
我對「AVPlayerItemLegibleOutput」的評論是一個笑話,現在在答案中解釋。 – 2015-04-03 19:38:03
它們表面上相似,但都是較低級C庫的薄包裝。 – uchuugaka 2015-04-03 12:05:18