Подтвердить что ты не робот

Библиотека Python для разделения и объединения mp3 файлов

Существует множество библиотек для работы с mp3-тегами, но мне нужно всего лишь 2 функции - разделить mp3 файл на 2 части, а второй - на слияние 5 mp3.

Вы можете что-нибудь предложить? Спасибо!

4b9b3361

Ответ 1

Я написал библиотеку (pydub) почти для этого прецедента:

from pydub import AudioSegment

sound = AudioSegment.from_mp3("/path/to/file.mp3")

# len() and slicing are in milliseconds
halfway_point = len(sound) / 2
second_half = sound[halfway_point:]

# Concatenation is just adding
second_half_3_times = second_half + second_half + second_half

# writing mp3 files is a one liner
second_half_3_times.export("/path/to/new/file.mp3", format="mp3")

Ответ 2

Посмотрите структуру файлов MP3 в Википедии. Используйте бинарный режим чтения в python для редактирования файла MP3. s = open(file_name, 'rb').read() помещает весь файл в строковый объект, представляющий необработанные байты в вашем файле (например, \xeb\xfe\x80). Затем вы можете выполнять поиск и редактирование строки, обращаясь к смещениям байта с помощью делений с помощью скобок: s[n]. Наконец, просто сделайте двоичную запись фреймов MP3, которые вы хотите в своих новых файлах, добавив заголовок ID3 в набор фреймов, который вы хотите создать каждый файл.

Ответ 4

используйте команду разделения unix:

split -b 200k file.mp3 output_

это приведет к выходу output_a, output_b, output_c,..

вы можете получить mp3 файлы, просто переименовав

for file in ./output_*; do mv "$file" "$(basename $file).mp3"; done

это выведет output_a.mp3, output_b.mp3, output_c.mp3... все из них (кроме последнего, могут быть) размером 200kb, а общий размер output_x совпадает с файлом. mp3

вы можете использовать команду du (использование диска), чтобы получить номер файла байта, а затем решить, сколько байтов вырезать.

du -sh file.mp3

то для соединения используйте команду cat:

cat output_2.mp3 output_3.mp3 output_4.mp3 > output.mp3

конечно, вы можете поместить все это в оболочку script и вызвать ее из python.