重新加载AVMutableComposition

Ken*_*rin 5 iphone objective-c avfoundation ios avcomposition

我有一个AVMutableComposition,我已经与AVPlayer相关联.似乎如果我为这个合成添加曲目,除非我再次在播放器上设置合成,否则AVPlayer不会播放添加的曲目.现在我只是用已经设置的相同成分替换当前项目来做到这一点.之后它会拿起新的曲目.

我无法弄清楚这是不是这样做的正确方法,不知何故,这样做有点奇怪.

有任何想法吗?

谢谢

Or *_*Ron 5

基本上虽然它是可变组合,苹果建议创建一个不可变的组合并创建AVPlayerItem用于播放目的.这有点烦人,但你可以绕过它.当您想要刷新视频时,只需对时间进行采样,创建另一个AVPlayerItem并将其加载到正确的时间.

这是来自apple的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];
Run Code Online (Sandbox Code Playgroud)

更多信息:完整文件

  • 感谢您的回复,这基本上就是我现在正在做的事情,但这证实了这就是这样做的方式。 (2认同)