🐙
ffmpegでaspect比を維持しつつ、縮小サイズの動画を書き出す
なんか毎回忘れるのでメモ
$ ffmpeg -i tmp.mp4 -vf 'scale=320:-1' tmp_small.mp4
これでうまくいくこともあるのだけど、
動画の縦の大きさが2で割り切れない場合に、下記のようなメッセージでうまく行かない。
[libx264 @ 0x14000ee00] height not divisible by 2 (320x257)
端数を丸め込むとうまくいく.
(ow=original_width, a=aspect_ratio
, 2で割って戻して、奇数を偶数化する)
$ ffmpeg -i tmp.mov -vf 'scale=320:(ow/a/2)*2' tmp_small.mp4
毎回覚えるのがだるいのでコマンド化した.
#!/bin/sh
set -xe
if [ $# -eq 0 ]; then
echo "usage: <input_mp4>"
exit 1
fi
f1=$1
f2=${f1%.*}_small.mp4
ffmpeg -i $f1 -vf 'scale=320:trunc(ow/a/2)*2' $f2
動作動画とかを容量小さめで貼るのに便利でほぼ毎日使う...!
Discussion