2012-02-01 182 views
2

當我使用x264 lib編碼yuv視頻流時,我無法設置sps參數num_units_in_tick(i_num_units_in_tick在結構中)。我初始化爲x264_param_t:x264 num_units_in_tick無法正確設置

x264_param_t*      m_x264Param; 

    if(x264_param_default_preset(m_x264Param, "superfast", "zerolatency") < 0) 
    return -1; 

    x264_param_apply_fastfirstpass(m_x264Param); 

    /* Apply profile restrictions. */ 
    //baseline 
    if(x264_param_apply_profile(m_x264Param, "baseline") < 0) 
     return -1; 

的i_rc_method設置爲1。我設置它決定num_units_in_tick的參數,然後調用x264_encoder_open得到x264_t。

m_x264Param->i_timebase_den = 90000; 
    m_x264Param->i_timebase_num = 3000; 
    m_x264Param->i_fps_num = 60; 
    m_x264Param->i_fps_den = 2; 

但是,num_units_in_tick仍爲1,和time_scale仍然60.我怎樣才能設置num_units_in_tick至300​​0,因此一幀中佔有3000時間戳單元。

回答

2

實際上,vui_parameters有一個FIELD率,而不是幀率。

這可能是您的框架基於i_fps_num而不是i_timebase_den。看看你的FPS設置爲90000/3000是否符合你的要求。這4個值是數值糾纏的,只能用兩個數字來指定。另外,如果你的框架正在簡化你的分數,那你完全不合算。

+2

+1這是一個棘手的話題。另外感興趣的可能是來自x264-devel的這個討論:http://mailman.videolan.org/pipermail/x264-devel/2005-September/000985.html – mevatron 2012-05-11 16:56:43