2012-02-01 2 views
2

Когда я использую x264 lib для кодирования видеопотока yuv, я не могу установить параметр sps num_units_in_tick (i_num_units_in_tick в struct). Я инициализировать 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 еще один, и time_scale еще 60. Как я могу установить num_units_in_tick 3000, так что один кадр занимает временную метку блока 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

Смежные вопросы