我一整天都在尝试使用Python解决Qt的Phonon库问题。
我的长期目标是看看能否使其播放mms://流,但由于我找不到任何已经实现的方案,所以我将自己解决这部分内容。(如果有人对此特别了解,那么请告诉我,如果没有也没关系。)
无论如何,我想从我在网上找到的工作示例开始倒推。这会启动一个文件浏览器并播放指定的mp3文件。我想剥离掉文件浏览器部分,将其简化为执行脚本并使用硬编码路径播放Mp3文件的基本要素。
我认为我的问题是setCurrentSource()和指定数据类型的误解。(参见:http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/phonon-mediasource.html#fileName)
我保持我的问题有点宽泛,因为任何有关理解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()