Является ли ffmpeg решением для автоматизации создания видео из нескольких файлов?

Нужна помощь в автоматизации сшивания видео и аудио, и может понадобиться помощь/направление.

Допустим, у меня есть следующие активы: Видео 1 Видео 2 Видео 3 Музыка 1

И я хочу создать несколько вариантов вышеуказанных активов, таких как:

Вариант №1
Видео 1 -> Видео 3
<----Музыка 1----->

Вариант №2
Видео 3 -> Видео 1
<----Музыка 1----->

Примечание . Музыка должна быть обрезана в зависимости от длины объединенных видео.

  1. Можно ли сопоставить веб-форму с перечисленными выше активами (расположенными на локальном сервере) и заставить веб-форму в конечном итоге построить порядок видео и отобразить его на локальном сервере?

  2. Если возможно, будет ли правильным выбором FFmpeg или Animoto API (или другой)?

  3. Сколько времени/ресурсов потребуется, чтобы построить что-то подобное?

Ответы (1)

Вы можете сделать это с ffmpegпомощью фильтра concat или демультиплексора concat . Какой из них использовать, зависит от того, имеют ли ваши входные данные одинаковые параметры или нет. Если это не так, вам, возможно, придется выполнить дополнительную фильтрацию, чтобы сделать все пригодным для правильной конкатенации.

Пример: фильтр concat

Для входных данных, которые различаются по частоте кадров, ширине и высоте:

ffmpeg -i video0 -i video1 -i video2 -i music -filter_complex \
"[0:v]fps=25,scale=1280x720,setpts=PTS-STARTPTS[v0]; \
"[1:v]fps=25,scale=1280x720,setpts=PTS-STARTPTS[v1]; \
"[2:v]fps=25,scale=1280x720,setpts=PTS-STARTPTS[v2]; \
"[v0][v1][v2]concat=n=3:v=1:a=0,format=yuv420p[v]" \
-map "[v]" -map 3:a -shortest output

При выводе mp4 рассмотрите возможность добавления -movflags +faststartв качестве варианта вывода, если ваши зрители будут смотреть через прогрессивную загрузку.

Пример: демультиплексор concat

Если все ваши входные данные похожи, сначала создайте файл списка с именем input.txt:

file "/path/to/video0"
file "/path/to/video1"
file "/path/to/video2"

Затем запустите ffmpeg:

ffmpeg -f concat -i input.txt -i music -shortest output

Добавьте -codec copy, если хотите передавать потоковое копирование вместо повторного кодирования. Это невозможно с фильтром concat, потому что фильтрация требует повторного кодирования.

Ваши вопросы

  1. Можно ли сопоставить веб-форму с перечисленными выше активами (расположенными на локальном сервере) и заставить веб-форму в конечном итоге построить порядок видео и отобразить его на локальном сервере?

Да. Пока ваш протокол поддерживается ffmpeg. См. ffmpeg -protocolsсписок, поддерживаемый вашей сборкой.

  1. Если возможно, будет ли правильным выбором FFmpeg или Animoto API (или другой)?

Это возможно с ffmpeg, но я никогда не использовал Animoto API, поэтому не могу комментировать это.

  1. Сколько времени/ресурсов потребуется, чтобы построить что-то подобное?

Это не совсем возможно ответить. Вы предоставили очень мало информации, и это зависит от навыков того, кто его строит.

Также см