中心点水平旋转 ffmpeg -i input.mp4 -loop 1 -i 2.png -filter_complex "[0:v]copy;[0:a]acopy;[1:v]copy[pm1];[pm1]format=rgba,colorchannelmixer=aa=1,scale=200:60,format=rgba,rotate='0:c=0x00000000:ow=hypot(iw,ih):oh=ow',format=rgba,rotate='PI/5*t:c=0x00000000:ow=hypot(iw,ih):oh=ow'[pm1];[pm1]overlay=(W-w)/2+0:(H-h)/2+0" -t 00:00:15 -map "" -map "" 1.mp4 测试视频中心旋转-successful ffmpeg -i input-0.mp4 -i input-1.mp4 -filter_complex "[0:v]copy;[0:a]acopy;[1:v]copy[pm1];[pm1]format=rgba,colorchannelmixer=aa=1,scale=300:150,format=rgba,rotate='0:c=0x00000000:ow=hypot(iw,ih):oh=ow',format=rgba,rotate='PI/5*t:c=0x00000000:ow=hypot(iw,ih):oh=ow'[pm1];[pm1]overlay=(W-w)/2+0:(H-h)/2+0" -t 00:00:15 -map "" -map "" output-01.mp4 单独视频旋转-successful ffmpeg -i input-0.mp4 -filter_complex "rotate='0:c=#FFFFFF:ow=hypot(iw,ih):oh=ow',format=rgba,rotate='PI/5*t:c=#FF00FF:ow=hypot(iw,ih):oh=ow'" -t 00:00:30 output-02.mp4 ffmpeg -i input-0.mp4 -filter_complex "rotate='0:c=#FFFFFF:ow=hypot(iw,ih):oh=ow',format=rgba,rotate='PI/5*t*5:c=#FF00FF:ow=hypot(iw,ih):oh=ow'" -t 00:00:30 output-02.mp4 ffmpeg -i input-0.mp4 -filter_complex "rotate='0:c=#FFFFFF:ow=hypot(iw,ih)',format=rgba,rotate='PI/5*t*1.5:800:600:c=#FF00FF:ow=hypot(iw,ih)'" -t 00:00:30 output-04.mp4 从左到右:视频不动,背景从左往右动 ffmpeg -i input-0.mp4 -i bg.jpg -filter_complex "[0:v]copy;[0:a]acopy;[1:v]copy[pm1];[pm1]format=rgba,colorchannelmixer=aa=1,scale=800:800[pm1];[pm1]overlay=x='if(gte(t,0), -w+(mod(t*500, W+w)), NAN)':y=(H-h)/2" -map "" -map "" output-08.mp4 从左到右:背景不动,视频从左往右动 ffmpeg -i input-0.mp4 -i bg.jpg -filter_complex "[0:v]copy;[0:a]acopy;[1:v]copy[pm1];[pm1]format=rgba,colorchannelmixer=aa=1,scale=800:800[pm1];[pm1]overlay=x='if(gte(t,0), -w+(mod(t*500, W+w)), NAN)':y=(H-h)/2" -map "" -map "" -f mp4 output-07.mp4 从左到右:背景不动,视频从左往右动,速度越来越快 ffmpeg -i input-0.mp4 -i bg.jpg -filter_complex "[0:v]copy;[0:a]acopy;[1:v]copy[pm1];[pm1]format=rgba,colorchannelmixer=aa=1,scale=800:800[pm1];[pm1]overlay=x='if(gte(t,0), -w+(mod(t*t*500, W+w)), NAN)':y=(H-h)/2" -map "" -map "" -f mp4 output-07.mp4 从上往下:视频不动,背景从上往下动 ffmpeg -i input-0.mp4 -i bg.jpg -filter_complex "[0:v]copy;[0:a]acopy;[1:v]copy[pm1];[pm1]format=rgba,colorchannelmixer=aa=1,scale=200:60[pm1];[pm1]overlay=x=(W-w)/2:y='if(gte(t,0), (mod(t*500, H+h)), NAN)'" -map "" -map "" -f mp4 output-05.mp4 从上往下:背景不动,视频从上往下动 ffmpeg -i input-0.mp4 -i bg.jpg -filter_complex "[0:v]copy;[0:a]acopy;[1:v]copy[pm1];[pm1]format=rgba,colorchannelmixer=aa=1,scale=800:800[pm1];[pm1]overlay=x=(W-w)/2:y='if(gte(t,0), (mod(t*500, H+h)), NAN)'" -map "" -map "" -f mp4 output-06.mp4 从下往上移动:视频不动,背景从下往上动 ffmpeg -i input-0.mp4 -i bg.png -filter_complex "[0:v]copy;[0:a]acopy;[1:v]copy[pm1];[pm1]format=rgba,colorchannelmixer=aa=1,scale=200:60[pm1];[pm1]overlay=x=(W-w)/2:y='if(gte(t,0), H-(mod(t*500, H-1)), NAN)'" -map "" -map "" -f mp4 output-05.mp4 从下往上移动:背景不动,视频从下往上动 ffmpeg -i input-0.mp4 -i bg.jpg -filter_complex "[0:v]copy;[0:a]acopy;[1:v]copy[pm1];[pm1]format=rgba,colorchannelmixer=aa=1,scale=800:800[pm1];[pm1]overlay=x=(W-w)/2:y='if(gte(t,0), H-(mod(t*500, H-1)), NAN)'" -map "" -map "" -f mp4 output-05.mp4