ピクセル数はそのままなので、1280X720 だと、90度回転すると 720X1280 になる。似たフィルタにrotate, hflip, vflip
フィルタがある。
映像を任意の角度に回転させる rotate
上下左右を入れ換える vflip, hflip
基本コマンド
ffmpeg -i input -vf transpose=cclock_flip output
ffplay -i input -vf transpose=0
ffplay -i input -vf transpose=1,transpose=1
公式ドキュメント:FFmpeg Filters Documentation : transpose
オプション
- dir[int]
回転方向の設定 - 0, cclock_flip
反時計回りに90度回転し上下反転。既定値 - 1, clock
時計回りに90度回転 - 2, cclock
反時計回りに90度回転 - 3, clock_flip
時計回りに90度回転し上下反転 - passthrough[int]
フィルタを当てた後の縦と横の解像度を比較して回転をそのままにするかやめるかの設定 - 0, none
なにもしない。既定値 - 1, landscape
横解像度が縦解像度以上になるとフィルタの効果を打ち消す - 2, portrait
縦解像度が横解像度以上になるとフィルタの結果そのまま返す
transpose_opencl
opencl を使ってtranspose_opencl
フィルタを使う。
opencl が使えれば以下のコマンドを実行すると対応 CPU、または GPU が表示される。
ffmpeg -hide_banner -v verbose -init_hw_device opencl
出力コマンド例。
ポイントは opencl を使うデバイスを上の例では 0.0 から 1.1 から指定する。能力によって処理速度が大きく異なる。オプション指定は通常と同じ。
コマンド例。
ffmpeg -init_hw_device opencl=ocl:1.0 -filter_hw_device ocl -i input -vf hwupload,transpose_opencl output
通常のフィルタに切り替えるにはhwdownload,format=yuv420p
フィルタを挟む。
ffmpeg -init_hw_device opencl=ocl:1.0 -filter_hw_device ocl -i input -vf hwupload,transpose_opencl,hwdownload,format=yuv420p,lutyuv=val:128:128 output
公式ドキュメントがないので下のコマンドで調べる。
ffmpeg -h filter=transpose_opencl