Существует множество библиотек для работы с mp3-тегами, но мне нужно всего лишь 2 функции - разделить mp3 файл на 2 части, а второй - на слияние 5 mp3.
Вы можете что-нибудь предложить? Спасибо!
Существует множество библиотек для работы с mp3-тегами, но мне нужно всего лишь 2 функции - разделить mp3 файл на 2 части, а второй - на слияние 5 mp3.
Вы можете что-нибудь предложить? Спасибо!
Я написал библиотеку (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")
Посмотрите структуру файлов MP3 в Википедии. Используйте бинарный режим чтения в python для редактирования файла MP3. s = open(file_name, 'rb').read()
помещает весь файл в строковый объект, представляющий необработанные байты в вашем файле (например, \xeb\xfe\x80
). Затем вы можете выполнять поиск и редактирование строки, обращаясь к смещениям байта с помощью делений с помощью скобок: s[n]
. Наконец, просто сделайте двоичную запись фреймов MP3, которые вы хотите в своих новых файлах, добавив заголовок ID3 в набор фреймов, который вы хотите создать каждый файл.
Отметьте GStreamer и его оболочку Python Gst-Python.
используйте команду разделения 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.