我花了一整天的时间想用Python找出Qt的声子库。
我的长期目标是看看我是否能让它播放一个mms://stream,但由于我找不到任何地方可以实现这一点,我会自己解决这一部分。(我想如果有人更具体地知道这件事,如果不是什么大不了的话,我会把它放在那里。)
不管怎样,我想我应该从网上找到的一个有效的例子开始反向工作。这将启动文件浏览器并播放指定的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()
在
delayedInit
方法中;创建MediaObject
,如下所示:Phonon在不同的平台上支持不同的音频文件格式,使用系统本身对媒体格式的支持,因此可能是您的系统不提供播放MP3文件的库。当然,MP3在一些Linux发行版上是不受支持的。如果您使用的是Linux,请查看以下页面以了解有关启用MP3支持的信息:
http://doc.qt.io/qt-4.8/phonon-overview.html#linux
诊断Phonon媒体格式问题的另一种方法是运行Qt提供的功能示例:
http://doc.qt.io/qt-4.8///qt-phonon-capabilities-example.html
这将告诉您系统支持哪些媒体格式。
如果声子不输出音频或视频,但不抛出任何错误。你可能只需要
sudo apt-get install phonon-backend-gstreamer
,也可能sudo apt-get install libphonon-dev
Phonon静默地使用gstreamer或vlc的后端,所以当它不存在时,没有错误,但也没有功能。 在执行这些命令之后,我能听到树莓皮上的声子发出的声音
希望这对将来的人有帮助。
相关问题 更多 >
编程相关推荐