Любой способ сложного использования sendcmd? - PullRequest
0 голосов
/ 31 января 2019

По этой ссылке Sendcmd в 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

1-е изображение вращается только один раз с длительностью 0 ((

1) Что не так с моим кодом?

2) Как у меня может быть прозрачное вращение в этой ситуации?Где разместить параметр c для вращения?

Sendcmd очень плохо документирован в документах ffmpeg, я думаю ((*

1 Ответ

0 голосов
/ 31 января 2019

1) Что не так с моим кодом?

С входами изображения, а не sendcmd.-i mask1.png генерирует только один кадр изображения, поэтому в момент времени 2,25 с кадра нет.Добавьте -loop 1 до того, как сгенерировать видеопоток.

Где разместить параметр c для вращения?

Внутри фильтра поворота, поэтому [1:v]rotate@1=c=black@0[rotate1]

Поскольку изображения теперь зациклены, вы должны добавить shortest=1 к наложенным фильтрам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...