iOS AVPlayer 取消缓冲

问题描述 投票:0回答:6

如果我使用

 从主机加载文件 
AVPlayer

[AVPlayer playerWithPlayerItem:playerItem];

并且“缓冲”花费的时间比用户想要的要长,我如何允许他们取消它?

ios streaming avplayer
6个回答
9
投票

所以正确的答案是@Che:

如果你会调用 [self.player ReplaceCurrentItemWithPlayerItem:nil]; 缓冲停止。 – 车 10 月 13 日 14:36

您可以在观察者上执行此操作,监听来自playerWithPlayerItem的状态更新。谢谢大家!


3
投票

你可以试试这个

// pause buffer
[self.playerItem cancelPendingSeeks];
[self.playerItem.asset cancelLoading];

1
投票

我认为没有办法直接停止缓冲。但是您可以检查 AVPlayerItem 的布尔值

playbackLikelyToKeepUp
属性来检查缓冲区是否正在加载。然后我不会暂停 AVPlayer 上的播放。


1
投票

斯威夫特3

player?.replaceCurrentItem(with: nil)

0
投票

您需要管理avplayer currentItem的preferredForwardBufferDuration。如果您想停止缓冲,请将值设置为 1,因为如果您将其设置为 0,它将自动设置

self.avPlayer.currentItem.preferredForwardBufferDuration = 1;

来自苹果文档: 此属性定义首选转发缓冲区持续时间(以秒为单位)。如果设置为 0,玩家将为大多数用例选择适当的缓冲级别。将此属性设置为较低的值将增加播放停止和重新缓冲的机会,而将其设置为较高的值将增加对系统资源的需求。


0
投票

缓冲由 AVPlayer 自动管理,下一行代码指示 AVPlayer 停止缓冲。

avplayer.replaceCurrentItem(with: nil)
© www.soinside.com 2019 - 2024. All rights reserved.