4

次の設定で、x264 を使用して Web カメラからのビデオ ストリームを圧縮しています。

x264_param_default_preset(&param, "veryfast", "zerolatency");

param.i_threads = 1;
param.i_fps_den = 1;
param.b_annexb = 1;

param.i_keyint_max = 30;
param.rc.i_rc_method = X264_RC_CRF;
param.rc.f_rf_constant = 25;
param.rc.f_rf_constant_max = 35;

param.b_repeat_headers = 1;
x264_param_apply_profile(&param, "baseline");

param.i_slice_max_size = X264_NAL_MAX_SIZE;

NAL を MTU サイズに合わせたいのですが、最大サイズを小さく設定すると、ストリームが台無しになります。黒と白の間でランダムに点滅し、背景に元の画像の手がかりがいくつかあります。max_size が大きいほど、ストリームが台無しになる可能性は低くなります。私の質問は、小さな NALU と正しいビデオ ストリームを使用できるかどうかです。

UPD: FFmpeg をデコーダーとして使用しています。

4

1 に答える 1

3

問題は実際には x264 にはありませんでした。私は x264 が問題ないと仮定し、他のすべてのパイプラインをチェックしました。問題は、ネットワーク経由で NAL を単独で avcodec デコーダーに送信していたことでした。これは、まさにデコーダーが処理できないものです (説明)。それを理解するのにしばらく時間がかかりました。

同じフレームから派生した元のグループにNALユニットを再構成すると、問題はなくなりました。これは、小さな NAL と多くの動きの組み合わせで問題がより簡単に再現された理由も説明しています。これは、avcodec が適切にデコードできなかった多くの単一の NAL を生成しました。

于 2014-03-25T20:03:08.380 に答える