0

这是我的代码

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 这是我第一次使用它我错过了一些关键参数吗?有谁能告诉我答案!非常感谢和最好的问候

4

2 回答 2

1

返回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并使用据称解释问题的诊断消息调用它。

于 2013-05-16T20:26:55.147 回答
0

不,我认为编码器打开不应该返回 null。请检查函数名称是否正确,我认为内部版本号通常包含在此函数中,x264_encoder_encode_130等等。如果您使用的是 dll,那么您必须正确链接它 - 我知道的不多,但只是 mah 2 cent yaw .

于 2013-05-16T19:25:06.930 回答