ちょっとTwitterに動画を上げてみるテストをした(今やっているFGOのイベントの天竺級3T周回例)のだが、その際、Twitterの仕様上140秒制限があったり、変な解像度(2220x1080とか)だと変にリサイズされることがあるので何とかしようといろいろ調べた結果、ffmpegのフィルタを駆使すればどうにかなることがわかったのでメモ。
以下は両端にある150ピクセルの黒い部分を削って1920x1080にし、1.25倍速にする例。
$ /usr/local/ffmpeg_build/bin/ffmpeg \ -i ownCloud/Fate_GO_2018-04-22-20-37-55.mp4 \ -vf "setpts=0.8*PTS, crop=1920:1080:150:0" \ -af "atempo=1.25" \ -c:v libx264 \ -c:a aac \ -crf 18 \ test1.mp4
- iオプション: 入力ファイル。
- vfオプション: ビデオフィルタ。PTS(Presentation Time Stamp、簡単に書けば再生時間)を0.8倍にし(setpts)、x=150,y=0を起点に1920x1080のサイズで切り抜く(crop)ように指示している。
- afオプション: オーディオフィルタ。音のテンポを1.25倍にする(atempo)ように指示している。1÷setptsで指定した値=atempoで指定する値となる。フィルタドキュメントを見た感じasetptsでも代用できるかもしれないが試していないので不明。
- c:vオプション: ビデオ部分をlibx264で出力させる、コーデック指定オプション。
- c:aオプション: オーディオ部分をaacで出力させる、コーデック指定オプション。
- crfオプション: 品質を数字で指定するオプション。小さければ小さいほど高品質になるらしい…が効いているかどうかわからない…
- test1.mp4: 出力先のファイル名。