iphoneで撮影した動画が上下反転していたので元に戻そうとffmpegのオプションを調べてみました。
ffmpegで反転や回転をさせる場合は-vfオプションを使います。
以下、使える引数
- -vf vflip 上下反転
- -vf hflip 左右反転
- -vf transpose=0 反時計回りに90度回転+上下反転
- -vf transpose=1 時計回りに90度回転
- -vf transpose=2 反時計回りに90度
- -vf transpose=3 時計回りに90度+上下反転
オプションは複数組み合わせることもできます。
1 |
ffmpeg -vf vflip,transpose=1 -i infile.mp4 outfile.mp4 |
上記例の場合上下反転の後時計回りに90度回転します。transpose=3と同じですね。
解像度を変更するオプション-sと一緒に90度回転するオプションを使用する場合は縦横が逆になるので、注意しましょう。90度回転の場合は解像度の指定を縦横逆にしないと横に伸びた映像になってしまいます。
広告
各オプション利用時の回転イメージ
オリジナルの元画像
vflip
hflip
transpose=0
transpose=1
transpose=2
transpose=3
hflip,vflip
vflip,transpose=1
動画の情報を取得して回転の必要があるかどうか調べる
再生すれば回転の必要があるかどうかわかりますが、iPhoneで撮影した動画であれば動画の情報の情報から回転の必要可否が判断できます。
動画の情報を取得するにはffmpegをiオプションを使って実行します。
1 |
ffmpeg -i movie.mp4 |
動画の情報が表示されるので、その中の rotate:[数値] が0以外の場合は[数値]分だけ時計周りに回転の必要があります。
90の場合のオプションは -vf transpose=1
180の場合は反転なので -vf vflip
270の場合は -vf transpose=2
以上、ffmpegで画像を回転、反転させるオプションでした。