2009-07-04 83 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

希望這將有助於未來的人。