Как было предложено здесь, я использую команду 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+etc.
Чтобы присоединиться к этим .mp3-файлам в один, я выполняю следующую команду в текущей папке:
cat *.mp3 > final.mp3
I протестировал окончательный файл .mp3, и это то, чего я ожидаю, но я должен быть уверен, что над командой выбирает файлы в восходящей последовательности.
Могу ли я быть уверенным, что команда выше всегда объединяет файлы в восходящей последовательности?
Спасибо, сэр!
mp3wrap кажется достаточно приличным решением, но когда я играл в результирующий файл, метка времени была неправильной. Похоже, что mp3wrap лучше всего использовать, когда вы присоединяетесь к mp3-файлам в файл, который, как вы знаете, вам захочется разбить позже.
Я просто хотел навсегда конкатенировать некоторые mp3-файлы. Я закончил использование ffmpeg для конкатенации файлов:
Сначала установите ffmpeg Ubuntu 15.04+sudo apt install ffmpeg
Ubuntu 14.10 и ниже Перейдите по адресу http://ffmpeg.org/download.html, загрузите один из статических строит, разворачивает и копирует в / usr / local / bin ffmpeg -i "concat:file1.mp3|file2.mp3" -acodec copy output.mp3 Дополнительная информация: mp3wrap https://superuser.com/a/314245
Как было предложено ранее, mp3wrap является хорошим решением. Возможно, он не работает все время. Насколько мне известно, mp3wrap предполагает, что все входные файлы имеют такие же характеристики, как VBR vs CBR, bitrate и т. Д. Если это предположение не будет выполнено, оно, скорее всего, потерпит неудачу. В этом случае единственным решением было бы декодировать все mp3-файлы в необработанный формат, например .wav, объединить их с программой, подобной sox, и закончить путем перекодирования всего в mp3.
Он выполняет алфавитную сортировку, основанную на одиночных символах. Это означает, что «01» доходит до «1», так как naught имеет меньшее значение, чем одно.
Вот пример. У меня есть каталог с файлами с именами 1, 2, 3, 04, 05 и 06. Это текстовые файлы, содержащие их собственные имена файлов:
test$ cat *
04
05
06
1
2
3
Итак, да, это будет; но вы должны убедиться, что все ваши файлы «заполнены» правильно.
Эта отличная строка сценария bash позволит вам визуально сравнить имена файлов, что очень легко выявить любые ошибки:
for f in $(ls); do printf "%05s\n" "$f"; done
Результат будет выглядеть так:
04
05
06
1
2
3
Если это не так, вам нужно будет поместить имена файлов: yes в StackOverflow объясняет, как это сделать.
Edit. Голосуйте за ответ Оли, это намного лучше. : PI оставит мое, потому что он что-то добавит, но вы должны использовать его решение,
mp3wrap output.mp3 `ls -1 *.mp3 | sort`
Имейте в виду, что sort все равно будет сортировать вещи так, как я описал выше, вам все равно понадобятся для заполнения имен файлов, если они не равны по длине.
Я нашел, что аудио-столик онлайн-сервиса работает очень хорошо и сохраняет правильную отметку времени (вопреки mp3wrap).
Большинство людей предлагают mp3wrap, но у него есть минусы: созданный файл не сообщает о своей полной длине в некоторых игроках, а затем вы не можете искать это.
mp3cat делает насколько я могу судить, работа быстро и хорошо. Его можно скачать в http://mulholland.xyz/dev/mp3cat/ и использовать следующим образом:
mp3cat file1.mp3 file2.mp3 file3.mp3
другой возможностью будет sox
sudo apt-get install sox libsox-fmt-mp3
sox file1.mp3 file2.mp3 target.mp3
но он кажется очень медленным (возможно, он декодирует и переписывает аудио?)
Вы можете попробовать использовать специальную программу редактирования аудио (например, Audacity)
Мне нравится комментарий bmaupin, но он может создавать натуральные номера (версии) с помощью sort -V:
find . -maxdepth 1 -iname '*.mp3' -print0 | sort -Vz | xargs -0 mp3wrap ../tmp.mp3
, и вам не нужно иметь дело со специальными символами, такими как ' " () [] {} в имени файла.