【发布时间】:2021-03-01 05:33:02
【问题描述】:
Qt 文档 (https://doc.qt.io/qtforpython-5/PySide2/QtMultimedia/QAudioBuffer.html) 说我们应该像这样从 QAudioProbe 读取缓冲区:
// With a 16bit sample buffer:
quint16 *data = buffer->data<quint16>(); // May cause deep copy
这是 C++,但我需要用 Python 编写。
我不知道如何使用 Qt quint16 数据类型,甚至不知道如何导入它。
这是我的完整代码:
#!/bin/python3
from PySide2.QtMultimedia import QMediaPlayer, QMediaContent, QAudioProbe, QAudioBuffer
from PySide2.QtCore import QUrl, QCoreApplication, QObject, Signal, Slot
import sys
def main():
app = QCoreApplication()
player = QMediaPlayer()
url = QUrl.fromLocalFile("/home/ubuntu/sound.wav")
content = QMediaContent(url)
player.setMedia(content)
player.setVolume(50)
probe = QAudioProbe()
probe.setSource(player)
probe.audioBufferProbed.connect(processProbe)
player.play()
def processProbe(probe):
print(probe.data())
if __name__ == "__main__":
main()
输出:
shiboken2.shiboken2.VoidPtr(Address 0x2761000, Size 0, isWritable False)
shiboken2.shiboken2.VoidPtr(Address 0x2761000, Size 0, isWritable False)
shiboken2.shiboken2.VoidPtr(Address 0x2761000, Size 0, isWritable False)
shiboken2.shiboken2.VoidPtr(Address 0x2761000, Size 0, isWritable False)
...
【问题讨论】:
-
使用
print(probe.data().toBytes())但根据您显示的日志,它的数据大小为 0。 -
这令人失望。你知道在 PySide2/Python 中显示 WAV 文件响度级别的其他方法吗?
-
我有同样的问题,我尝试使用那个 byte_array = (ctypes.c_uint8 * length_array).from_address(buff.constData().__int__()) 但没有结果
-
@devdev 评论该错误以引起开发者的关注
标签: python qt qt5 pyside pyside2