Я пытаюсь найти библиотеку Python, которая возьмет аудиофайл (например,.ogg,.wav) и преобразует его в mp3 для воспроизведения на веб-странице.
Кроме того, любые мысли о настройке качества воспроизведения будут отличными.
Спасибо.
Я пытаюсь найти библиотеку Python, которая возьмет аудиофайл (например,.ogg,.wav) и преобразует его в mp3 для воспроизведения на веб-странице.
Кроме того, любые мысли о настройке качества воспроизведения будут отличными.
Спасибо.
Похоже, PyMedia делает это:
и еще несколько сведений о конвертации в различные форматы при настройке битрейта:
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 )
Я написал библиотеку, предназначенную для этого = 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")
Я использую привязки 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 и настроить сеттеры для изменения входных и выходных имен файлов.
Кроме того, Python Audio Tools должен выполнять работу с меньшей потребностью в других библиотеках, что может быть проще, сделав это на общей учетной записи веб-хостинга. (Но, по общему признанию, я не пробовал, поэтому не могу подтвердить, насколько он полезен.)
Вы можете использовать модуль ctypes для вызова функций непосредственно из динамических библиотек. Он не требует установки внешних Python-библиотек, и он имеет лучшую производительность, чем инструменты командной строки, но его обычно сложнее реализовать (плюс, конечно, вам необходимо предоставить внешнюю библиотеку).
Другой вариант, чтобы избежать установки модулей Python для этой простой задачи, - это просто "lame" или другой кодер командной строки из Python script (с помощью всплывающего модуля.)