设置AVPlayer AVPlayerItem缓冲区大小?

时间:2017-05-01 13:44:31

标签: ios avplayer avplayeritem

使用avplayer播放视频,收听loadedTimeRanges属性,播放大约10分钟的视频,avplayer始终预装视频,感觉非常昂贵,有没有办法限制预加载区域的大小?比如预加载视频的一半时间?

2 个答案:

答案 0 :(得分:4)

我认为您正在寻找AVPlayerItem的 preferredForwardBufferedDuration 属性。

Per Apple:

  

此属性定义首选的正向缓冲持续时间(以秒为单位)。如果设置为0,则播放器将为大多数用例选择适当的缓冲级别。将此属性设置为较低值将增加播放停止和重新缓冲的可能性,而将其设置为较高值将增加对系统资源的需求。

请参阅https://developer.apple.com/reference/avfoundation/avplayeritem/1643630-preferredforwardbufferduration?language=objc

答案 1 :(得分:1)

如果您使用resourceLoaderdelegate,则可以控制在播放之前预先加载/下载的内容的确切数量。

这里的代码示例是一个好的开始-AVPlayer stalling on large video files using resource loader delegate

基本上,您将必须维护一组待处理的请求,并通过启动URLSession dataTask一次处理一次,直到下载了要预加载的足够内容为止。

干杯。