Предположим, у меня есть ряд видеофайлов, которые можно объединить с непересекающимися временами:

  1. 1.mp4 [0:00-0:45]
  2. 2.mp4 [1:00-2:00]
  3. 3.mp4 [2:10-3:00]

Этот пример имеет три сегмента, но в целом их может быть больше.

Предполагая, что они имеют одинаковое соотношение сторон, но не обязательно одинаковый размер, я хотел бы использовать сложный фильтр, чтобы объединить их в один видеофайл длиной 3 часа с пробелами, когда видео отсутствует. Я на самом деле хочу более сложный результат фильтра с этим как одна часть, но это та часть, которую я не понимаю, как производить.

ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -filter_complex "
[0:v] scale=640x480 [one];
[1:v] scale=640x480 [two];
[2:v] scale=640x480 [three];
???
[out]" -map '[out]' out.mp4

Я ищу функции фильтра для применения после масштабирования входных видеопотоков. Я посмотрел на:

  1. concat - это не позволяет заполнять время
  2. streamselect и sendcmd - это кажется ужасно сложным, если есть много потоков

Этот вопрос похож на FFmpeg - Концентрация аудио файлов с интервалом, но с видео вместо аудио.

Я только ищу помощь с видео; У меня уже есть звук, функционирующий так, как я хочу.

1 ответ1

2

Вы можете сделать это, используя цветной фильтр.

ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -filter_complex "
[0:v]scale=640x480[one];
color=black:s=640x480:d=15[b0];
[1:v]scale=640x480[two];
color=black:s=640x480:d=10[b1];
[2:v]scale=640x480[three];
[0:v][b0][1:v][b1][2:v]concat=n=5:v=1:a=0[out]"
-map '[out]' out.mp4

Я предполагаю, что вы хотите, чтобы были включены все клипы 1, 2 и 3.

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