根据此链接Sendcmd in ffmpeg,我正在尝试设置一些旋转和缩放覆盖层
我需要在视频上添加一些图像,并在所需的帧或持续时间上对它们进行旋转旋转缩放。
我的test.cmd是
0
overlay@1 x 10,
overlay@1 y 10,
overlay@2 x 20,
overlay@2 y 20,
overlay@3 x 30,
overlay@3 y 30,
rotate@1 angle '45*PI/180';
2.25
overlay@1 x 20,
overlay@1 y 20,
overlay@2 x 30,
overlay@2 y 30,
overlay@3 x 40,
overlay@3 y 40,
rotate@1 angle '90*PI/180';
我的命令是
ffmpeg -i video.mp4 -i mask1.png -i mask2.png -i mask3.png -filter_complex "[0:v]sendcmd=f=test.cmd,nullsink;[1:v]rotate@1[rotate1];[2:v]rotate@2[rotate2];[3:v]rotate@3[rotate3];[0:v][rotate1]overlay@1[bg1];[bg1][rotate2]overlay@2[bg2];[bg2][rotate3]overlay@3[v]" -map "[v]" -map 0:a? -c:a copy OUT.mp4
第一个图片在0持续时间内仅旋转一次((
1)我的代码有什么问题?
2)在这种情况下如何进行透明轮换?在哪里放置c参数进行旋转?
我认为ffmpeg文档中记录的sendcmd很糟糕((
答案 0 :(得分:1)
1)我的代码出了什么问题?
使用图像输入,而不是sendcmd。 -i mask1.png
仅生成一帧图像,因此在2.25s的时间没有帧。之前添加-loop 1
,以生成视频流。
在哪里放置用于旋转的c参数?
在旋转滤镜内部,因此[1:v]rotate@1=c=black@0[rotate1]
由于图像现在已循环播放,因此您应将shortest=1
添加到叠加层滤镜。