Я намагаюся накласти вхідне відео з великою кількістю зображень, де кожне зображення повинно бути показано на короткий час. Я досягла цього за допомогою складного фільтра (команда нижче). Проблема полягає в тому, що у мене є багато, багато зображень (& gt; 1000) :-)
ffmpeg -y -i in.mp4
-i logo1.png
-i logo2.png
-i logo3.png
-filter_complex "
[0:v][1:v] overlay=10:10:enable='between(n,2,4)' [tmp];
[tmp][2:v] overlay=30:30:enable='between(n,6,8)' [tmp];
[tmp][3:v] overlay=50:50:enable='between(n,10,12)';
" out.mp4
Чи дозволяє FFmpeg користувачеві передавати ці дані через текстовий файл? Зображення генеруються в пам'яті, тому труби також є тонкими (насправді краще).
(якщо це неможливо, я можу передати згенерований відео Bgra формат?; але я не віддаю перевагу тому, що операція накладання дорожче + більше IO: має бути якомога швидше)
Редагувати: Якщо я використовую наступну конфігурацію, накладається лише останнє надіслане зображення.
-i ski.mp4
-f image2pipe -vcodec png -i -
-filter_complex "[0:v][1:v] overlay=10:10:enable='between(n,2,3)' [tmp];
[tmp][1:v] overlay=30:30:enable='between(n,6,7)'"
-f mp4", "out.mp4"
Виходи FFmpeg (здається, що вони пропускають зображення, якщо вони мають різні розміри):
Input stream #1:0 frame changed from size:1417x665 fmt:rgba to size:1800x700 fmt:rgba
Input stream #1:0 frame changed from size:1800x700 fmt:rgba to size:550x371 fmt:rgba
Input stream #1:0 frame changed from size:550x371 fmt:rgba to size:256x256 fmt:rgba
Як я можу інструктувати FFmpeg, що для першого фільтра використовується перше зображення, для другого 2-го зображення в трубі і т.д. ( зображення мають різні розміри )?