任意の角度に回転でき、時間経過で回転させたり止めたりできる rotate
フィルタの使い方。似たフィルタに transpose, hflip, vflip
フィルタがある。
上下左右を入れ換える vflip, hflip
ピクセル数はそのままに映像を回転させる transpose
基本コマンド
角度はラジアン指定なので慣れてないと混乱しやすい。1ラジアンは時計回りに約57.3度回転。PI, hypot, min などの書き方。
ffmpeg -i input -vf rotate=a=1 output
ffplay -i input -vf rotate=1


時計回りに45度回転させる。
ffplay -i input -vf rotate=45*PI/180

回転しても見切れないように出力解像度を大きくする。
ffplay -i input -vf rotate=45*PI/180:ow='hypot(iw,ih)':oh=ow

回転しても映像が常に映る(余白が表示されない)ように出力解像度を小さくする。
ffplay -i input -vf rotate=t*60*PI/180:ow='min(iw,ih)/sqrt(2)':oh=ow
1ラジアン回転させて映像が丁度見切れない解像度に縦横を調節する。
ffplay -i input -vf rotate=1:ow=rotw(1):oh=roth(1)

公式ドキュメント:FFmpeg Filters Documentation : rotate
オプション
特定の時間だけフィルタを当てるならタイムライン編集、特定の時間に角度を変化させるなら評価式を使う。1ラジアンは約57.3度でπが180度。
- angle, a[string]
時計回りに回転させる角度のラジアン指定。マイナスで反時計回り。評価式が使える - out_w, ow[string]
出力解像度の横幅。回転したときの余白を調整する。フレーム間でのサイズ変更はできない。評価式が使える - out_h, oh[string]
出力解像度の縦幅。回転したときの余白を調整する。フレーム間でのサイズ変更はできない。評価式が使える - fillcolor, c[string]
余白の色指定。色名指定とRRGGBB形式が使える https://ffmpeg.org/ffmpeg-utils.html#color-syntax
既定値:black - bilinear[boolean]
回転したときに bilinear で映像補間する
既定値:1(有効)
評価式
- n
映像のフレーム数。0開始 - t
映像のタイムスタンプ秒。0開始 - hsub
横方向のクロマサブサンプル値。yuv422p なら 2 - vsub
縦方向のクロマサブサンプル値。yuv422p なら 1 - in_w, iw
入力映像の横幅 - in_h, ih
入力映像の縦幅 - out_w, ow
出力映像の横幅。out_w, ow で変更できる - out_h, oh
出力映像の縦幅。out_h, oh で変更できる - rotw(a)
out_w, ow で aラジアン回転させた分だけの横幅 - roth(a)
out_h, oh で aラジアン回転させた分だけの縦幅