Накладання відео FFmpeg


1

Я намагаюся накласти вхідне відео з великою кількістю зображень, де кожне зображення повинно бути показано на короткий час. Я досягла цього за допомогою складного фільтра (команда нижче). Проблема полягає в тому, що у мене є багато, багато зображень (& 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-го зображення в трубі і т.д. ( зображення мають різні розміри )?

Відповіді:


2

Якщо ви можете вводити зображення як послідовність та вказувати накладення x, y і кваліфікатори часу як вирази, то це можна зробити як керуючу команду.

Ви можете вводити зображення через трубу за допомогою -f image2pipe -vcodec png як параметр введення.

Крім того, FFmpeg може посилатися на ланцюжок фільтрів з сценарію

-filter_complex_script ім'я файлу (глобальний)

Цей параметр подібний до -filter_complex, єдина відмінність полягає в тому, що його аргументом є ім'я файлу, з якого складається комплекс   слід читати опис фільтра.


Чи можете ви просто вказати мені, як правильно використовувати image2pipe щодо цього питання (див. Вищезгадану відповідь)? (Я пробував проходження відео rgba, що працює, але це занадто повільно). Ще раз дякую вам.
dajuric
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.