4

У меня есть входное видео, которое записано с разрешением 640x360 (это с веб-камеры, если это имеет какое-то значение).

Я хочу, чтобы вывод был 1280x720 (удвоенная ширина оригинала), и я хочу, чтобы исходное видео было смещено вправо и центрировано по вертикали.

У меня есть два или более изображения (png), которые имеют размер 640x720, и они должны быть показаны в определенное время в видео на левой стороне.

Вот то, что я должен изменить размер и дополнить оригинальное видео:

ffmpeg -i "E:\Videos\testvid.wmv" -q:a 0 -q:v 0 -vf "pad=1280:720:(1280-iw):(720-ih)/2" -s 1280:720 "E:\Videos\new.wmv"

Вот что мне нужно, чтобы вставить изображение в видео:

ffmpeg -i "E:\Videos\new.wmv" -i "E:\Pictures\red_640x720.png" -filter_complex "[0:v][1:v] overlay=0:0:enable='between(t,1,10)'" "E:\Videos\new2.wmv"

Два утверждения выше работают нормально. Однако я хотел бы сделать их все сразу, чтобы FFMPEG запускался только один раз (если это возможно). Кто-нибудь может мне помочь с синтаксисом?

Благодарю.

1 ответ1

8

Соединяйте фильтры запятыми. Линейная последовательность из одного или нескольких фильтров образует цепочку фильтров. Соедините цепочки фильтров с точкой с запятой, чтобы создать граф фильтра. См. Введение в фильтрацию и Описание графа фильтра для получения более подробной информации.

Пример:

-filter_complex \
"[0:v]filter_0,filter_1,filter_2[chain1]; \
 [1:v]filter_3,filter_4,filter_5[chain2]; \
 [chain1][chain2]filter_6"

Таким образом, ваша команда может выглядеть так:

ffmpeg -i video.wmv -i image0.png -i image1.png -filter_complex \
"[0:v]pad=iw*2:ih*2:ow-iw:(oh-ih)/2[padded]; \
 [padded][1:v]overlay=0:0:enable='between(t,1,10)'[bg]; \
 [bg][2:v]overlay=0:0:enable='between(t,10,20)'[out]" \
-map "[out]" -map 0:a output.wmv

В результате чего:

наложение поверх наложения

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .