2009-07-04 81 views
7

我一直在尝试用Python来弄清楚Qt的Phonon库。使用Python,PyQt和Phonon播放mp3

我的长期目标是要看到,如果我能得到它的发挥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() 

回答

2

声子支持不同平台上的不同格式的音频文件,使用系统自带的媒体格式的支持,所以它可能是你的系统没有播放MP3文件提供库。当然,某些Linux发行版不支持MP3。如果您使用的是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

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

1

delayedInit方法;创建MediaObject类似以下内容:

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

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

Phonon静默地使用gstreamer或vlc的后端,所以当它不在那里,没有错误,但没有功能。 运行这些命令后,我能够听到声音从我的覆盆子pi

希望这将有助于未来的人。