【发布时间】:2017-10-19 19:29:42
【问题描述】:
我在 RAM 中有一个带有临时 wav 文件的 QBuffer,我想让用户在任何时候都可以随意收听它。但是,它只允许播放一次,并且不允许重播。如果我从文件 (QUrl.fromLocalFile) 播放音频,它可以重播它。有什么不同?如何解决?
1) 要从 RAM 播放 wav 文件,我使用以下代码:
data = b""
with open(fname, "rb") as file:
data = file.read()
buf = QBuffer()
buf.setData(data) #For debugging. Real buffer is filled differently.
buf.open(QIODevice.ReadOnly);
self.mediaPlayer=QMediaPlayer(self)
self.mediaPlayer.setMedia(QMediaContent(),buf)
然后,如果我调用self.mediaplayer.play(),它将播放文件到最后。但是,对self.mediaplayer.play() 的所有后续调用均无效。这不是我想要的。
2) 如果我从文件中启动媒体播放器,则:
self.mediaPlayer.setMedia(QMediaContent(QUrl.fromLocalFile("/home/me/myTestApp/test.wav")))
它工作正常 - 如果我在上一次播放结束后调用play(),QMediaPlayer 只会重复播放。
【问题讨论】:
标签: python pyqt pyqt5 qmediaplayer qbuffer