web-dev-qa-db-ja.com

ffmpegを使用して高品質のビデオをエンコードする

ディレクトリに画像として保存されたビデオフレームのセットがあり、これらを高品質のビデオにエンコードしようとしていますが、私が試みるすべての設定とフォーマットは非常に顕著なアーティファクトを生成します。

基本的なコマンドは次のとおりです。

ffmpeg -r 25 -i %4d.png myvideo.mpg

そして、minrateフラグとmaxrateフラグを試しました。 {mpg、avi、mov、flv}形式のいずれでも可能です。

設定に関する提案はありますか?最終的なファイルサイズは問題ではありません。

88
CakeMaster

いくつかのこと:

  • ビデオのビットレートを設定する必要があります。 minrateとmaxrateを使用したことがないため、どのように機能するかはわかりませんが、-bスイッチを使用してビットレートを設定すると、高品質のビデオを取得できます。圧縮とビデオ品質の間の良いトレードオフを提供するビットレートを考え出す必要があります。ビデオのコンテンツのフレームサイズ、フレームレート、モーション量にすべて依存するため、これを試してみる必要があります。 DVDは720x480で平均4〜5 Mbit/sになる傾向があるので、通常はそこから始めて、必要かどうかを判断してから実験するだけです。たとえば、-b 5000kをコマンドラインに追加して、DVDビデオのビットレートを増減できます。

  • ビデオコーデックを指定する必要があります。そうしないと、ffmpegのデフォルトはMPEG-1になりますが、これは非常に古く、MPEG-4またはH.264ほどの圧縮量を提供しません。 ffmpegバージョンがlibx264サポートを使用して構築されている場合、コマンドラインの一部として-vcodec libx264を指定できます。それ以外の場合、-vcodec mpeg4もMPEG-1よりも優れた仕事をしますが、x264ほどではありません。

  • 最低のビットレートで最高の品質を引き出すのに役立つ他の多くの高度なオプションがあります。いくつかの例については、 こちら をご覧ください。

61
Jason B

ビデオのビットレートを上げるには-vbオプションを指定する必要があります。指定しない場合、デフォルトではビデオは小さくなりますが、アーティファクトが多くなります。

次のようなものを試してください:

ffmpeg -r 25 -i %4d.png -vb 20M myvideo.mpg

39
jeff7

ビデオを作成する前に、PNGが完全に不透明であることを確認してください

例えばimagemagickを使用して、背景を黒にします。

convert 0.png -background black -flatten +Matte 0_opaque.png

私のテストでは、透明性のあるffmpeg PNGをフィードする場合、ビットレートやコーデックはビデオをきれいに見せるために十分ではありません

14
Oran Fry

何らかの後処理を行わない限り、ビデオは元のフレームよりも良くなることはありません。また、パラパラ漫画のように、キーフレーム間に大きな「ジャンプ」がある場合、それはおかしく見えます。通常、スムーズなアニメーションを実現するには、キーフレーム間に十分な「トゥイーン」が必要です。 HTH

0
JustBoo