Монофоническое воспроизведение Mp3 в Python ИЛИ C ++ - PullRequest
3 голосов
/ 09 ноября 2011

Я кодирую музыкальный проигрыватель на python, используя pyqt, и я хотел, чтобы он включал монофоническое воспроизведение mp3-файлов.

Я достиг этого, используя pygame, поскольку его микшер имеет определенный параметр channels, который я могу установить на 1, чтобы получить монофоническое воспроизведение.

Однако поддержка mp3 в Pygame ограничена , поэтому я ищу библиотеку, которая сможет обрабатывать mp3-файлы и воспроизводить моно.

В настоящее время я использую pyaudiere для воспроизведения, и на сайте есть пример обработки песни перед ее воспроизведением, так что, возможно, я мог бы сделать это, чтобы превратить песню в моно, но у меня действительно есть не знаю, как этого добиться.

Мне нужна помощь по кодированию этой функции с помощью pyaudiere или любой другой библиотеки, которая может обрабатывать mp3-файлы.

EDIT

Я бы также принял решение на C ++, так как я всегда могу создать оболочку Python, используя Boost :: python

Ответы [ 4 ]

4 голосов
/ 13 ноября 2011

Если вам нужна действительно хорошая поддержка Windows, я подозреваю, что вам может понадобиться или вам будет проще использовать другой API для Windows ... проверьте эти ссылки:

РЕДАКТИРОВАТЬ - скорее всего, решение (пока комментарии довольно положительные):

Другой вариант - http://www.un4seen.com/bass.html (будьте осторожны: коммерческий) - он делает все, что вы просили, бесплатен для использования в некоммерческих приложениях и есть оболочка Python (называемая pybass) ...

1 голос
/ 12 ноября 2011

Привязки Python Gstreamer .

Вот очень простой музыкальный проигрыватель:

import gobject
import gst
pipeline = gst.parse_launch('filesrc location="stereo.mp3" ! mad ! audioconvert ! audio/x-raw-int,channels=1 ! autoaudiosink')
pipeline.set_state(gst.STATE_PLAYING)

gobject.threads_init()
gobject.MainLoop().run()

Я действительно предлагаю вам взглянуть на Gstreamer, поскольку он стал де-факто мультимедийным решением для большинства платформ с открытым исходным кодом и поддерживает широкий спектр аудиофайлов. Примеры приложений, использующих его: Rhythmbox, Banshee, Totem и т. Д. ...

1 голос
/ 12 ноября 2011

Рассматривали ли вы Python Audio Tools ?Он имеет возможность загружать MP3 и воспроизводить его, используя класс Player.Инициализатор класса Player принимает объект AudioOutput, который позволяет указать количество каналов воспроизведения.

Проект, похоже, хорошо поддерживается с последним git commit 30 октября 2011 г. (чуть менее чем за две недели до публикации).Это также было вокруг некоторое время, таким образом, это, кажется, не библиотека мухи ночью.

0 голосов
/ 14 ноября 2011

Хотя это даже не близко к полному ответу, чтобы превратить многоканальный аудиофайл wav в монофонический, вы просто получаете среднее значение по всем каналам. В случае стерео у вас будет:

mono[i]=(left[i]+right[i])/2

для каждого образца i.

Надеюсь, это поможет!

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