web-dev-qa-db-ja.com

ffmpegを使用してaviからgifを生成する方法は?

次のコマンドを使用して、ビデオの一部をアニメーションGIFに抽出しようとしています。

ffmpeg -i video.avi -t 5 out.gif

アニメーションgifを生成しますが、品質は非常に優れています。ただし、次を使用してgif画像を生成する場合:

ffmpeg -i video.avi -t 10 out%d.gif

許容可能な品質のgif画像を生成します。最初のコマンドを使用して、2番目のコマンドと同じ品質のアニメーションGIFを生成するにはどうすればよいですか?

49
Marconi

映画から抽出した一連の画像から高品質のアニメーションGIFを生成しようとしても、同様の問題がありました。

いくつかの理由で、ffmpegで生成されたアニメーションGIFには、固定256レベルのシステムカラーパレットを使用すると想定される103色しか含まれておらず、ひどい結果になります。私の解決策は代わりに

ffmpeg -i video.avi -t 10 out%02d.gif

それから

gifsicle --delay=10 --loop *.gif > anim.gif

品質は非常に良好です。 gifsicleを見つけることができます こちら

編集:投稿を更新して、Alex Kahnの提案を反映させました。

64
Tommy Strand

アニメーションGIFを作成したことはありませんが、ビットレートパラメーターを使用して、画像であるにもかかわらず(おそらくレートがない場合でも)品質を指定してみてください。サムネイルの品質は、-bパラメーターに応答します。 「非常に悪い」という意味であれば、非常に高いビットレートとビットレートの許容値を指定できます(vbrまたはcbrソースを使用しているかどうかはわかりません)。 (または、大きすぎてサイズを制限したい場合は反対を行います)

'-b', '10000000','-bt', '20000000'

または、-sパラメータを使用して寸法を変更することもできます。これは、「1920X1200」のような寸法の通常の外観を取ります。

それは、ソース素材のビットレートと圧縮、そしてgifがどのようになることを望むかに本当に依存します。 「非常識な」よりも多くの情報を提供することを検討するかもしれませんが、いずれにせよ、これはあなたに良いスタートを与えると思います。がんばろう

0
Profane