如果我使用
从主机加载文件
AVPlayer
[AVPlayer playerWithPlayerItem:playerItem];
并且“缓冲”花费的时间比用户想要的要长,我如何允许他们取消它?
所以正确的答案是@Che:
如果你会调用 [self.player ReplaceCurrentItemWithPlayerItem:nil]; 缓冲停止。 – 车 10 月 13 日 14:36
您可以在观察者上执行此操作,监听来自playerWithPlayerItem的状态更新。谢谢大家!
你可以试试这个
// pause buffer
[self.playerItem cancelPendingSeeks];
[self.playerItem.asset cancelLoading];
我认为没有办法直接停止缓冲。但是您可以检查 AVPlayerItem 的布尔值
playbackLikelyToKeepUp
属性来检查缓冲区是否正在加载。然后我不会暂停 AVPlayer 上的播放。
斯威夫特3
player?.replaceCurrentItem(with: nil)
您需要管理avplayer currentItem的preferredForwardBufferDuration。如果您想停止缓冲,请将值设置为 1,因为如果您将其设置为 0,它将自动设置
self.avPlayer.currentItem.preferredForwardBufferDuration = 1;
来自苹果文档: 此属性定义首选转发缓冲区持续时间(以秒为单位)。如果设置为 0,玩家将为大多数用例选择适当的缓冲级别。将此属性设置为较低的值将增加播放停止和重新缓冲的机会,而将其设置为较高的值将增加对系统资源的需求。
缓冲由 AVPlayer 自动管理,下一行代码指示 AVPlayer 停止缓冲。
avplayer.replaceCurrentItem(with: nil)