ffmpeg を使用して、MP4 を GIF に変換し、切り取ってサイズを変更するにはどうすればよいですか?

ffmpeg を使用して、MP4 を GIF に変換し、切り取ってサイズを変更するにはどうすればよいですか?

ffmpegで1280x720のMP4ビデオファイルを取得し、正方形のサイズ比率にトリミングして、640x640にサイズを変更したいです。

次の 2 つのコマンドは、優れた GIF 品質で動作しますが、正しいサイズ変更が欠けています。GIF 出力は得られますが、サイズは 640x640 ではなく 1138x640 になります。

パレットの生成:

ffmpeg -y -ss 30 -t 3 -i input.mp4 \
-vf fps=10,scale=1138:-1:flags=lanczos,palettegen palette.png

パレットを使用してGIFを出力する:

ffmpeg -ss 30 -t 3 -i input.mp4 -i palette.png -filter_complex \
"fps=10,scale=1138:-1:flags=lanczos[x];[x][1:v]paletteuse" output.gif

これにより 1138x640.gif が生成されますが、別のコマンドに頼らずに 640x640 にするにはどうすればよいでしょうか?

答え1

1280x720 入力に機能する簡単な方法を次に示します。

パレットを生成:

ffmpeg -i input.mp4 -filter_complex "fps=10,scale=-1:640,crop=ih:ih,setsar=1,palettegen" palette.png

GIF を作成:

ffmpeg -i input.mp4 -i palette.png -filter_complex "[0]fps=10,scale=-1:640,crop=ih:ih,setsar=1[x];[x][1:v]paletteuse" output.gif

必要に応じてこれをさらに複雑にすることもできます。force_aspect_ratioスケールオプションの追加任意の入力サイズを640x640に収めるために、分割と FIFO の追加一時パレットファイルを作成しないようにするためです。

関連情報