16:9の動画を9:16にする話
縦長の短いショート動画投稿したいけど、いつも横長でしか撮ってないからそれを縦長にして投稿したいなという気持ち。お金かけずに。
無料のiMovieでは縦長動画の編集ができないので、ここはffmpegの出番だ。
成果物
ffmpegを呼び出すbashスクリプト
#!/bin/bash
# 引数のチェック
if [ "$#" -ne 2 ]; then
echo "Usage: $0 input.mp4 output.mp4"
exit 1
fi
input_file=$1
output_file=$2
ffmpeg -i "$input_file" -i short_bg_1.png -i short_bg_2.png -filter_complex "[0:v]scale=1080:-1,pad=1080:1920:(ow-iw)/2:(oh-ih)/2[bg]; [bg][1:v]overlay=0:0[bg2]; [bg2][2:v]overlay=0:1264[out]" -map "[out]" -map 0:a -c:a copy "$output_file"
前提
- 何かしらの方法で作成した1920×1080の横長動画を、1080×1920の縦長動画にする。
- 動画を縦長にしたとき上下に余白ができるので、余白の上側をshort_bg_1.png、下側をshort_bg_2.pngで埋める。
- png画像は1080×656というサイズで作成しておく。
少し説明
[0:v]scale=1080:-1,pad=1080:1920:(ow-iw)/2:(oh-ih)/2[bg]
入力の動画ファイル[0:v]を、画面比率そのままで縦長動画の真ん中にもっていって[bg]という名前で出力する。
[bg][1:v]overlay=0:0[bg2]
出力した[bg]にshort_bg_1.png[1:v]を上から重ねる。座標は0:0で縦長動画の上側を埋めて[bg2]という名前で出力する。
[bg2][2:v]overlay=0:1264[out]
出力した[bg2]にshort_bg_2.png[2:v]を上から重ねる。座標は0:1264で縦長動画の下側を埋めて[out]という名前で出力する。
縦長動画を出力して上下の余白を画像で埋めるということ。
作成した縦長ショート動画
余談
最初は1080×1920の画像を背景にして、その上に動画を重ねることを試みた。しかし出来上がった動画に一瞬白っぽくなるフレームが混ざってしまって、どうやっても解決できなかったので動画の上に画像を重ねるというやり方に切り替えた。
まとめ
今モトブログ始めるなら『DJI Osmo Action 5 Pro アドベンチャーコンボ』がいいと思う。買ってないけど。