Я могу успешно объединить несколько файлов, используя следующую команду:
ffmpeg -f concat -i input.txt -codec copy output.mp4
Единственная проблема с этой командой заключается в том, что вам нужно прочитать пути к файлам из текстового файла с именем input.txt следующего содержания:
file 'C:\Users\fabio\Downloads\Super\Sharks\01.mp4'
file 'C:\Users\fabio\Downloads\Super\Sharks\02.mp4'
file 'C:\Users\fabio\Downloads\Super\Sharks\03.mp4'
Есть ли способ достичь той же цели, не считывая пути к файлам из файла? Я попробовал следующее без удачи:
ffmpeg -f concat -i file "C:\a\b\01.mp4" file "C:\a\b\02.mp4" -codec copy output.mp4
ffmpeg -f concat -i "C:\a\b\01.mp4" "C:\a\b\02.mp4" -codec copy output.mp4
Должен ли я использовать другую команду?
command-line
ffmpeg
Фабио Делариас
источник
источник
Ответы:
2019 Обновление:
Как уже упоминалось в комментариях, в Stack Overflow есть отличное описание доступных опций конкатенации, а также обсуждение того, какой метод использовать в зависимости от типов файлов, которые вы используете:
Как объединить два файла MP4 с помощью FFmpeg?
Оригинальный ответ 2016 года:
Вы должны быть в состоянии использовать метод протокола concat для объединения файлов:
Кроме того, в руководстве по FFmpeg обсуждается метод, специально предназначенный для файлов MP4, чтобы объединить их без потерь, но при этом требуется создать временные файлы (или именованные каналы):
источник
output.mp4
.Вы можете заменить файл списком путем вывода списка
stdout
и чтения списка изstdin
ffmpeg:источник
Нет, похоже, нет никакого способа использовать демультиплексор ffmpeg concat в одной командной строке без какого-либо взлома. Вам необходимо создать входной текстовый файл со списком файлов. Я сам подумал, что это странно, может быть, кто-то добавит это в FFMpeg позже.
Принятый ответ на этот вопрос использует протокол concat, а не дематер concat, о котором спрашивал OP.
источник
Вы все еще можете сделать это в сценарии без изменения команды. Что-то вроде:
$$ расширяется до pid оболочки, выполняющей команду, поэтому имя файла будет отличаться при каждом его запуске. так что вы можете использовать $$. txt, если хотите. Или что-то другое...
Кроме того, вы можете использовать здесь файлы, чтобы добавить кучу данных в файл:
bash Подстановка переменных работает, так что вы можете программно определять содержимое файла, это не нужно исправлять. Я постоянно внедряю подобные вещи в циклы. Наконец, перенаправление работает так же, как и выше, поэтому> $$. Tmp усекает, а затем пишет, >> $$. Tmp добавляется.
источник