这是我的代码
x264_param_default(& m_X264Param);
nRet = x264_param_default_preset(&m_X264Param,"medium","zerolatency") ;
if (nRet)
{
return -1;
}
if (cpMain == Param.nProfile)
{
nRet = x264_param_apply_profile(&m_X264Param,"main") ;
}
else if (cpSimple == Param.nProfile)
{
nRet = x264_param_apply_profile(&m_X264Param,"baseline") ;
}
else if (cpComplex == Param.nProfile)
{
nRet = x264_param_apply_profile(&m_X264Param,"high");
}
if (nRet)
{
return -1;
}
m_X264Param.i_width = Param.nWidth ;
m_X264Param.i_height = Param.nHeight ;
m_X264Param.i_threads = X264_THREADS_AUTO ;
m_X264Param.i_log_level = X264_LOG_NONE ;
m_X264Param.rc.i_bitrate = Param.nBitRate ;
m_X264Param.rc.i_rc_method = X264_RC_ABR ;
m_X264Param.i_csp = X264_CSP_I420 ;
m_pX264Handle = x264_encoder_open(& m_X264Param);
但它总是返回null它是我第一次使用它我错过了一些关键的参数吗?是谁能告诉我答案的人!非常感谢和最好的问候
答案 0 :(得分:0)
不,我认为编码器打开不应该返回null。请chekc如果函数naem是正确的,我认为内部版本号通常包含在这个函数中 比如x264_encoder_encode_130等 如果你使用的是dll,那么你必须正确地链接它 - 我不知道多少但只是偏差2美分。
答案 1 :(得分:0)
返回NULL
只不过是参数参数或环境中的错误迹象。
只是一个例子:
x264_t *x264_encoder_open( x264_param_t *param )
{
// ...
if( x264_threading_init() )
{
x264_log( h, X264_LOG_ERROR, "unable to initialize threading\n" );
goto fail;
}
// ...
fail:
x264_free( h );
return NULL;
}
通过m_X264Param.pf_log
和朋友添加日志记录回调,并使用可能解释问题的诊断消息进行调用。