【问题标题】:set AVPlayer AVPlayerItem buffer size?设置 AVPlayer AVPlayerItem 缓冲区大小?
【发布时间】:2017-05-01 13:44:31
【问题描述】:

用avplayer播放视频,听loadedTimeRanges属性,播放10分钟左右的视频,avplayer总是预加载视频,感觉很费钱,有没有办法限制预加载区域的大小?比如一半时间预加载视频?

【问题讨论】:

    标签: ios avplayer avplayeritem


    【解决方案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 一次一个地处理它们,直到您下载了足够的要预加载的内容。

    干杯。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-10
      • 2012-08-10
      • 1970-01-01
      • 2017-05-29
      相关资源
      最近更新 更多