【问题标题】:Play mp3 using Python, PyQt, and Phonon使用 Python、PyQt 和 Phonon 播放 mp3
【发布时间】:2010-11-08 03:51:50
【问题描述】:

我整天都在尝试用 Python 找出 Qt 的 Phonon 库。

我的长期目标是看看我是否可以让它播放 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()

【问题讨论】:

    标签: python pyqt media phonon


    【解决方案1】:

    Phonon 在不同平台上支持不同的音频文件格式,使用系统自己对媒体格式的支持,因此可能是您的系统没有提供播放 MP3 文件的库。当然,某些 Linux 发行版不支持开箱即用的 MP3。如果您使用的是 Linux,请查看以下页面以获取有关启用 MP3 支持的信息:

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

    诊断 Phonon 媒体格式问题的另一种方法是运行 Qt 提供的 Capabilities 示例:

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

    这应该告诉您系统支持哪些媒体格式。

    【讨论】:

      【解决方案2】:

      delayedInit 方法中;创建MediaObject,如下所示:

      def delayedInit(self):
          if not self.m_media:
             self.m_media = Phonon.createPlayer(Phonon.MusicCategory)
      

      【讨论】:

        【解决方案3】:

        如果 Phonon 没有输出音频或视频,但没有抛出任何错误。您可能只需要sudo apt-get install phonon-backend-gstreamer 也可能需要sudo apt-get install libphonon-dev

        Phonon 静默使用 gstreamer 或 vlc 的后端,因此当它不存在时,不会出现错误但也没有功能。 运行这些命令后,我能够在我的树莓派上听到声子的声音

        希望这对将来的某人有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-01-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-20
          • 1970-01-01
          • 2017-06-29
          相关资源
          最近更新 更多