2012-01-24 102 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

感谢您的回复,这基本上是我现在正在做的事情,但这证明了这是做到这一点的方法。 –