bilibili / ijkplayer

Android/iOS video player based on FFmpeg n3.4, with MediaCodec, VideoToolbox support.
GNU General Public License v2.0
32.54k stars 8.13k forks source link

视频播放一会一直卡在缓冲上 #283

Open xiaojianan opened 9 years ago

xiaojianan commented 9 years ago

视频播放一会就会一直卡在缓冲上无法继续播放,不知道该怎么解决,能提供一下解决思路么,最后的log如下,就一直卡住不继续播放了。 06-19 16:26:45.363: D/IJKMEDIA(25902): ffp_toggle_buffering_l: start 06-19 16:26:45.363: W/IJKMEDIA(25902): FFP_MSG_BUFFERING_START: 06-19 16:26:45.366: I/tv.danmaku.ijk.media.player.IjkMediaPlayer(25902): Info (701,0) 06-19 16:26:45.366: D/tv.danmaku.ijk.media.widget.VideoView(25902): onInfo: (701, 0) 06-19 16:26:45.366: D/tv.danmaku.ijk.media.widget.VideoView(25902): onInfo: (MEDIA_INFO_BUFFERING_START)

xiaojianan commented 9 years ago

补充视频地址,使用ijk demo播放一会就会卡住, http://cache.m.iqiyi.com/dc/dt/mobile/20150615/1c/62/40a9a1efd52ee2877affb97e564c137e.m3u8?qypid=373423000_22&qd_src=5be6a2fdfe4f4a1a8c7b08ee46a18887&qd_tm=1434677664000&qd_ip=121.41.110.6&qd_sc=1e3b408375539deb2dbf35d2f17ceb27&mbd=f0f6c3ee5709615310c0f053dc9c65f2_5.9_1

bbcallen commented 9 years ago

没有能够重现这问题。ijkmp_global_set_log_report(1),再看看详细的日志输出。

xiaojianan commented 9 years ago

好的,等我深入研究一下再讨论该问题,非常感谢。

xiaojianan commented 9 years ago

抱歉,请问一下这个代码ijkmp_global_set_log_report(1)在哪设置呢,感谢(抱歉对这个不太了解)。

Zard1096 commented 9 years ago

可以用类方法setLogReport或者在FF控制器初始化时调用

xiaojianan commented 9 years ago

已经打开log,附上百度网盘下载: 只有IJKMEDIA的log:http://pan.baidu.com/s/1bnEZtHP 手机当时所有log:http://pan.baidu.com/s/1dD8jBZr 此log不含关闭视频。 打开视频时间点: 06-24 11:10:32.887: W/IJKMEDIA(23355): IjkMediaPlayer_setDataSourceAndHeaders 06-24 11:10:32.887: V/IJKMEDIA(23355): setDataSource: path http://cache.m.iqiyi.com/dc/dt/mobile/20150615/1c/62/40a9a1efd52ee2877affb97e564c137e.m3u8?qypid=373423000_22&qd_src=5be6a2fdfe4f4a1a8c7b08ee46a18887&qd_tm=1434677664000&qd_ip=121.41.110.6&qd_sc=1e3b408375539deb2dbf35d2f17ceb27&mbd=f0f6c3ee5709615310c0f053dc9c65f2_5.9_1

发生问题时间点: 06-24 11:11:00.824: D/IJKMEDIA(23355): ffp_toggle_buffering_l: start 06-24 11:11:00.825: W/IJKMEDIA(23355): FFP_MSG_BUFFERING_START: 06-24 11:11:00.826: I/tv.danmaku.ijk.media.player.IjkMediaPlayer(23355): Info (701,0) 06-24 11:11:00.827: D/tv.danmaku.ijk.media.widget.VideoView(23355): onInfo: (701, 0) 06-24 11:11:00.828: D/tv.danmaku.ijk.media.widget.VideoView(23355): onInfo: (MEDIA_INFO_BUFFERING_START)

IJKMEDIA log到这里卡住,手机中所有log后面还有一些内容,但是不知道和IJKMEDIA有没有关系。

目前测试来看是跟网络有关系,但是具体原因还请大神帮忙看一下,非常感谢,另外不知道还需不需要其他方面的信息需要我这边提供。

Android4MediaPlayer commented 9 years ago

@xiaojianan 能再次详细描述下你出现问题的情况么

xiaojianan commented 9 years ago

抱歉才看到,主要问题就是android播放m3u8格式视频有时会卡住,一直处于FFP_MSG_BUFFERING_START状态,无法恢复播放,但是网速肯定是有的,release后重新请求能够重新播放,log中也没办法分析出为什么,在google中搜了一下,也有人说播放m3u8视频会hang住,到现在也不知道怎么解决。另外如果使用android4.0以上自带的VideoView播放m3u8没遇到过卡住的问题,主要是不知道该怎么分析这个问题。@Android4MediaPlayer

Android4MediaPlayer commented 9 years ago

@xiaojianan 我测试是正常的,没出现卡顿,这是一个110分32秒的视频

garymabin commented 9 years ago

If you can recreate this problem easily, I suggest you capture the network packets while playing the file, maybe you can get more information.

xiaojianan commented 9 years ago

@Android4MediaPlayer 这个如果网络慢的话比较容易复现,我的感觉是请求m3u8分段视频某一段时网络出现问题,导致卡在缓冲上然后又无法重连,如果是播放mp4或者flv等其他格式视频都不会有这个问题。

zhangbl commented 9 years ago

@xiaojianan 你好,想问下这个问题你是怎么解决的?

q273255702 commented 9 years ago

@xiaojianan 你好 请问这个问题如何解决 我也发现会播放m3u8一会以后就会卡住很久 才能恢复播放,但是在加载中关闭 ,再次打开播放地址是可以播放的,怎么回事啊???

babyfish21 commented 8 years ago

我参照下面的网址对hls.c做了修改,貌似问题解决了,有相同问题的可以试试看 https://github.com/FFmpeg/FFmpeg/commit/9cb30f7a880578e995becbd8bf9ffb69788e09a2

XYRZX commented 7 years ago

我使用babyfish21 的方法,发现FFmpeg已经修复了,但是并没能解决问题,我遇到了和楼上同样的问题,同样是网络问题引起,然后就死活不放了,但是日志显示正在播放中,即便滑动进度条也是没有用的,只有重新播放才有效果,在小概率事件,还会调用视频播放完毕的通知方法,请问都2017年了,你们如何解决的?

chenzh2017 commented 3 years ago

我使用babyfish21 的方法,发现FFmpeg已经修复了,但是并没能解决问题,我遇到了和楼上同样的问题,同样是网络问题引起,然后就死活不放了,但是日志显示正在播放中,即便滑动进度条也是没有用的,只有重新播放才有效果,在小概率事件,还会调用视频播放完毕的通知方法,请问都2017年了,你们如何解决的?

碰到了相同的问题,你后来怎么解决的这个问题?

GordonChicago commented 3 years ago

相同的问题,用的是IjkMediaPlayer,实现了IMediaDataSource,在日志FFP_MSG_BUFFERING_START出会卡住,知道readAt执行很多次之后,才会FFP_MSG_BUFFERING_END开始播放~ 怎么解决的~

GordonChicago commented 3 years ago

有偿回报,是否有大佬可以分享一下经验~

GordonChicago commented 3 years ago

已经解决~~ 有相关问题的同学可一起探讨,微信acs1989

andylao62 commented 3 years ago

@

已经解决~~ 有相关问题的同学可一起探讨,微信acs1989

我是修改DEFAULT_MIN_FRAMES这个参数解决的,你是通过什么解决的,能分享吗?

tracyliu1 commented 2 years ago

已经解决~~ 有相关问题的同学可一起探讨,微信acs1989

微信搜不到啊 请教一下解决方式

Luffys6 commented 2 years ago

大佬们咋解决的

uni-cstar commented 2 years ago

请问是如何解决的。我也遇到了同样的问题,我有两台设备,通常的程序,我发现有台设备必然出现这个问题,有台设备确从来没有出现过。