2011-06-06 53 views
0

我開發了一款使用AVFoundation for iOS的媒體播放器。我正在使用AVPlayer播放音頻 - 視頻文件(例如,mp4文件)。使用AVPlayer播放文件似乎非常簡單,通過直接調用播放,暫停API。使用AVFoundation Framework單獨播放mp4文件的音頻和視頻

現在我想分離音頻和視頻,並將它們作爲單獨的實體同時播放。我想這樣做是因爲我可能會對音頻或視頻軌道進行一些編輯,然後播放該文件。

我可以使用AVAssetTracks分開這兩個,但我不知道如何播放曲目。另外,我想同時播放這兩個音軌,這樣就不會出現AVSync問題。

請指導我如何實現此目標,即音頻和視頻渲染沒有AVSync問題。

謝謝..

回答

0

最簡單的方法是獲得多個玩家的物品。我會創建一個playerItem的所有軌道以其原始形式(即mp4文件)。然後使用AVMutableComposition(AVAsset的一個子類)創建另一個資產。這允許您僅將特定音軌放入合成中(即僅音軌)。當您只想播放音頻時,播放具有可變組成音軌的playerItem(AVPLayer setCurrentItem :)。如果您只想播放視頻,請播放具有可變構圖的playerItem,並僅使用視頻軌道。如果您想同時播放這兩個節目,請使用原始資源播放playerItem。

我假設你想要同步播放編輯過的版本。爲此,您將不得不創建另一個AVMutableComposition並添加所有編輯的曲目。然後用新創建的AVMutableComposition調用setCurrentItem:。

如果您要做的只是編輯不同的曲目,而不必單獨播放它們,您可以使用一個AVMutableComposition來完成。只需添加一個音頻和視頻AVMutableCompositionTrack並編輯,直到你的心中的內容。無論您分別編輯多少個字符(假設您的編輯邏輯正確),它們將始終同步播放。只要確保在播放時不嘗試編輯。爲此,您必須創建副本並編輯副本。