Я хочу объединить несколько файлов WAV в один файл WAV с помощью FFMPEG.
Я использовал следующую команду, и она генерирует необходимый файл.
Команда:
ffmpeg -f concat -i mylist.txt -c copy output.wav
Файл :
#mylist.txt
file '1.wav'
file '2.wav'
file '3.wav'
file '4.wav'
Но, как вы можете видеть, проблема заключается в том, что мне нужно создать текстовый файл, чтобы указать список файлов WAV для объединения.
Я могу выполнить все эти задачи, но я бы предпочел одну команду, которая выглядит как
ffmpeg -i 1.wav -i 2.wav -i 3.wav -i 4.wav output.wav
или
ffmpeg -i "concat:1.wav|2.wav|3.wav|4.wav" -c copy output.wav
Я пробовал эти две простые команды, но они возвращают только голос. 1.wav
Помогите мне написать одну команду (или исправить вышеуказанные 2 команды), которая достигает желаемого результата.
Пожалуйста, не предлагайте другие медиа-кодеры / редакторы, я хочу использовать только FFMPEG, так как он уже установлен и используется в других местах.
[0:0][1:0][2:0][3:0]
в соответствии с количеством файлов. Используйте это именно так, как он говорит. Единственное, что вы должны изменить, это входные файлы иn=4
.Too many inputs specified for the "concat" filter.
когда я пытаюсь обработать только 2 ввода с исходным кодом. Это работает, хотя, когда я удаляю[2:0][3:0]
... что имеет смысл для меня, так как в этом случае нет таких вещей, как потоки2:0
и3:0
...n
.Я думаю, что лучше всего использовать sox, а не ffmpeg:
Решение исходит из того, как добавить кучу WAV-файлов, сохраняя (не с добавлением нуля) числовой порядок?
источник
.wav
, ноsox
, похоже, не поддерживает.mp3
..wav
FFmpeg вики упоминает , используя
concat
протокол не возможно со всеми типами файлов. Он отлично работает с большинством MPEG-контейнеров и битовых потоков, но, очевидно, не с файлами WAV со звуком PCM.Вам не обязательно создавать временный файл и использовать его. С помощью Bash (или других оболочек, поддерживающих подстановку процессов ) вы можете делать все одной командой:
Подстановка процесса
<( )
на лету создает файл или, если быть точным, дескриптор файла, которыйffmpeg
может читать. Этот файл будет содержать путь к каждому.wav
файлу в текущем каталоге. Мы должны поставить перед ним префикс,$(pwd)
чтобы получить правильный путь относительно вашего текущего каталога, а не относительно файлового дескриптора.Конечно, команда в пределах замены может быть изменена на что-то другое.
источник
Unsafe file name
ошибку, вам понадобится-safe 0
опция раньше-i
. ссылка stackoverflow.com/q/38996925/297679Другой вариант - использовать concat
источник
В Win8 Cmd.EXE .BAT скрипт:
Таким образом, вы не будете беспокоиться об именах исходных файлов или параметре concat-count.
источник
Вы можете использовать
shntool
для wav-файлов.источник