Для работы фильтра concat входные данные могут иметь разные кодеки, но должны иметь одинаковые размеры кадра (например, 1920 × 1080 пикселей) и иметь одинаковую частоту кадров. Соединение происходит по одинаковому количеству потоков. То есть, если на выходе нужен видео и один аудио поток, то каждый входящий файл дожен содержать видео и по крайней мере, один аудио поток.  Работу начинаем с проверки файлов.

2 видео имеют изображение и звук. Третье видео без звука. Строчка команды ffmpeg добавит в фильм пустой звук в виде тишины.

ffmpeg -i 3_m.mp4  -f lavfi -i anullsrc -c:v copy -c:a aac -shortest  3.mp4

После этого можно запускать команду объединение:

ffmpeg -i 1.mov -i 2.webm -i 3.mp4  -filter_complex «[0:v:0][0:a:0][1:v:0][1:a:0][2:v:0][2:a:0] concat=n=3:v=1:a=1 [outv] [outa]» -map «[outv]» -map «[outa]» output.mp4

-i 1.mov -i 2.webm -i 3.mp4 это 3 видео файлы, которые предстоит объединить.

[0:v:0][0:a:0][1:v:0][1:a:0][2:v:0][2:a:0]

Параметры сообщают ffmpeg, какие потоки брать из входных файлов и отправлять в качестве входных данных в фильтр concat.  Первым идет видеопоток 0 [0:v:0] и аудиопоток 0 [0:a:0] со входа 0 ( в данном примере 1.mov), вторым видеопоток 0 [1:v:0] и аудио поток 0 [1:v:0] с входа 1 (2.webm ) и т. д. Нумерация входов начинается с нуля.

concat=n=3:v=1:a=1 [outv] [outa]

Это сам фильтр concat. n=3 говорит фильтру, что есть три входных сегмента (видео файла); v=1 говорит о том, что в каждом сегменте будет один видеопоток; a=1 говорит о том, что в каждом сегменте будет один аудиопоток. Затем фильтр объединяет эти сегменты и создает два выходных потока — [outv] и [outa].

-map «[outv]» -map «[outa]»

Тем самым ffmpeg понимает использовать результаты фильтра concat, а не потоки непосредственно из входных файлов. Обратите внимание, что кавычки вокруг раздела фильтра обязательны.

Объединение списком

Ffmpeg может объединить одинаковые по всем свойствам файлы списком. Список должен выглядеть так:
Слово file, апостроф, имя файла, апостроф.

Для получения списка запускаем cmd, добираемся до нужного места. Запускаем команду

(for %i in (*.webm) do @echo file ‘%i’) >list.txt

Словами команда звучит так:
Сделать список, записать его в текстовый файл >list.txt . Для каждого файла с расширением webm прибавить слово file, имя файла заключить между апострофами.

После этого запускаем команду Ffmpeg.

Ffmpeg –f concat –i list.txt –c copy result.webm

Объединенные файлы будут записаны в файл result.webm.