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 の追加一時パレットファイルを作成しないようにするためです。