python - 处理来自 QAudioProbe 的信号
问题描述
我正在尝试接收来自 QAudioProbe 的 audioBufferProbed 信号的信号。我已经尝试过连接功能,但我没有正确使用它。我想在媒体播放时将信号值打印到控制台。
我正在使用 Python3 和 PySide2 (Qt 5.15)。
#!/bin/python3
from PySide2.QtMultimedia import QMediaPlayer, QMediaContent, QAudioProbe
from PySide2.QtCore import QUrl, QCoreApplication, QObject, Signal
import sys
def main():
app = QCoreApplication()
player = QMediaPlayer()
url = QUrl.fromLocalFile("/home/ubuntu/Downloads/sample2.mp3")
content = QMediaContent(url)
player.setMedia(content)
player.setVolume(50)
# probe = QAudioProbe()
# probe.setSource(player)
# QObject.connect(probe, Signal(audioBufferProbed(QAudioBuffer)), processProbe)
player.play()
ret = app.exec_()
sys.exit(ret)
def processProbe(probe):
print(probe)
if __name__ == "__main__":
main()
解决方案
您必须使用 PySide2(以及 PyQt5)的语法是sender.signal.connect(receiver.slot)
:
#!/bin/python3
from PySide2.QtMultimedia import QMediaPlayer, QMediaContent, QAudioProbe
from PySide2.QtCore import QUrl, QCoreApplication, QObject, Signal
import sys
def main():
app = QCoreApplication()
player = QMediaPlayer()
url = QUrl.fromLocalFile("/home/ubuntu/Downloads/sample2.mp3")
content = QMediaContent(url)
player.setMedia(content)
player.setVolume(0)
probe = QAudioProbe()
probe.setSource(player)
probe.audioBufferProbed.connect(processProbe)
player.play()
ret = app.exec_()
sys.exit(ret)
def processProbe(buff):
print(buff.startTime())
if __name__ == "__main__":
main()
推荐阅读
- cypress - 如何在 Cypress 中获取隐藏元素的 HTML?
- java - 底部导航菜单 onClick 图标选择
- c# - 使用 wpf 按子类别过滤订单表
- android - 错误:Android Gradle 插件仅支持 Butterknife Gradle 插件版本 9.0.0-rc2 及更高版本
- php - 无法将数据库中的字段加载到组合框
- javascript - 有没有办法创建一条从时间轴上的标记到文本的线?
- python-3.x - 分别设置两个直方图的颜色时遇到问题
- python - 使用变量代替控制和值pywinauto
- arduino - 如何让数字输出引脚正常工作
- python - 在python中转换列表