x264_encoder_open всегда возвращает ноль

это мой код

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);

но он всегда возвращает ноль, это мой первый раз, я пропустил какой-то ключевой параметр? Кто-нибудь, кто может сказать мне ответ! большое спасибо и наилучшие пожелания

0

Решение

Нет, я думаю, что открытый кодер не должен возвращать ноль. пожалуйста, проверьте, если функция naem верна, я думаю, что номер сборки обычно включен в эту функцию
как x264_encoder_encode_130 и т. д.
также, если вы используете DLL, то вы должны правильно связать его —
Я не знаю много, но просто мах 2 цента рыскать.

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 и друзья и вызвали его с диагностическими сообщениями, якобы объясняющими проблемы.

0

По вопросам рекламы [email protected]