Воспроизведение mp3 с использованием Python, PyQt и Phonon

Я весь день пытался разобраться с библиотекой Qt Phonon с помощью Python.

Моя долгосрочная цель - посмотреть, смогу ли я заставить его воспроизводить поток mms://, но, поскольку я нигде не могу найти реализацию этого, я разберусь с этой частью сам. (подумал, что выложил бы его там, если бы кто-нибудь знал об этом больше, если не в этом нет ничего страшного.)

Во всяком случае, я решил, что буду работать в обратном направлении от рабочего примера, который я нашел в Интернете. Это запускает файловый браузер и воспроизводит указанный mp3-файл. Я хотел избавиться от файлового браузера и перейти к основным задачам выполнения скрипта и воспроизведения файла Mp3 с жестко заданным путем.

Я предполагаю, что моя проблема заключается в непонимании setCurrentSource() и указании типов данных. (см.: http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/phonon-mediasource.html#fileName)

Я держу свой вопрос довольно широким, потому что ЛЮБАЯ помощь в понимании Phonon будет очень признательна.

import sys

from PyQt4.QtGui import QApplication, QMainWindow, QDirModel, QColumnView
from PyQt4.QtGui import QFrame
from PyQt4.QtCore import SIGNAL
from PyQt4.phonon import Phonon

class MainWindow(QMainWindow):

    m_model = QDirModel()

    def __init__(self):
        QMainWindow.__init__(self)
        self.m_fileView = QColumnView(self)
        self.m_media = None

        self.setCentralWidget(self.m_fileView)
        self.m_fileView.setModel(self.m_model)
        self.m_fileView.setFrameStyle(QFrame.NoFrame)

        self.connect(self.m_fileView,
            SIGNAL("updatePreviewWidget(const QModelIndex &)"), self.play)

    def play(self, index):
        self.delayedInit()
        self.m_media.setCurrentSource(
            Phonon.MediaSource(self.m_model.filePath(index)))
        self.m_media.play()

    def delayedInit(self):
        if not self.m_media:
            self.m_media = Phonon.MediaObject(self)
            audioOutput = Phonon.AudioOutput(Phonon.MusicCategory, self)
            Phonon.createPath(self.m_media, audioOutput)

def main():
    app = QApplication(sys.argv)
    QApplication.setApplicationName("Phonon Tutorial 2 (Python)")
    mw = MainWindow()
    mw.show()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()

person KeyboardInterrupt    schedule 04.07.2009    source источник


Ответы (3)


Phonon поддерживает различные форматы аудиофайлов на разных платформах, используя собственную системную поддержку форматов мультимедиа, поэтому может случиться так, что ваша система не предоставляет библиотеки для воспроизведения файлов MP3. Конечно, в некоторых дистрибутивах Linux MP3 не поддерживается «из коробки». Если вы используете Linux, ознакомьтесь со следующей страницей для получения информации о включении поддержки MP3:

http://doc.qt.io/qt-4.8/phonon-overview.html#linux

Еще один способ диагностировать проблемы с медиаформатами Phonon — запустить пример Capabilities, поставляемый с Qt:

http://doc.qt.io/qt-4.8///qt-phonon-capabilities-example.html

Это должно сказать вам, какие форматы мультимедиа поддерживаются вашей системой.

person David Boddie    schedule 12.07.2009

В методе delayedInit; создайте MediaObject следующим образом:

def delayedInit(self):
    if not self.m_media:
       self.m_media = Phonon.createPlayer(Phonon.MusicCategory)
person Gökmen    schedule 01.04.2010

Если Phonon не выводит аудио или видео, но не выдает никаких ошибок. Возможно, вам просто нужно sudo apt-get install phonon-backend-gstreamer, а также, возможно, sudo apt-get install libphonon-dev

Phonon молча использует бэкенд gstreamer или vlc, поэтому, когда его нет, ошибок нет, но и функциональности тоже нет. после запуска этих команд я смог услышать звук от фонона на моем Raspberry Pi

Надеюсь, это поможет кому-то в будущем.

person Prophacy    schedule 03.11.2017