ffmpeg硬解码延迟_ffmpeg,264编码,得到码流有延迟。实时编码

ret = avcodec_encode_video2(c, &pkt, frame, &got_output); 编码开始后,等过了30多帧才会得到码流,got_output才有输出,之后就是每编码一帧都有输出。

导致接收端解码延迟了好几秒。

办法:

Low Latency

libx264 offers a -tune zerolatency option. See the StreamingGuide.

http://ffmpeg.org/trac/ffmpeg/wiki/x264EncodingGuide

http://ffmpeg.org/trac/ffmpeg/wiki/StreamingGuide

AVCodecContext *c 如此设置即可  av_opt_set(c->priv_data, "tune", "zerolatency", 0);

20140529,今天再次碰到编码延迟了15帧

if ((ret = avcodec_encode_video2(enc_ctx, &out_pkt,frame,&got_packet)) < 0)//out_pkt.data必须初始化为NULL,才能由编码器分配空间.用户分配则必须足够大

{

//av_log(NULL, AV_LOG_ERROR, "Error encoding video frame: %s\n", av_err2str(ret));

return false;

}

if (got_packet)

{}

第一帧开始ret返回的是0,说明编码成功,但是got_packet为0 ,没有码流输出,延迟了15帧之后才有输出。

解决办法 :av_opt_set(enc_ctx->priv_data, "tune", "zerolatency", 0);

原理参考:http://blog.sina.com.cn/s/blog_51396f890102f084.html

http://x264-settings.wikispaces.com/x264_Encoding_Suggestions

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值