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 出力ファイルを h264 ファイルに書き込みます

4

1 に答える 1

1

x264_param_default_presetafterを除くすべてを削除します

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

MPlayer などのプレーヤーでファイルを開こうとします。可能であれば、ダンプしたファイルを私たちと共有してください。ドロップボックスまたは適切な場所に置きます。ここでは添付できません。

于 2013-10-11T11:12:34.803 に答える