C++ 无法正确设置刻度中的x264个数字单位
当我使用x264 lib对yuv视频流进行编码时,我无法设置sps参数num_units_in_tick(I_num_units_in_tick in struct)。我将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_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;