Библиотека Python для преобразования файлов в MP3 и настройки их качества - PullRequest
15 голосов
/ 07 августа 2009

Я пытаюсь найти библиотеку Python, которая будет брать аудиофайл (например, .ogg, .wav) и конвертировать его в mp3 для воспроизведения на веб-странице.

Кроме того, любые идеи по настройке качества воспроизведения будут отличными.

Спасибо.

Ответы [ 6 ]

36 голосов
/ 12 сентября 2012

Я написал библиотеку , предназначенную для этого = D

from pydub import AudioSegment
AudioSegment.from_file("/input/file").export("/output/file", format="mp3")

Легко!

чтобы указать битрейт, просто используйте bitrate kwarg…

from pydub import AudioSegment
sound = AudioSegment.from_file("/input/file")
sound.export("/output/file", format="mp3", bitrate="128k")
4 голосов
/ 08 августа 2009

Я использую привязки Python для gstreamer. Начать немного сложно, но как только вы начнете, почти все возможно.

Из командной строки (из документации gstreamer ):

gst-launch -v filesrc location=music.wav ! decodebin ! audioconvert ! audioresample ! lame bitrate=192 ! id3v2mux ! filesink location=music.mp3

Ввод filesrc location=... может быть любым, что может играть gstreamer, а не только .wav. Вы можете добавить что-то, называемое фильтром заглавных букв, для повторной выборки с определенной скоростью перед кодированием.

В вашей программе на Python вы должны использовать gst.parse_launch(...), получить элементы filesrc и filesink, а также установщики вызовов для изменения имен входных и выходных файлов.

3 голосов
/ 07 августа 2009

Кроме того, Python Audio Tools должен иметь возможность выполнять эту работу с меньшими потребностями в других библиотеках, что может быть проще, если вы делаете это на общей учетной записи веб-хостинга. (Но по общему признанию я не пробовал это, таким образом, я не могу подтвердить, насколько это полезно.)

3 голосов
/ 07 августа 2009

Похоже, что PyMedia делает это:

http://pymedia.org/

и дополнительная информация о преобразовании в различные форматы при настройке битрейта:

http://pymedia.org/tut/recode_audio.html

, например

params= {
'id': acodec.getCodecId('mp3'),
'bitrate': r.bitrate,
'sample_rate': r.sample_rate,
'ext': 'mp3',
'channels': r.channels }
enc= acodec.Encoder( params )
2 голосов
/ 26 августа 2009

Вы можете использовать модуль ctypes для вызова функций непосредственно из динамических библиотек. Он не требует установки внешних библиотек Python и имеет лучшую производительность, чем инструменты командной строки, но его обычно сложнее реализовать (плюс, конечно, вам нужно предоставить внешнюю библиотеку).

1 голос
/ 08 августа 2009

Другой вариант, позволяющий избежать установки модулей Python для этой простой задачи, заключается в том, чтобы просто выполнить "lame" или другой кодировщик командной строки из скрипта Python (с модулем popen.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...