gpt4 book ai didi

pyqt - 如何在 PyQt Qt 环境中使用 QBuffer 和 Phonon 播放 .mp3

转载 作者:行者123 更新时间:2023-12-02 05:07:30 26 4
gpt4 key购买 nike

使用我现在拥有的代码,我可以成功地播放文件中的 .mp3 数据。但是我需要使用 QtCore.QBuffer(不是来自文件)播放相同的数据。当我使用文档的示例时,它会出现意外类型的 QBuffer 错误!然而......根据文档,这是它应该看到的。

但是......它抛出:

TypeError: Phonon.MediaObject.setCurrentSource(Phonon.MediaSource): argument 1 has unexpected type 'QBuffer'

我使用的代码是(1):

    someBuffer = QtCore.QBuffer()    someBuffer.writeData(TrackData)    mediaObject.setCurrentSource(someBuffer)

我也试过(2):

    someBuffer = QtCore.QBuffer()    mediaObject.setCurrentSource(someBuffer)    someBuffer.writeData(TrackData)

和(3):

    someBuffer = QtCore.QBuffer()    someBuffer.writeData(TrackData)    mediaObject.setCurrentSource(Phonon.MediaSource(someBuffer))

最后一个示例 (3) 抛出一个不同的错误并将我的 Gui 从屏幕上删除 ;-)

     ASSERT: "d->connected" in file /builddir/build/BUILD/phonon-4.5.1/phonon/streaminterface.cpp, line xxxx 

注意:
TrackData 包含 mp3 数据,当我将其写入文件并将其用作 mediaObject.setCurrentSource(Phonon.MediaSource())I 的资源时,它可以正常播放还尝试了 QByteArray,但这会导致相同的“意外 QBuffer”错误。更准确地说,我提供给 setCurrentSource 的所有内容都不被接受。尝试了一个字符串(错误为意外类型的字符串),尝试了 QBuffer(错误为意外类型的 QBuffer),尝试了 QByteArray(错误为意外类型的 QByteArray)。

顺便说一句:我在 Linux 上运行 Qt、PyQt。

有任何想法吗??

最佳答案

来自PyQt文档,它看起来像 setCurrentSource 需要一个 MediaSource 对象。 MediaSource 对象可以用QIODevice 对象初始化; QBufferQIODevice 的子类。也许您需要将 QBuffer 包装在 MediaSource 中:

someBuffer = QtCore.QBuffer()
someBuffer.writeData(TrackData)
sourceWrapper = Phonon.MediaSource(someBuffer)
mediaObject.setCurrentSource(sourceWrapper)

文档似乎建议您不需要这样做,应该隐式构造 MediaSource 对象。我认为他们可能是错的。我刚刚做了一个快速测试:在 QBuffer 上调用 setCurrentSource 引发了一个错误,就像你遇到的那样。但是,将其包装在 MediaSource 中并调用 setCurrentSource 效果很好。

关于pyqt - 如何在 PyQt Qt 环境中使用 QBuffer 和 Phonon 播放 .mp3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9515345/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com