【问题标题】:Play a sound with QAudioOutput in PyQt在 PyQt 中使用 QAudioOutput 播放声音
【发布时间】:2013-07-24 07:25:58
【问题描述】:

我的应用程序应该可以在 Windows 和 Linux(Ubuntu) 上运行。所以我必须重新实现我的通知声音,因为 QSound 在 Ubuntu 下不起作用。 我正在尝试使用 QAudioOutput。

我无法使用此代码运行它,而且我不明白我必须做什么。你有什么建议吗?或者也许是适用于两种操作系统的另一个想法?

from PyQt4.QtGui import QApplication
import sys
from PyQt4.QtMultimedia import QAudioOutput, QAudioFormat
from PyQt4.QtCore import QFile, QIODevice


app=QApplication(sys.argv) #1st Edit

output=QAudioOutput()

soundFile=QFile()
soundFile.setFileName("C:\\Users\\delete_2.wav")
soundFile.open(QIODevice.ReadOnly)

output.start(soundFile)

app.exec_()                #1st Edit

【问题讨论】:

  • 你可以导入这样的东西:app.addLibraryPath(r"C:/Users/Χρήστος/AppData/Local/Programs/Python/Python38/Lib/site-packages/pyqt5_tools/Qt/plugins") app.addLibraryPath(r"C:/Users/Χρήστος/AppData/Local/Programs/Python/Python38/lib/site-packages/PyQt5/Qt/plugins")

标签: python qt audio


【解决方案1】:

我不知道这是否是唯一的问题,但您当然需要创建一个QApplication 对象并启动主事件循环。将此添加到程序的开头:

app = QApplication()

将此添加到程序的末尾:

app.exec_()

【讨论】:

    【解决方案2】:

    行后:

    app = QApplication(sys.argv)
    

    (在“输出”的定义之前)插入这些行:

    format = QAudioFormat()  # 2nd Edit
    format.setChannels(1)  # 2nd Edit
    format.setFrequency(22050)  # 2nd Edit
    format.setSampleSize(16)  # 2nd Edit
    format.setCodec("audio/pcm")  # 2nd Edit
    format.setByteOrder(QAudioFormat.LittleEndian)  # 2nd Edit
    format.setSampleType(QAudioFormat.SignedInt)  # 2nd Edit
    

    替换

    output = QAudioOutput()
    

    output = QAudioOutput(format)  #2nd Edit
    

    这适用于我在 Windows 上,但现在我没有安装 linux 发行版来测试该操作系统中的代码,无论如何我希望它适用于两个操作系统。

    【讨论】:

      【解决方案3】:

      这些方法发生了变化:

      format.setChannels(1) 更改为format.setChannelCount(1)

      format.setFrequency(22050) 更改为format.setSampleRate(22050)

      this

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-12
        • 1970-01-01
        • 2014-08-15
        • 2014-04-01
        相关资源
        最近更新 更多