处于暂停状态时如何强制 AVPlayer 暂停缓冲?

Posted

技术标签:

【中文标题】处于暂停状态时如何强制 AVPlayer 暂停缓冲?【英文标题】:How to force AVPlayer to pause buffering when it is in paused state? 【发布时间】:2015-11-19 22:55:09 【问题描述】:

我正在使用 AVPlayer 播放视频。我使用AVPlayer pause 来暂停播放器。但是通过 Charles 的观察可以看出,当播放器处于暂停状态时,流段仍在被下载。

我找到了AVPlayer buffering, pausing notification, and poster frame,但他们说是

AVPlayer 会在几种情况下缓冲视频,不明确 记录在案

这是正常行为吗?播放器暂停时如何让缓冲暂停?

【问题讨论】:

ios 9 中结帐canUseNetworkResourcesForLiveStreamingWhilePaused canUseNetworkResourcesForLiveStreamingWhilePaused 根据文档应该没问题,但在我的情况下它不起作用。 【参考方案1】:

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

self.avPlayer.currentItem.preferredForwardBufferDuration = 1;

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

【讨论】:

以上是关于处于暂停状态时如何强制 AVPlayer 暂停缓冲?的主要内容,如果未能解决你的问题,请参考以下文章

iOS AVPlayer 在快退/快进后无法暂停

如何暂停/恢复 avplayer 预加载

使用 AVPlayer 播放音频时如何在 UIWebView 中暂停音频

iOS AVPlayer:屏幕锁定时暂停视频

如何在其他视图中使用 Swift 中的 AVPlayer 暂停和播放音乐

如何在 tvOS 上暂停我的 AVPlayer 实例?