Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios MPMovieplayerController可播放m3u8文件的持续时间波动_Ios_Objective C_Video Streaming_Mpmovieplayercontroller_Http Live Streaming - Fatal编程技术网

Ios MPMovieplayerController可播放m3u8文件的持续时间波动

Ios MPMovieplayerController可播放m3u8文件的持续时间波动,ios,objective-c,video-streaming,mpmovieplayercontroller,http-live-streaming,Ios,Objective C,Video Streaming,Mpmovieplayercontroller,Http Live Streaming,我正在缓冲m3u8格式的视频,并将此url设置为MPMovieplayerController的contenturl 我正在运行一个每0.3秒运行一次的后台线程,用于检查缓冲和播放的持续时间,并相应地执行检查 if(!mPlaybackProgressTimer) mPlaybackProgressTimer = [[NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(didPlayback:

我正在缓冲m3u8格式的视频,并将此url设置为MPMovieplayerController的contenturl

我正在运行一个每0.3秒运行一次的后台线程,用于检查缓冲和播放的持续时间,并相应地执行检查

if(!mPlaybackProgressTimer)
    mPlaybackProgressTimer = [[NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(didPlayback:) userInfo:nil repeats:YES] retain];
在播放过程中

问题在于,在某些情况下,bufferedTime会波动:- -I将m3u8文件分为不同分辨率和比特率的单独文件 -我有一个index.m3u8文件,它决定了哪个m3u8文件用于什么带宽 -当然,它不提供整个m3u8文件,而是提供单个*.ts文件,这取决于用户如何在没有任何延迟的情况下获得最佳体验所有这些都是内部管理的 -我也按照法律的规定遵循了这一切

我不知道为什么会出现这种波动,但对我来说似乎有意义的是。。一定数量的数据被缓冲,但我认为数据可能被丢弃只是一种理论

注意:我正在使用encoding.com对媒体进行分段

更新:日志

2013-01-14 11:46:57.731 IronStudios[7724:c07]缓冲区进度:0.139779 2013-01-14 11:46:57.930 IronStudios[7724:c07]缓冲区进度:0.139779 2013-01-14 11:46:58.130 IronStudios[7724:c07]缓冲区进度:0.139790 2013-01-14 11:46:58.331 IronStudios[7724:c07]缓冲区进度:0.139790 2013-01-14 11:46:58.530 IronStudios[7724:c07]缓冲区进度:0.125042 2013-01-14 11:46:58.730 IronStudios[7724:c07]缓冲区进度:0.126391 2013-01-14 11:46:58.930 IronStudios[7724:c07]缓冲区进度:0.124450 2013-01-14 11:46:59.130 IronStudios[7724:c07]缓冲区进度:0.125799


正如您所看到的,在某些情况下,缓冲区进程正在减少。

持续时间可以从下载的数量中获得,而可播放的持续时间则可以从可播放的内容中获得

只有在下载完整个mpeg2 ts区块后,iOS才会开始播放该区块

假设您正在使用10秒的块

Downloaded: 2.2 chunks (22 seconds)
Playable:   2   chunks (20 seconds)
Progress bar = 2 / 2.2 = ~91%
几秒钟后

Downloaded: 2.9 chunks (29 seconds)
Playable:   2   chunks (20 seconds)
Progress bar = 2 / 2.9 = ~69%
Downloaded: 3.1 chunks (31 seconds)
Playable:   3   chunks (30 seconds)
Progress bar = 3 / 3.1 = ~97%
您的进度条已后退

几秒钟后

Downloaded: 2.9 chunks (29 seconds)
Playable:   2   chunks (20 seconds)
Progress bar = 2 / 2.9 = ~69%
Downloaded: 3.1 chunks (31 seconds)
Playable:   3   chunks (30 seconds)
Progress bar = 3 / 3.1 = ~97%

再次向前…

为什么您希望可玩持续时间保持不变?玩家正在前方阅读并同时播放。你能添加一些NSLog来显示bufferedTime随时间的变化,并将其包含在你的问题中吗?@danh抱歉,我不清楚。。通过波动,我真正的意思是持续时间在减少..当我试图计算缓冲时间时,我在考虑可播放的持续时间,正如你所看到的,只有在下载整个区块时,持续时间才会增加。。我说得对吗?