- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用我现在拥有的代码,我可以成功地播放文件中的 .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
对象初始化; QBuffer
是QIODevice
的子类。也许您需要将 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/
我正在编写一个 PyQt5 应用程序,但我认为这个问题对于 PySide2 和 Qt 也有效。我正在尝试将声音数据(sinuosids)写入缓冲区,然后在无缝循环中播放。但是,当我到达缓冲区末尾并返回
嗨,我认为 QMovie 可以采用 QBuffer 吗?这是我的代码。 a = QByteArray(img) b = QBuffer(a) self.movie = QMovie(b, 'GIF')
我正在编写一个 Qt (4.6) 应用程序,负责从 usb acm 调制解调器设备读取数据。从设备中读取原始二进制和 (ascii) 字符数据的混合。我有一个线程负责在数据可用时不断地将数据从设备读取
我正在尝试通过QTextStream 重复写入/读取QBuffer 对象。首先我构造两个对象: QBuffer b; b.open(QIODevice::ReadWrite); QTextStream
我正在做这样的事情: QImage image(width, height, QImage::Format_RGB32); frame.fill(QColor(255, 255, 255).rgb()
我正在寻找在 C++ Qt5.6 中从 void * data 和 long data_size 创建 QBuffer 的最简单和优雅的方法。 我尝试将 void 转换为 char 指针并使用 QBy
我在 RAM 中有一个 QBuffer ,其中包含一个临时 wav 文件,我想让用户从任意位置收听它,想听多少次就听多少次。但是,它只允许播放一次,不允许重播。如果我播放文件 (QUrl.fromLo
我的目标是创建一个 numpy 数组并将其字节数据转换为 QBuffer。我想知道如何正确设置 DataSize、ByteStride 和 Count。请参阅下面的代码: self.mesh = Qt
使用我现在拥有的代码,我可以成功地播放文件中的 .mp3 数据。但是我需要使用 QtCore.QBuffer(不是来自文件)播放相同的数据。当我使用文档的示例时,它会出现意外类型的 QBuffer 错
我是一名优秀的程序员,十分优秀!