设置AVPlayer AVPlayerItem缓冲区大小?

问题描述 投票:2回答:2

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

ios avplayer avplayeritem
2个回答
4
投票

我想你正在寻找AVPlayerItem的preferredForwardBufferedDuration属性。

每个Apple:

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

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


1
投票

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

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

基本上,您必须维护一个pendingRequests数组并通过激活URLSession dataTask逐个处理它们,直到您下载了足够的内容来预加载。

干杯。

© www.soinside.com 2019 - 2024. All rights reserved.