среда, 27 апреля 2011 г.

Соединение mp3-файлов в один

Понадобилось совершить простую задачу: объединить несколько mp3-файлов в один без перекодирования и сохранения тэгов (на англ. это названия mp3 wrapping или mp3 joining или mp3 merging). Поиск был нелёгким. Ну простой способ запустить Audacity и Copy-Paste не рассматриваем, это потребует перекодирования и не command line. Также рекомендовалось взять cat и просто склеить файлы, а потом прогнать через ffmpeg или mencoder для коррекции структуры файла. Увы, идеального способа я так и не нашёл.

Для разделения на части есть программа mp3splt, я нашёл её и в Ubuntu и в ALT Linux. Для соединения нашлось две программы: eyed3 из пакета qualcom (написана в 2001 году и собирается только в Ubuntu, причём патчи по объёму уже больше самой программы) и mp3wrap, о котором я прочитал в мане про mp3splt (надеясь, что уж про программу обратного действия там упомянут). mp3wrap в ALT Linux не оказалось, в связи с чем пришлось её отправить в Сизиф. Правда выяснилось, что она заворачивает отдельные в файлы в один в виде фреймов, то есть по сути архивирует. Если посмотреть потом результат с помощью mp3wrap -l файл, то виден список фреймов (с названиями исходных файлов).

Результат пока не покорил — у меня получился файл в два раза меньше по размеру, чем исходные файлы... :( Может, есть ещё варианты?

2 комментария:

thresh комментирует...

vlc -I dummy -vvv --sout-keep 1.mp3 2.mp3 3.mp3 --sout '#gather:std{access=file,mux=raw,dst=foo.mp3}'

afiskon комментирует...

На хабре относительно недавно была заметка (кажется, в Python-блоге) о том, как использовать синтезатор голоса Google. Там текст нарезался на куски, посылался на translate.google.com, скачивалсь mp3, потом склеивались. Код довольно простой - типа выризать заголовки (первые N байт) и дописать в конец основного файла.