Libx264 将x264_编码器_编码输出写入文件并播放
我需要使用x264库对视频流进行编码,并将输出写入文件。这是我用来编码的代码Libx264 将x264_编码器_编码输出写入文件并播放,libx264,Libx264,我需要使用x264库对视频流进行编码,并将输出写入文件。这是我用来编码的代码 x264_param_t params; x264_param_default(¶ms); x264_param_default_preset(¶ms,"medium","zerolatency"); params.i_width = width; params.i_height = height; params.i_frame_reference = 1; params
x264_param_t params;
x264_param_default(¶ms);
x264_param_default_preset(¶ms,"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(¶ms,"baseline");
// Open encoder
encoder_ = x264_encoder_open(¶ms);
...
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打开H264输出文件,但出现以下错误:
处理输入时发现无效数据
谁能帮帮我我做错了什么?我看了一下下面的帖子,但对我没有帮助 我会在
x264参数默认值预设之后删除所有内容
params.i_width = width;
params.i_height = height;
并尝试使用类似MPlayer的播放器打开文件。如果可能,请与我们共享您转储的文件。把它放在dropbox或任何合适的地方。您不能将其附加到此处。我看不出有任何理由这不起作用。能否共享H264输出文件的副本?是否有方法在stackoverflow中附加文件?无论如何,我向前迈出了一步。在pFile=fopen(“h264输出”、“wb”);我将“wb”改为“ab”,错误在ffplay.exe中消失,但是ffplay视频显示绿色屏幕,而不是显示视频。有什么想法吗?并且OffPlay显示以下错误:[h264@03462a80]缺少参考图片,默认为00B f=0/0[h264@03462a80]解码片头错误[h264@022d74c0]mmco:unref短故障次数太多。我删除了一些参数,文件现在播放正常。谢谢你的帮助。