0

我的应用程序应该可以在 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
4

3 回答 3

1

行后:

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

于 2013-07-29T19:53:13.697 回答
1

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

app = QApplication()

将此添加到程序的末尾:

app.exec_()
于 2013-07-24T07:44:35.953 回答
0

这些方法发生了变化:

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

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

看到这个

于 2018-10-22T07:59:27.163 回答