zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    HTML的基本知识
    java script后续
    java script
    CSS
    DAY 33 进程理论与进程方法
    DAY 32 UDP协议、Socketserver模块,并发编程基础
    DAY 30 网络编程基础
    DAY 25多态、反射、异常处理
    DAY 24继承与组合
    DAY 23 面向对象(二)
  • 原文地址:https://www.cnblogs.com/mlj318/p/3068762.html
Copyright © 2011-2022 走看看