我有一个与AVPlayer关联的AVMutableComposition。似乎如果我将曲目添加到这个乐曲中,AVPlayer不会播放添加的曲目,除非我在播放器上再次设置乐曲。现在,我只需用已经设置的相同构图替换当前项。在此之后,它会拾取新的曲目。
我还不能确定这是否是正确的方法,但这样做似乎有点奇怪。
有什么想法吗?
谢谢
发布于 2012-01-29 19:23:46
基本上,虽然它是可变的组合,但苹果建议创建一个不可变的组合,并创建用于回放的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];更多信息:Full Document
发布于 2019-10-10 16:40:56
如果只是从与playerItem关联的可变组合中移除一个曲目,则可以使用完成处理程序将AVPlayer对象上的seeking方法调用到当前时间,以强制播放器清除加载的缓冲区。
// refresh player
player.seek(to: playerItem.currentTime()) { _ in }https://stackoverflow.com/questions/8994560
复制相似问题