Ffmpeg 有没有办法解决sendcmd的复杂使用问题?

Ffmpeg 有没有办法解决sendcmd的复杂使用问题?,ffmpeg,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,

根据这个链接,我试图有一些旋转和缩放覆盖

我需要在视频上添加一些图像,并在所需的帧或持续时间上移动和旋转缩放它们

我的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参数进行旋转

Sendcmd在ffmpeg文档中的文档记录得很差,我想((

1)我的代码有什么问题

使用图像输入,而不是sendcmd。
-i mask1.png
仅生成一帧图像,因此在时间2.25s时没有帧。在之前添加
-loop 1
,以生成视频流

在何处使用c参数进行旋转

在旋转过滤器内部,因此
[1:v]rotate@1=c=black@0[旋转1]


由于图像现在是循环的,您应该将
shortest=1
添加到覆盖过滤器中。

-i mask1.png只生成图像的一帧,因此在时间2.25s时没有帧,但覆盖过滤器工作正常,图像的位置正在成功更改。覆盖过滤器将视频文件作为其基本输入,覆盖过滤器重新设置当第二次输入完成时重复最后一帧。只要尝试一下,它就会像一个符咒一样工作。谢谢!!!还有一个问题。我可以在.cmd文件中使用帧号而不是持续时间吗?不。解析器只需要时间戳。理解,好。顺便问一下,有没有办法在每个添加的覆盖中使用一个cmd文件?如果我需要添加两个以上的imag由于有大量的移动和旋转,在这种情况下使用一个cmd文件是不舒服的。