【问题标题】:Write x264_encoder_encode output to file and play it将 x264_encoder_encode 输出写入文件并播放
【发布时间】:2015-06-21 04:07:04
【问题描述】:

我需要使用 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 文件,但它给出了以下错误: 处理输入时发现无效数据。

有人可以帮助我我做错了什么吗?我看了下面的帖子,但它对我没有帮助。 write x264_encoder_encode output nals to h264 file

【问题讨论】:

  • 我看不出有任何原因这不起作用。你能分享一份 h264Output 文件的副本吗?
  • 有没有办法在stackoverflow中附加文件?无论如何,我向前迈了一步。在 pFile = fopen("h264Output", "wb");我将“wb”更改为“ab”,ffplay.exe 中的错误消失了,但是 ffplay 视频显示绿屏而不是显示视频。有什么想法吗?
  • 而ffplay显示如下错误:[h264@03462a80]缺少参考图片,默认为00B f=0/0 [h264@03462a80] decode_slice_header error [h264@022d74c0] mmco: unref short failure

标签: libx264


【解决方案1】:

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

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

并尝试使用 MPlayer 之类的播放器打开文件。如果可能的话,与我们分享您转​​储的文件。把它放在保管箱或任何合适的地方。您不能在此处附加它。

【讨论】:

  • 非常感谢。我删除了一些参数,文件现在可以正常播放了。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-19
  • 2018-08-07
  • 1970-01-01
  • 2013-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多