【发布时间】:2020-03-24 02:38:17
【问题描述】:
我正在尝试从 qrc 文件加载 QSound 文件,但我找不到方法。有可能吗?
类似:
sound = QSound(":/audio/my_sound.ogg")
sound.play()
与像素图不同,此语法不适用于音频。
我将使用 pyinstaller 来打包脚本,如果有办法将声音文件也包含在 exe 中,那将会很有用。
【问题讨论】:
标签: python pyqt pyqt5 pyinstaller
我正在尝试从 qrc 文件加载 QSound 文件,但我找不到方法。有可能吗?
类似:
sound = QSound(":/audio/my_sound.ogg")
sound.play()
与像素图不同,此语法不适用于音频。
我将使用 pyinstaller 来打包脚本,如果有办法将声音文件也包含在 exe 中,那将会很有用。
【问题讨论】:
标签: python pyqt pyqt5 pyinstaller
首先确保您可以播放 ogg 文件...在我的系统上,ogg 文件出现控制台错误...ogg 资源也是如此
QSound.play("my_sound.ogg") # Error decoding source file:my_sound.ogg
QSound.play(":/audio/my_sound.ogg") # Error decoding source file::/audio/my_sound.ogg
使用 wav 文件对我有用,因此它验证 QSound 确实可以从资源中播放。
import sys
from PyQt5.QtCore import QCoreApplication, QFile
from PyQt5.QtMultimedia import QSound
import resources # compiled via: pyrcc5 -o resources.py resources.qrc
if __name__ == '__main__':
app = QCoreApplication(sys.argv)
# QSound.play("test.wav") # Plays fine
# Using a wav file in the resource as follows gives the following results
# <!DOCTYPE RCC>
# <RCC version="1.0">
# <qresource prefix="audio">
# <file>test.wav</file>
# </qresource>
# </RCC>
QSound.play(":/audio/test.wav") # Plays fine
sound = QSound(":/audio/test.wav")
sound.play() # Plays fine
QSound(":/audio/test.wav").play() # no sound...no error
# QFile.copy(":/audio/my_sound.ogg", "temp.ogg") # Could also copy to a local file to make sure was found in resource
sys.exit(app.exec_())
【讨论】:
我没有听说过 qsound,但我知道许多声音播放器模块,例如 pygame、playsound 等,您可以在它们支持播放、停止、暂停等的站点中看到语法
【讨论】: