Как было предложено здесь Я использую команду cat
для объединения нескольких файлов .mp3 в один файл .mp3.
Представьте, у меня в текущей папке есть следующие файлы .mp3:
001001.mp3 001002.mp3 001003.mp3 001004.mp3 001005.mp3
или, например,
096001.mp3 096002.mp3 096003.mp3 096004.mp3
Мне нужно объединить эти файлы .mp3 в восходящую последовательность, то есть 001001.mp3 + 001002. mp3 + 001003.mp3 + и т. д.
Чтобы объединить эти файлы .mp3 в один, я выполняю следующую команду в текущей папке:
cat *.mp3 > final.mp3
Я протестировал окончательный файл .mp3, и это то, что я ожидал, но я должен быть уверен эта команда выбирает файлы в возрастающей последовательности.
Могу ли я быть уверен, что вышеуказанная команда всегда объединяет файлы в возрастающей последовательности?
Спасибо, Сэр !
perl -E'say qq(file '\''$_'\'') for <*>' * > file.list && ffmpeg -f concat -safe 0 -i file.list -c copy mybigfile.mp3'
perl
и ffmpeg
) после перехода в папку со всеми файлами, которые вы хотите скопироватьffmpeg
Позвольте мне резюмировать другие ответы:
mp3wrap
объединяет файлы mp3 в специальный формат «конкатенированных файлов mp3», который работает быстрее, потому что не требует перекодирования, но имеет недостаток в том, что обычный мп3 файл с длиной и тд.
ffmpeg -i "concat: file1.mp3 | file2.mp3" -acodec copy output.mp3
является громоздким для ввода, но должен работать хорошо, так как это стандартная команда, используемая, например, для соединения видеофайлов. Однако в моем тестировании он вызывает сбои при переходах входных файлов.
sox file1.mp3 file2.mp3 target.mp3
должен работать отлично, конечно, намного легче набирать, но он также приводит к сбоям в моем тестировании.
Даже когда я использую sox
для первого преобразования каждого файла .mp3 в .wav, а затем sox file1.wav file2.wav target.wav
, вывод содержит слышимые глюки.
Однако, если я использую mpg123
для декодирования файлов mp3 в .wav, то я могу присоединить файлы .wav с помощью Sox и не слышать глюков. Это говорит о том, что проблема с sox
(и, возможно, ffmpeg
) заключается в декодировании файлов mp3.
mp3cat
явно отлично работает, но мне было лень тестировать его, так как его нет в репозитории моего дистрибутива.
Любопытно, что никто еще не упомянул mpg123
. Несмотря на то, что на ранних этапах своей более чем 20-летней истории его беспокоили проблемы с безопасностью и лицензией , он является одним из первых mp3-плееров и должен быть достаточно стабильным.Поскольку он автоматически объединяет свои аргументы в формате mp3 (без сбоев) перед отправкой их на звуковую карту, нам просто нужно использовать параметр -w
, чтобы указать ему вместо этого вывод в файл Wave. Затем lame
кодирует это обратно в mp3. Вот сценарий, который выполняет это:
#!/bin/bash
FILES=("$@")
OUTPUT=$(mktemp -t mp3-concat.XXXXXX.mp3 -u)
WAVE=$(mktemp -t mp3-concat.XXXXXX.wav -u)
mpg123 -w $WAVE ${FILES[@]}
lame $WAVE $OUTPUT
cat $OUTPUT
rm $WAVE $OUTPUT
Пример использования:
$ mp3-concat file1.mp3 file2.mp3 > joined.mp3