设置 AVPlayer AVPlayerItem 缓冲区大小?
Posted
技术标签:
【中文标题】设置 AVPlayer AVPlayerItem 缓冲区大小?【英文标题】:set AVPlayer AVPlayerItem buffer size? 【发布时间】:2017-05-01 13:44:31 【问题描述】:用avplayer播放视频,听loadedTimeRanges属性,播放10分钟左右的视频,avplayer总是预加载视频,感觉很费钱,有没有办法限制预加载区域的大小?比如一半时间预加载视频?
【问题讨论】:
【参考方案1】:我认为您正在寻找 AVPlayerItem 的 preferredForwardBufferedDuration 属性。
每个苹果:
此属性以秒为单位定义首选的转发缓冲区持续时间。如果设置为 0,播放器将为大多数用例选择适当的缓冲级别。将此属性设置为较低的值会增加播放停止和重新缓冲的机会,而将其设置为较高的值会增加对系统资源的需求。
见https://developer.apple.com/reference/avfoundation/avplayeritem/1643630-preferredforwardbufferduration?language=objc
【讨论】:
谢谢,但是这个属性可能不是我要找的,我用的是avplayer,但是它是自动缓冲视频的,当使用KVO监视器loadedTimeRanges属性时,发现即使我没看所有的视频,都会全部加载,我想有没有办法只加载缓存的一部分。【参考方案2】:如果您使用resourceLoaderdelegate
,您可以控制在播放之前预加载/下载的内容的确切数量。
这里的代码示例是一个好的开始 - AVPlayer stalling on large video files using resource loader delegate
基本上,您必须维护一组pendingRequests 并通过启动URLSession dataTask 一次一个地处理它们,直到您下载了足够的要预加载的内容。
干杯。
【讨论】:
以上是关于设置 AVPlayer AVPlayerItem 缓冲区大小?的主要内容,如果未能解决你的问题,请参考以下文章
如何正确删除/释放 AVPlayer/AVPlayerItem?
使用 AVPlayer、AVPlayerItem 和 AVPlayerAsset 有啥区别吗?
使用 AVURLAsset + AVPlayerItem + AVPLayer 流式传输 .mp3
iOS 7中的iOS 7 AVPlayer AVPlayerItem持续时间不正确
通过 AvPlayerItem 和 AvPlayer 流式传输时监控下载的字节数 - iOS
iOS 8.4 AVFoundation _attachToPlayer 或 _attachToFigPlayer 崩溃 |一个 AVPlayerItem 不能与多个 AVPlayer 实例关联