在PyQt中使用QAudioOutput播放声音

时间:2013-07-24 07:25:58

标签: python qt audio

我的应用程序应该适用于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

3 个答案:

答案 0 :(得分:1)

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

app = QApplication()

将此添加到程序的末尾:

app.exec_()

答案 1 :(得分:1)

行后:

app = QApplication(sys.argv)

(在'output'定义之前)插入以下行:

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发行版来测试该操作系统中的代码,无论如何我希望它在两个操作系统中都能正常工作。

答案 2 :(得分:0)

这些方法发生了变化:

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

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

请参见this