ffmpeg : 定義された領域内の画像とテキストをスムーズにスクロールします

ffmpeg : 定義された領域内の画像とテキストをスムーズにスクロールします

次のコマンドを使用して、ビデオの下から上に画像をスクロールする方法を知っています:

ffmpeg -f lavfi -i color=s=1920x1080 -loop 1 -t 0.08 -i "input.jpg" -filter_complex "[1:v]scale=1920:-2,setpts=if(eq(N\,0)\,0\,1+1/0.02/TB),fps=25[fg]; [0:v][fg]overlay=y=-\'t*h*0.02\':eof_action=endall[v]" -map "[v]" output.mp4

しかし、私は画像とテキストが下の位置から表示され、スムーズにスクロールして、下の図のように上の位置で消えるようにしたいのです。 ここに画像の説明を入力してください

答え1

背景画像から関連領域を切り取り、スクロールされたテキストを切り取った領域にオーバーレイし、その結果を背景画像の同じ領域にオーバーレイすることができます。


例:

bk.jpg:
背景画像 - 事前に準備したもの:
ここに画像の説明を入力してください

input.jpg:
前景画像 - 事前に準備したもの(サンプル解像度は 270x257): ここに画像の説明を入力してください


サンプルコマンド:

ffmpeg -y -loop 1 -r 25 -i bk.jpg -loop 1 -r 25 -i input.jpg -filter_complex "[0:v]crop=270:257:360:55[c0];[c0][1:v]overlay=y='257-t*257*0.04':eof_action=endall[fg];[0:v][fg]overlay=x=360:y=55:eof_action=endall" -t 50 output.mp4


  • [0:v]crop=270:257:360:55[c0]- 背景から 270x257 の領域を切り取ります。
  • [c0][1:v]overlay=y='257-t*257*0.04':eof_action=endall[fg]- スクロールされたテキストをトリミングされた領域の上に重ねます。
  • [0:v][fg]overlay=x=360:y=55:eof_action=endall-[fg]背景画像の上にオーバーレイします(切り取られた領域と同じ場所)。

縮小された結果:
ここに画像の説明を入力してください

関連情報