ffmpeg 4.3 から使える予定のフィルタ。今まではstackフィルタで映像を並べてoverlayフィルタで映像を動かしていたのが、scrollフィルタだけでスクロールできるようになった。出力フォーマットは GBRP なので適宜formatフィルタで出力形式に合わせて変換する。

基本コマンド

下から上に1フレーム毎に5%づつスクロールする。ffplay で再生確認するときはloopフィルタのsizeでループするフレーム数を指定する。

ループ回数を指定できる loop, aloop

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

horizontalverticalを併用すると斜めにスクロールする。
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 まで

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)