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