2013-04-17 100 views
0

这是我的代码x264_encoder_open总是返回null

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

不,我认为编码器打开不应该返回null。请chekc如果功能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和朋友添加日志回调,并将它与诊断信息按说解释的问题调用。