2

FFMPEG と x264 を使用してビデオをエンコードするのに苦労しています。Quicktime で再生すると出力が途切れますが、VLC では、Quicktime が途切れるのと同じ場所に多くの圧縮アーティファクトが表示されます。そのため、破損/アーティファクトを抑制しようとしているため、Quicktime が吃音しているように見えます。

ビデオには、ピクセルの 75% がランダムな間隔で変化するフレームなど、多くのランダムな動きがあります (ビデオはソフトウェアで生成されるため、真に疑似ランダムです)。「シーンカット」を誤って検出する可能性が高いこれらの場所では、圧縮が窒息しているようです. また、キーフレームを実行していると思われる定期的な間隔でチョークしているようです。

FFMPEG に付属している x264-hq プリセットに基づいてエンコード プリセットを作成しました。シーン カット検出をオフにして、keyint/gおよびkeyint_minオプションをいじってみました。1 に設定gすると機能しますが、ファイルサイズが大きくなります。ロスレス プリセットを試してみましたが、Quicktime でまったく再生されません。奇妙なことに、低解像度のテスト ビデオ (1440x810) を使用しても問題は発生しませんでした。

これは私が現在持っているプリセットです。これは機能しますが、(機能していない) hq プリセットよりも約 60% 大きいファイルが生成されます。これを改善する方法はありますか?ファイルサイズはそれほど重要ではありません。どこでも再生でき、非常に高品質なものが欲しいだけです。

コーダー=1
flags=+ループ
cmp=+クロマ
パーティション=+parti8x8+parti4x4+partp8x8+partp4x4+partb8x8
me_method=ええと
subq=8
me_range=16
g=1
keyint_min=1
sc_threshold=0
i_qfactor=0.71
b_strategy=1crf=20
qcomp=0.6
qmin=20
qmax=51
qdiff=4
bf=16
参照=4
トレリス=1
flags2=+dct8x8+wpred+bpyramid+mixed_refs
wpredp=2

コマンドは次のとおりです。

ffmpeg\
  -r 60 -i "frame-%06d.tiff" \
  -vcodec libx264 -vpre my_preset \
  -スレッド 0 \
  -r 60 -an -f out.mp4
4

1 に答える 1

2

可能であればマルチパス エンコーディングを使用してください。これにより、H264 がシーンの変化を検出して準備する機会が得られます。

なぜsc_thresholdゼロに設定するのですか?

瞬間的なビットレートがストレージ デバイス (ネットワークを含む) の転送速度を超えると、スタッターが発生する可能性があります。1080p コンテンツは、10mbit/秒未満で簡単にエンコードできます。

于 2011-12-02T20:53:41.910 に答える