Библиотека Python для преобразования файлов в MP3 и настройки их качества

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

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

Спасибо.

Ответ 1

Похоже, 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

Я написал библиотеку, предназначенную для этого = 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")

Ответ 3

Я использую привязки 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 и настроить сеттеры для изменения входных и выходных имен файлов.

Ответ 4

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

Ответ 5

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

Ответ 6

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