Я хочу объединить видео в пакет размером по двадцать (20) штук каждое. Я использую Linux-машину. Видео в формате mp4 и среднего качества. У некоторых даже отсутствует аудиопоток. До сих пор я пытался ffmpeg, mencoder, cvlc/vlc и MP4Box. Я хочу написать сценарий командной строки для достижения этой цели, поскольку я выполняю пакетную обработку.
Основная проблема заключается в том, что некоторые из решений, которые я пробовал, хорошо работают для двух видео, некоторые хорошо работают для видео с аудиопотоком, а другие хорошо работают для некоторых других подмножеств моего набора видео. Однако мне не удалось найти комплексного решения этой задачи.
Создайте файл files.txt со всеми файлами, которые вы хотите объединить в следующей форме (строки, начинающиеся с #, игнорируются):
# this is a commentfile 'file1.mp4'file '/path/to/file2.mp4'file 'file3.mp4'
Обратите внимание, что это могут быть как относительные, так и абсолютные пути. Затем вы можете копировать или перекодировать свои файлы в потоковом режиме:
melt для этого есть отличная утилита командной строки.Здесь является ли страница
Редактировать из комментариев: Команда, которая решила мою проблему, была такой melt {input-sequence} -consumer avformat:{output-name} acodec=libmp3lame vcodec=libx264
Я написал обертку вокруг ffmpeg называемый видмергер , что позволяет очень легко объединить несколько видео внутри папки, например, чтобы объединить все файлы mp4 внутри текущего каталога, просто запустите:
Я создал Скрипт на Python что, используя moviepy, может объединять также подсегменты (полезно, если вы хотите, например, удалить некоторые части из видео).
Несколько мультимедийных контейнеров (MPEG-1, MPEG-2 PS, DV) позволяют объединять видео, просто объединяя файлы, содержащие их.
Т.е. для объединения видео используется один из вышеупомянутых видеоконтейнеров (к которому я добавлю MPEG-4 Part 14 для личного опыта), вы могли бы просто:
@ohaal Я пробовал использовать различные методы конкатенации, приведенные в “ffmpeg”, включая фильтры и файловые протоколы. Я также попытался использовать функцию concat в cvlc /vlc'. Я также попробовал функцию concatвmencoder`. Все это работало частично. Это наконец-то помог мне решить этот вопрос.
Да, вы уже упомянули инструменты, я имел в виду фактические команды, которые вы выполняли. Также было бы здорово, если бы вы могли включить команду, которая в конечном итоге решила ее для вас (в вашем ответе), для будущих посетителей.
Ааа, я понимаю твою точку зрения. К сожалению, я не могу перечислить команды из-за их огромного количества. Команда, которая решила мою проблему, была такой
: "расплавить {последовательность ввода} -потребительский avformat:{имя вывода} acodec=libmp3lame vcodec=libx264`