【问题标题】:How to reduce latency when streaming x264流式传输 x264 时如何减少延迟
【发布时间】:2013-12-01 20:08:26
【问题描述】:

我想制作一个zerolatency 实时视频流,并在 VLC 播放器中以尽可能少的延迟播放。

这是我目前使用的设置:

x264_param_default_preset( &m_Params, "veryfast", "zerolatency" );

m_Params.i_threads              =   2;
m_Params.b_sliced_threads       =   true;
m_Params.i_width                =   m_SourceWidth;
m_Params.i_height               =   m_SourceHeight;

m_Params.b_intra_refresh        =   1;

m_Params.b_vfr_input            =   true;
m_Params.i_timebase_num         =   1;
m_Params.i_timebase_den         =   1000;

m_Params.i_fps_num              =   1;
m_Params.i_fps_den              =   60;

m_Params.rc.i_vbv_max_bitrate   =   512;
m_Params.rc.i_vbv_buffer_size   =   256;
m_Params.rc.f_vbv_buffer_init   =   1.1f;

m_Params.rc.i_rc_method         =   X264_RC_CRF;
m_Params.rc.f_rf_constant       =   24;
m_Params.rc.f_rf_constant_max   =   35;

m_Params.b_annexb               =   0;
m_Params.b_repeat_headers       =   0;
m_Params.b_aud                  =   0;

x264_param_apply_profile( &m_Params, "high" );

使用这些设置,我遇到了以下问题:

  • VLC 显示很多丢失的帧(参见屏幕截图,“verloren”)。我不确定这是否是个问题。
  • 如果我在 VLC 中为网络流延迟设置一个
  • 如果我在 VLC 中为网络流延迟设置一个 >= 200 毫秒的值,到目前为止一切看起来都不错,但延迟显然是 200 毫秒,这太高了。

问题: 我应该使用哪些设置(x264lib 和 VLC)以尽可能少地进行编码和流式传输?

【问题讨论】:

    标签: c++ video vlc x264 libx264


    【解决方案1】:

    在您的 x264 设置中:许多是多余的,即已包含在“零延迟”中。但是,据我所知,您的编码延迟仍然为零帧,即您放入一帧,然后立即(无论如何,只要您的 CPU 完成编码)就取出一帧。它从不等待较新的帧以提供编码的较旧帧(例如,它与前瞻的方式)。

    关于为什么 vlc 会暂停,除非你给它一个很大的网络延迟:问题是你在编码时的速率控制和 vbv 设置的组合并不理想。您想要为低延迟编码做的是使用 CBR,并将 VBV 缓冲区设置为一帧的大小。如果您查看 x264 源代码,这将启用特殊的 VBV 计算。

    您也可以尝试不设置任何与时间相关的内容(无 fps,无 vbv),并使用零延迟的 CRF。结果将取决于视频打包在哪个容器中进行流式传输。

    阅读本文了解更多信息:http://x264dev.multimedia.cx/archives/249

    【讨论】:

      【解决方案2】:

      如果你想要尽可能快的编码,那么删除之后的所有内容

      x264_param_default_preset( &m_Params, "veryfast", "zerolatency" );
      

      然后将非常快更改为超快。剩下的就是因为网络延迟+解码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-20
        • 2016-09-27
        • 2012-02-25
        • 2014-06-12
        • 2012-08-10
        • 2018-10-08
        • 2019-09-29
        • 2016-10-04
        相关资源
        最近更新 更多