x264编解码结果用暴风音影播放是提示无效文件,怎么办?

美丽海洋 2011-08-03 10:26:39
如题:希望做过这方面的能给说说 谢谢顶贴者
源码如下:
参数设置:
x264_param_default( &m_x264_param_t );

m_x264_param_t.i_csp = X264_CSP_I420;
m_x264_param_t.rc.psz_stat_out = (char*)malloc (MAX_PATH);
m_x264_param_t.rc.psz_stat_in = (char*)malloc (MAX_PATH);
m_x264_param_t.i_threads = 1;
m_x264_param_t.analyse.i_noise_reduction = 0;

m_x264_param_t.i_log_level = X264_LOG_NONE;
m_x264_param_t.p_log_private = NULL;

m_x264_param_t.analyse.b_psnr = 0;


m_x264_param_t.i_width = w;
m_x264_param_t.i_height= h;

m_x264_param_t.i_fps_num = 10;
m_x264_param_t.i_fps_den = 1;
m_x264_param_t.i_frame_total = 0;

m_x264_param_t.i_frame_reference = 1;
m_x264_param_t.i_bframe = 0;
m_x264_param_t.i_keyint_min = 25;
m_x264_param_t.i_keyint_max = 250;
m_x264_param_t.i_scenecut_threshold = 40;

m_x264_param_t.b_deblocking_filter = 0;
m_x264_param_t.b_cabac = 0;
m_x264_param_t.analyse.i_trellis = 0;

m_x264_param_t.analyse.b_chroma_me = 1;

m_x264_param_t.rc.i_qp_min = 10;//20;
m_x264_param_t.rc.i_qp_max = 32;
m_x264_param_t.rc.i_qp_step = 4;
m_x264_param_t.rc.f_ip_factor = 1.4;
m_x264_param_t.rc.f_pb_factor = 1.3;
m_x264_param_t.rc.f_qcompress = 1.0;
m_x264_param_t.rc.i_bitrate = 0;
m_x264_param_t.rc.i_rc_method = X264_RC_CQP;

m_x264_param_t.i_bframe = 2;
m_x264_param_t.analyse.b_weighted_bipred = 0;
m_x264_param_t.b_bframe_pyramid = 0;
m_x264_param_t.b_bframe_adaptive = 0;
m_x264_param_t.analyse.b_bidir_me = 0;
m_x264_param_t.i_bframe_bias = 0;

m_x264_param_t.analyse.i_subpel_refine = 3;
m_x264_param_t.analyse.i_me_method = X264_ME_DIA;//X264_ME_HEX?X264_ME_DIA
m_x264_param_t.analyse.i_me_range = 16;
m_x264_param_t.analyse.i_direct_mv_pred = X264_DIRECT_PRED_TEMPORAL;
m_x264_param_t.i_deblocking_filter_alphac0 = 0;
m_x264_param_t.i_deblocking_filter_beta = 0;
m_x264_param_t.analyse.intra = X264_ANALYSE_I4x4;// 帧内预测模式
m_x264_param_t.analyse.inter = X264_ANALYSE_I4x4 | X264_ANALYSE_PSUB16x16 | X264_ANALYSE_BSUB16x16; // 帧间预测模式
m_x264_param_t.analyse.b_transform_8x8 = 1;

m_x264_param_t.vui.i_sar_width = 0;
m_x264_param_t.vui.i_sar_height = 0;



m_px264_t = x264_encoder_open( &m_x264_param_t );

memset( &m_x264Picture_t, 0, sizeof( x264_picture_t ) );

x264_picture_alloc( &m_x264Picture_t, m_x264_param_t.i_csp, m_x264_param_t.i_width, m_x264_param_t.i_height );


if (m_px264_t == NULL)
return false;
return true;

编码代码如下:
BOOL CMyX264Encode::X264Encode(BYTE* pInData, int nLen, BYTE* pOutBuf, int& nOutLen, int& nKeyFrame)
{
if(nLen != m_x264_param_t.i_width * m_x264_param_t.i_height * 3/2)
{
return FALSE;
}

m_x264_param_t.i_frame_total ++;
//memset(&m_x264Picture_t,0x00,sizeof(x264_picture_t));

memcpy(m_x264Picture_t.img.plane[0], pInData, m_x264_param_t.i_width * m_x264_param_t.i_height);
memcpy(m_x264Picture_t.img.plane[1], pInData + m_x264_param_t.i_width * m_x264_param_t.i_height, m_x264_param_t.i_width * m_x264_param_t.i_height / 4);
memcpy(m_x264Picture_t.img.plane[2], pInData + m_x264_param_t.i_width * m_x264_param_t.i_height * 5 / 4, m_x264_param_t.i_width * m_x264_param_t.i_height / 4);

m_x264Picture_t.i_pts = (int64_t)m_x264_param_t.i_frame_total * m_x264_param_t.i_fps_den;

x264_picture_t pic_out;
x264_nal_t *nal = NULL;
int i_nal = 0;

if( &m_x264Picture_t )
{
m_x264Picture_t.i_type = X264_TYPE_AUTO;
m_x264Picture_t.i_qpplus1 = 0;
}

//TraceTime("x264_encoder_encode begin");

if( x264_encoder_encode( m_px264_t, &nal, &i_nal, &m_x264Picture_t, &pic_out ) < 0 )
{
return FALSE;
}

//TraceTime("x264_encoder_encode end");
nOutLen = 0;
int nOutCanUse;// = DATA_MAX;

for( int i = 0; i < i_nal; i++ )
{
int i_size = 0;
nOutCanUse = DATA_MAX;

if( ( i_size = x264_nal_encode( pOutBuf + nOutLen, &nOutCanUse, 1, &nal[i] ) ) > 0 )
{
nOutLen += i_size;
//nOutCanUse -= i_size;
}
}

nKeyFrame = pic_out.i_type==X264_TYPE_IDR;// || (pic_out.i_type==X264_TYPE_I && coCfg->x264_max_ref_frames==1);

return TRUE;
}

...全文
515 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
郭衍清 2013-10-09
  • 打赏
  • 举报
回复
同求?楼主是怎么解决的
美丽海洋 2011-08-05
  • 打赏
  • 举报
回复
大侠们 只要问题解决不是问题,只要大家给解决问题那就ok,
大侠们露个面,冒个泡吗
美丽海洋 2011-08-04
  • 打赏
  • 举报
回复
我再顶起,希望大家给出宝贵意见
美丽海洋 2011-08-03
  • 打赏
  • 举报
回复
自己先顶一下
以前都是可以有图像 ,我是文件根本就是无效在怎么办?
大侠们:
ndy_w 2011-08-03
  • 打赏
  • 举报
回复
不懂。不过文件中不只是视频流吧?在头上应该有描述文件格式或编码方式的。

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧