-
Notifications
You must be signed in to change notification settings - Fork 8.2k
ijkplayer播放rtmp直播流,延迟明显 #210
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
另外,开始打开操作到屏幕实际显示视频的延时,查找资料基本上集中在
} PC下的ffplay我增加如下代码修改这个阻塞时间,效果还是很明显的 ic->interrupt_callback.callback = decode_interrupt_cb; ic->interrupt_callback.opaque = is; //add 下面两行 ic->max_analyze_duration =1_1000_1000; av_log(NULL, AV_LOG_ERROR, "ic->max_analyze_duration %d.\n", ic->max_analyze_duration); err = avformat_open_input(&ic, is->filename, is->iformat, &ffp->format_opts); 但是ijkplayer我修改相同位置,却没有任何效果。 |
首先感谢作者贡献了这么好的项目! 1、rtmp直播流打开慢 2、关于播放延时的问题,因为ffplay默认的帧率控制没有追帧的策略,所以网络如果发生抖动,延时会累加。优化策略就是调整帧率控制部分。原则就是要在流畅度和实时性之间得到一个平衡。 |
感谢@tanhx2008 ,如果我想设置probsize的值,是这样吗? |
av_dict_set(&ffp->format_opts, "probesize", "4096", 0); |
如果按你的改法,就涉及到ffplay的代码修改了,我希望可以将接口暴露给调用VideoView的用户。 看了下代码,感觉是setAvFormatOption,你了解的这个接口吗? |
另外,@tanhx2008 第二部分追帧的策略,不是太明白,能详细的说明下吗? |
应用层用你的设法应该可以。 |
ijkMediaPlayer.setAvFormatOption("fflags", “nobuffer”); 下面两句是等效的 目前我自己的需求是优化高清点播的效率,而不是直播,所以有一套自己的 packet 缓存。
|
多谢 |
http://www.ffmpeg.org/doxygen/trunk/ffplay_8c-source.html 官方的ffplay.c 为什么ijkplayer是50000? @bbcallen |
如果预读的 packet 超过 MIN_FRAMES 个,那么 ffplay 就会停止预读。 更合理的预读实现正在考虑中。 |
增加了下面的额外设置参数 播放rtmp直播流,打开速度确实快了,3s左右;播放延时也能满意,<2s。 但有个问题,偶尔会存在,声音已经开始正常播放,播放窗口显示出来,但是黑屏,无法显示视频的情况。也没有接口告知错误的原因。这是什么原因呢?或者有什么办法通知应用层存在这个错误?让应用层尝试关闭后再次打开?@bbcallen |
日志贴出来看看。 |
老大setAvFormatOption("fflags","nobuffer");新版的ijkplayer这个接口没有了,怎么设置ffmpeg的参数啊,还有就是用nobuffer会黑屏,应该怎么做 |
setAvFormatOptio 新版的这个方法是不是没有暴漏出来啊 |
@walkermi 我碰到一次时开始播放有声音没视频,看log发现是analyzeduration不够。我把这个值调大了,但是打开速度慢了。这个可能跟服务器端的编码有关。你后来是怎么处理的? |
@tanhx2008 可以留个联系方式, 请教一下rtmp的延迟问题, 我QQ号2359617622 |
@tanhx2008 没有声音的日志, 问题应该是探测时间不够, 没有拿到正确的yuv格式, 导致VideoToolBox创建失败. 1463827211.318063 avformat_find_stream_info begin 2016-05-21 18:40:12.241 JCLiveApp[6427:2408487] FFP_MSG_VIDEO_SIZE_CHANGED: 414, 736 |
ijkMediaPlayer.setAvFormatOption() 方法 在tv.danmaku.ijk.media.player.IjkMediaPlayer 里面没有这个方法啊,怎么搞,里面使用的版本不一样? |
@tanhx2008 tan rtmp延迟问题怎么处理针对264+aac的rtmp,能说一下 你是怎么优化的吗?谢谢 |
@bbcallen 请问一下用demo的ijkVideoView进行播放,发现每次进入的时候会有几百毫秒左右的黑屏出现,之后才是正常的视频图像,请问这个是什么原因造成的? |
@xsfgdut it appears if you use hardware decoding (option "media-codec") |
关于累计延迟的问题,追帧或者丢帧策略有什么办法么? |
1 similar comment
关于累计延迟的问题,追帧或者丢帧策略有什么办法么? |
同楼上:关于累计延迟的问题,追帧或者丢帧策略有什么办法么? |
Android上使用master或stable分支的代码,编译后的demo播放rtmp直播流,从打开操作到屏幕显示活动视频,测试差不多需要8s左右,有时更长。
视频打开后,对比实际活动,播放延迟要明显滞后超过5s以上。
在PC端测试原版ffplay,也有类似现象,但如果加入如下参数,则播放延迟会明显减低至2s以内。
ffplay -fflags nobuffer -i rtmp://dev:1935//live/livestream
请问如果ijkplayer要增加该参数,要如何操作呢?
我尝试在ijkplayer/android/ijkmediawidget/src/tv/danmaku/ijk/media/widget/VideoView.java这个文件中增加
ijkMediaPlayer.setOverlayFormat(AvFourCC.SDL_FCC_RV32);
ijkMediaPlayer.setAvFormatOption("fflags", “nobuffer”); // add
ijkMediaPlayer.setAvCodecOption("skip_loop_filter", "48");
ijkMediaPlayer.setFrameDrop(12);
貌似没有任何效果
The text was updated successfully, but these errors were encountered: