bilibili / ijkplayer

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

play rtsp stream 流的问题 #2474

Open chinaminiren opened 7 years ago

chinaminiren commented 7 years ago

if CONFIG_RTSP_DEMUXER || CONFIG_MMSH_PROTOCOL

if (is->paused && (!strcmp(ic->iformat->name, "rtsp") || (ic->pb && !strncmp(ffp->input_filename, "mmsh:", 5)))) { / wait 10 ms to avoid trying to get another packet / / XXX: horrible / SDL_Delay(10); continue; }

endif

当我配置可以播放rtsp 流后 会出现 走到上述代码,出现死循环,因为paused == 1

zhy060307 commented 7 years ago

请问下,你是如何配置播放rtsp

fengbenpaao commented 7 years ago

你编译的参数设置根本就没全, 我这边编译出来之后,很流畅, 这个延时直接改为 5都没有问题

zhy060307 commented 7 years ago

@fengbenpaao 你编译的参数是怎么设置的,如何支撑rtsp协议

chinaminiren commented 7 years ago

@fengbenpaao

你编译的参数设置根本就没全, 我这边编译出来之后,很流畅, 这个延时直接改为 5都没有问题

并非是因为参数的问题,是因为ijkplayer 的bug ffplay_video_thread线程获取 ffp_toggle_buffering 队列的的时候如果为空 则设置is->paused==1 然而 读数据线程正好 开始判断条件 导致直接陷入死循环

chinaminiren commented 7 years ago

@fengbenpaao 我感觉加上这个判断 是有问题的 代码中的条件是 1、当暂停的时候 2、如果是rtsp流(这里忽略mmsh) 结果是 不再向下执行代码 停止读取数据?这样感觉严重不符合逻辑??

itsMelo commented 7 years ago

@chinaminiren @zhy060307 rtsp 播放越久 延时越高。。。这怎么解决啊

fengbenpaao commented 7 years ago

@itsMelo 我也遇到这个问题了,播放越久延时越长; 之前我设置: mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "probsize", "1024"); mediaPlayer.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "analyzeduration", "500000"); 可以缩短播放时间;

但是发现播放一段时间时候,延时越来越大, 不知道如何入手,是不是清楚缓存可以达到目的? 在哪里清除呢? 我退出,再进入,延时又消失了.

suzeyinhappyboy commented 6 years ago

@chinaminiren ijk的这个bug怎么修复,确实播放rtsp流seek会卡住

WernerLuo commented 6 years ago

@fengbenpaao @itsMelo 播放越久延时越长,请问这个问题解决了吗?我播放rtsp也遇到这个问题。用vlc发现也有这样的问题