簡體   English   中英

如何使用x264實現2遍編碼?

[英]How to achieve 2 pass encoding using x264?

x264_param_t結構中是否有參數,還是必須兩次將幀發送到x264 dll? 因為我只使用encoder_encode函數,並且返回nal單位。 我想這應該是一個參數的組合,並兩次使用encoder_encode。

這是我初始化參數並鏈接到libx264的方法

    InitializeSettings(){
    x264_param_default_preset(&m_pXParam, "medium", "zerolatency");
    x264_param_apply_profile(&m_pXParam, "baseline");
    m_pXParam.i_width = cx;
    m_pXParam.i_height = cy;
    m_pXParam.i_fps_num = fps;
    m_pXParam.i_fps_den = 1;
    // rate control
    m_pXParam.i_keyint_max = fps - 5;
    //m_pXParam.rc.f_rf_constant_max = fps + 5;
    // rate control
    m_pXParam.rc.i_qp_constant=18;
    m_pXParam.rc.i_qp_min=18;
    m_pXParam.rc.i_qp_max=18;}

    x264_picture_alloc(&m_xPicture, X264_CSP_I420 , m_pXParam.i_width, m_pXParam.i_height);
    m_xPicture.img = x264img;
    m_iframe_size = x264_encoder_encode(m_xEncoder, &m_xNals, &m_iNal, &m_xPicture, &m_xPictureOut);  

@ nobody555謝謝! 我還有一個關於x264_param_apply_fastfirstpass函數的問題:

/* x264_param_apply_fastfirstpass:
 *      If first-pass mode is set (rc.b_stat_read == 0, rc.b_stat_write == 1),
 *      modify the encoder settings to disable options generally not useful on
 *      the first pass. */

他們在談論什么選擇?

要進行2pass編碼,您將需要將所有視頻兩次通過libx264。 第一次使用param.rc.b_stat_write = 1,第二次使用param.rc.b_stat_read =1。如果您不想使用默認值,也可以指定統計文件名param.rc.psz_stat_out / param.rc.psz_stat_in。 “ x264_2pass.log”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM