2013-05-16 60 views
0

是否有一個參數在x264_param_t結構 或者我必須發送幀到x264 dll兩次..? 因爲我只是使用encoder_encode函數並返回nal單位。 林猜測它應該是一個參數的組合,並使用encoder_encode兩次。如何使用x264實現2遍編碼?

這是我如何初始化PARAMS並鏈接到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. */ 

他們在討論什麼選項?

回答

1

要做2pass編碼,您需要將所有視頻通過libx264兩次。第一次傳遞param.rc.b_stat_write = 1,第二次傳遞param.rc.b_stat_read = 1.如果你不想使用默認值的話,你也可以指定stats文件名param.rc.psz_stat_out/param.rc.psz_stat_in 「x264_2pass.log」。

+0

和2通有什麼關係?使用你想要的版本。如果您想在構建程序時使用較新的版本鏈接到較新的庫。 – av501