使用Python,PyQt的,并且声子播放mp3(Play mp3 using Python, Py

2019-07-29 15:57发布

我一直在试图整天找出Qt的使用Python声子库。

我的长期目标是要看到,如果我能得到它的发挥MMS://流,但因为我无法找到的这个任何地方进行的实现,我将人物的那部分自己。 (想我会放在那里,如果有人知道更多关于这个具体地讲,如果不是没什么大不了的。)

无论如何,我想我会从一个工作的例子,我在网上找到向后工作。 这将启动文件浏览器,将发挥指定的MP3文件。 我想带出的文件浏览器的东西,并把它降低到执行脚本并让它播放MP3文件用硬编码路径的要领。

我假设我的问题是setCurrentSource的误解()和指定的数据类型。 (参见: http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/phonon-mediasource.html#fileName )

我保持我的问题种类广泛,因为与理解声子任何帮助,将不胜感激。

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()

Answer 1:

声子支持不同平台上的不同格式的音频文件,使用系统自带的媒体格式的支持,所以它可能是你的系统没有播放MP3文件提供库。 当然,MP3,而在一些Linux发行版支持开箱即用。 如果您使用的是Linux,请看一看关于启用MP3支持信息如下页面:

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

诊断与声子的媒体格式问题的另一种方法是运行Qt提供的功能例如:

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

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



Answer 2:

delayedInit方法; 创建MediaObject像以下:

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


Answer 3:

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

声子使用的GStreamer或者VLC的后台默默的,所以当它不存在,没有错误,但没有任何功能。 运行这些命令后,我能听到我的树莓派从声子的声音

希望这将帮助别人的未来。



文章来源: Play mp3 using Python, PyQt, and Phonon