ffmpeg 4.3 から使える予定のフィルタ。今まではstack
フィルタで映像を並べてoverlay
フィルタで映像を動かしていたのが、scroll
フィルタだけでスクロールできるようになった。出力フォーマットは GBRP なので適宜format
フィルタで出力形式に合わせて変換する。
基本コマンド
下から上に1フレーム毎に5%づつスクロールする。ffplay で再生確認するときはloop
フィルタのsizeでループするフレーム数を指定する。
ffmpeg -i input -vf scroll=vertical=0.05,format=yuv420p -c:a copy output
ffplay -i input -vf loop=loop=-1:size=32767,scroll=vertical=0.05,format=yuv420p
右から左の場合。
ffmpeg -i input -vf scroll=horizontal=0.05,format=yuv420p -c:a copy output
ffplay -i input -vf loop=loop=-1:size=32767,scroll=horizontal=0.05,format=yuv420p
画像をループする場合。
ffmpeg -loop 1 -i img -vf scroll=horizontal=0.05,format=yuv420p output
ffplay -i img -vf loop=loop=-1:size=1,scroll=horizontal=0.05,format=yuv420p
horizontal、verticalを併用すると斜めにスクロールする。
ffmpeg -loop 1 -i img -vf scroll=horizontal=0.05:vertical=0.03,format=yuv420p output
ffplay -i img -vf loop=loop=-1:size=1,scroll=horizontal=0.05:vertical=0.03,format=yuv420p
loop
フィルタのsizeを指定すると映像をループしながらスクロールも併用できる。25fpsのサンプル動画に10秒ループ(25×10=250)で1スクロールする。
ffmpeg -f lavfi -i testsrc2 -vf loop=loop=-1:size=250,setpts=N/(FRAME_RATE*TB),scroll=horizontal=1/250,format=yuv420p -t 10 output
ffplay -f lavfi -i testsrc2 -vf loop=loop=-1:size=250,scroll=horizontal=1/250,format=yuv420p
公式ドキュメント:FFmpeg Filters Documentation : scroll
オプション
既定値のままだとスクロールしない。
- horizontal, h[float]
左右のスクロール速度の指定。プラスで右から左、マイナスで左から右になり。絶対値が大きいほど高速になる。指定値は1フレーム当たり移動する横解像度の割合
既定値:0
範囲:-1 から 1 まで - vertical, v[float]
上下のスクロール速度の指定。プラスで下から上、マイナスで上から下になり。絶対値が大きいほど高速になる。指定値は1フレーム当たり移動する縦解像度の割合
既定値:0
範囲:-1 から 1 まで - hpos[float]
スクロール開始する横座標の相対位置
既定値:0
範囲:0 から 1 まで - vpos[float]
スクロール開始する縦座標の相対位置
既定値:0
範囲:0 から 1 まで