将AV播放器与HTTP Live Streaming一起使用时会预先缓冲多少视频内容,并且可以更改该值

cod*_*irl 2 iphone avfoundation video-streaming http-live-streaming avplayer

我正在编写一个视频应用程序,该应用程序可以播放来自网络的流式视频,并且正在使用AV播放器来播放。我的问题是我如何找出预先缓冲了多少视频内容,在MPMoviePlayerController中可以看到UISlider上缓冲的内容量。我想使用AV Player演示相同的内容,并且还可以更改预缓冲内容的数量。

我的理想情况是-用户使用我的应用流式传输电影文件,如果他暂停播放按钮,则电影会像您观看youtube视频一样继续缓冲。

请帮忙 !!

谢谢。

Dav*_*son 5

通过查看AVPlayerItem loadedTimeRanges属性,可以查看播放头之前已加载和缓冲的数据量。

例如

AVPlayer *player;
NSArray *loadedTimeRanges = player.currentItem.loadedTimeRanges;
NSLog(@"LoadedTimeRanges: %@", loadedTimeRanges);
Run Code Online (Sandbox Code Playgroud)

对于我的应用程序,我可以看到:

LoadedTimeRanges: (
    "CMTimeRange: {{338070700809/1000000000 = 338.071}, {54651145016/1000000000 = 54.651, rounded}}"
)
Run Code Online (Sandbox Code Playgroud)

其中第二个值(54.651)似乎是播放头前面存在的缓冲量。在停转的情况下,此值会随着播放的继续而减小,直到达到大约0。

我所见过的预缓冲内容介于55到60秒之间–您只能检查该值,而不能强制播放器缓冲更多数据。但是,您可以使用此值直观地指示缓冲给用户的数据量。