libx264 - 将x264_encoder_encode输出写入文件并播放

  显示原文与译文双语对照的内容
0 0

我需要使用x264库编码视频流并将输出写入文件。 下面是我用来编码的代码。


x264_param_t params;
x264_param_default(&params);
x264_param_default_preset(&params,"medium","zerolatency");

params.i_width = width;
params.i_height = height;
params.i_frame_reference = 1;
params.rc.i_rc_method = X264_RC_CRF;//X264_RC_ABR;
params.rc.f_vbv_buffer_init = 0;
params.rc.f_rf_constant = 25;
params.rc.f_rf_constant_max = 35;
params.rc.f_rate_tolerance = 0.1;
params.rc.b_stat_write = 0;
params.i_threads = 1;//0 is auto!!
params.b_sliced_threads = 0;
params.rc.i_lookahead = 0;
params.i_sync_lookahead = 0;
params.i_bframe = 0;
params.b_annexb = 1; 
params.b_repeat_headers = 1;
params.i_fps_den = 1;
params.b_intra_refresh = 1;
params.vui.i_chroma_loc = 0;
params.i_scenecut_threshold = 0;
params.analyse.i_subpel_refine = 6; 

x264_param_apply_profile(&params,"baseline");

//Open encoder
encoder_ = x264_encoder_open(&params);

...

x264_picture_alloc(&pic_, X264_CSP_I420, width, height);

int size = x264_encoder_encode(encoder_, &nals_, &numNals_, &pic_, &picOut_); 

FILE* pFile = NULL;
pFile = fopen("h264Output","wb");

fwrite( nals_[0].p_payload, size, 1, pFile );
fclose (pFile);

x264_picture_clean(&pic_);

之后,我尝试用 ffPlay.exe 打开h264Output文件,但它给出了以下错误: 处理输入时发现无效数据。

谁能帮助我,我在做什么? 我看了一下下面的文章,但并没有帮助我。 将x264_encoder_encode输出nals写入h264文件文件。

时间: 原作者:

0 0

我将删除 x264_param_default_preset 之后的所有内容,除了


params.i_width = width;
params.i_height = height;

试着用MPlayer这样的播放器打开你的文件。 如果可能,与我们共享你的转储文件。 放在dropbox或者任何合适的地方。 你不能在这里贴上。

原作者:
...