2

当我使用 x264 lib 编码 yuv 视频流时,我无法设置 sps 参数 num_units_in_tick(i_num_units_in_tick in struct)。我将 x264_param_t 初始化为:

    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 设置为 3000,所以一帧占用 3000 个时间戳单元。

4

1 回答 1

2

实际上,vui_parameters 具有 FIELD 速率,而不是帧速率。

可能是您的框架基于 i_fps_num 而不是 i_timebase_den。查看将 FPS 设置为 90000/3000 是否符合您的要求。这 4 个值是数字纠缠的,只能用两个数字指定。

此外,如果您的框架正在简化您的分数,那么您完全不走运。

于 2012-05-02T22:22:22.023 回答