C++ 无法正确设置刻度中的x264个数字单位

C++ 无法正确设置刻度中的x264个数字单位,c++,c,video,h.264,x264,C++,C,Video,H.264,X264,当我使用x264 lib对yuv视频流进行编码时,我无法设置sps参数num_units_in_tick(I_num_units_in_tick in struct)。我将x264参数初始化为: x264_param_t* m_x264Param; if( x264_param_default_preset( m_x264Param, "superfast", "zerolatency" ) < 0 ) return -1;

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

    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;

但是,num_units_in_tick仍然是1,time_scale仍然是60。如何将num_units_in_tick设置为3000,这样一帧占用3000个时间戳单位。

实际上,vui_参数有一个字段速率,而不是帧速率

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


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

+1这是一个棘手的话题。x264-devel的讨论可能也很有趣:
    m_x264Param->i_timebase_den = 90000;
    m_x264Param->i_timebase_num = 3000;
    m_x264Param->i_fps_num = 60;
    m_x264Param->i_fps_den = 2;