降低FFmpeg的编码延时

   之前用FFmpeg的H264编码器发现编码出来的视频延时很大,在解码器一端优化各种可能产生延时的地方之后,延时还是有一秒,上网一查发现很多人遇到相同的问题,不过好在看到一个帖子给出了这个问题的解决方法。

   原来,FFmpeg的H264编码器为了提高编码的图像质量,默认会缓冲多帧图像,这个缓冲帧数跟GOP大小有关。我程序设置GOP等于100,结果缓冲了20多帧。为了降低编码延时,可以添加-preset:v ultrafast和-tune:v zerolatency两个选项,例如下面的   FFmpeg命令行采集摄像头的图像用H264编码并推流到一个服务器地址:

ffmpeg -f dshow -i video="USB Camera" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f rtp rtp://233.233.233.223:6666>test.sdp  

preset可设置的等级可分为:

ultrafast,superfast, veryfast, faster, fast, medium, slow, slower, veryslow

其中ultrafast编码速度最快。

一般发送网络流都需要增加这两个参数,否则播放图像的延时很大。

 如果用代码,可以这样设置:

 /**
 * ultrafast,superfast, veryfast, faster, fast, medium
 * slow, slower, veryslow, placebo. 
 */
AVDictionary *param = 0;
av_dict_set(&param, "preset", "fast", 0); // av_opt_set(pCodecCtx->priv_data,"preset","fast",0);
av_dict_set(&param, "tune", "zerolatency", 0);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值