Как объединить файлы [дублировать]

Как было предложено здесь Я использую команду 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, и это то, что я ожидал, но я должен быть уверен эта команда выбирает файлы в возрастающей последовательности.

Могу ли я быть уверен, что вышеуказанная команда всегда объединяет файлы в возрастающей последовательности?

Спасибо, Сэр !

59
задан 12 June 2020 в 17:37

2 ответа

perl -E'say qq(file '\''$_'\'') for <*>' * > file.list && ffmpeg -f concat -safe 0 -i file.list -c copy mybigfile.mp3'
  1. скопируйте эту строку в терминал (где у вас есть perl и ffmpeg) после перехода в папку со всеми файлами, которые вы хотите скопировать
  2. , это приведет к ошибке с "file.list" (потому что "file.list" будет записано в "file.list"-файл), но, несмотря на это, это все равно работает
  3. -все это просто записывает содержимое папки в "file.list"-файл и форматирует его.
  4. после этого он будет объединять файлы в один mp3-файл с ffmpeg
0
ответ дан 2 April 2021 в 00:51

Позвольте мне резюмировать другие ответы:

  • 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
0
ответ дан 2 April 2021 в 00:51

Другие вопросы по тегам:

Похожие вопросы: