2012-01-24 95 views
5

我有一個AVMutableComposition與AVPlayer相關聯。 看來,如果我將曲目添加到此曲目,AVPlayer不會播放添加曲目,除非我再次在播放器上設置曲目。現在我只需用已經設置的相同組合替換當前項目就可以了。之後,它會選擇新的曲目。重新加載AVMutableComposition

我一直無法弄清楚這是否是正確的做法,它似乎有點奇怪,必須這樣做。

任何想法?

感謝

+0

但你不看它的奇怪?如果你正在移除一首曲目,那麼你不需要更換該播放器的物品,並且該曲目在沒有任何進一步替換的情況下停止播放! – AMTourky

回答

5

基本上雖然它的可變組成,蘋果建議創建一個不可改變的組成和回放目的創建AVPlayerItem。這有點煩人,但你可以繞過它。當你想刷新視頻時只需要抽樣,創建另一個AVPlayerItem並將其加載到正確的時間。

下面是蘋果的AVMutableComposition文檔片段

AVMutableComposition是AVComposition的一個可變的子類,當你想從現有資產的新成分使用 。您可以添加和刪除曲目,並且您可以添加,刪除和縮放時間範圍的 。

你可以讓一個可變組成的一個不變的快照 播放或檢查如下:

AVMutableComposition *myMutableComposition = 
    <#a mutable composition you want to inspect or play in its current state#>; 

AVComposition *immutableSnapshotOfMyComposition = [myMutableComposition copy]; 

// Create a player to inspect and play the composition. 
AVPlayerItem *playerItemForSnapshottedComposition = 
    [[AVPlayerItem alloc] initWithAsset:immutableSnapshotOfMyComposition]; 

更多信息:Full Document

+1

感謝您的回覆,這基本上是我現在正在做的事情,但這證明了這是做到這一點的方法。 –