使用 QtMultimedia 播放音频?
Playing Audio with QtMultimedia?
我正在编写的 PyQt5 程序的一部分是接收音频流并播放它。我四处搜索,这是我发现的据说有效的代码:
url = QtCore.QUrl.fromLocalFile('office theme.mp3')
content = QtMultimedia.QMediaContent(url)
player = QtMultimedia.QMediaPlayer()
player.setMedia(content)
player.play()
但是,这对我不起作用。我已经尝试将代码放在各种地方(在 window.show()
调用之后,我拥有的各种 类 的内部和外部,等等)。我可以验证 MP3 是否有效,因为我可以在 Clementine、VLC 和 Dolphin 中播放它。它也是直接从我的 Plex 服务器上获取的,所以它绝对是一个有效的 MP3 文件。我曾尝试将此文件转换为 OGG 和 WAV,但没有成功。我也试过 FLAC 和 AAC 音频文件,但它们都不起作用。
我在论坛上看到有人建议 运行 一个命令来检查 PyQt 是否可以看到任何音频设备。我 运行 以下代码,它返回了多个音频输出设备:
print(QtMultimedia.QAudioDeviceInfo.availableDevices(QtMultimedia.QAudio.AudioOutput))
我需要做的就是获取对音频文件的引用(最终从文件对话中打开,但我会在遇到它时越过那座桥)并播放它。我做错了吗?我绝不是 PyQt 的专家,并且只试验了几天。
我目前 运行 在 Antergos Arch Linux。
你必须传递完整的路径,但如果你只想传递文件名并且程序添加其余部分,你可以使用 QDir::current()
:
import sys
from PyQt5 import QtCore, QtWidgets, QtMultimedia
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
filename = 'office theme.mp3'
fullpath = QtCore.QDir.current().absoluteFilePath(filename)
url = QtCore.QUrl.fromLocalFile(fullpath)
content = QtMultimedia.QMediaContent(url)
player = QtMultimedia.QMediaPlayer()
player.setMedia(content)
player.play()
sys.exit(app.exec_())
我正在编写的 PyQt5 程序的一部分是接收音频流并播放它。我四处搜索,这是我发现的据说有效的代码:
url = QtCore.QUrl.fromLocalFile('office theme.mp3')
content = QtMultimedia.QMediaContent(url)
player = QtMultimedia.QMediaPlayer()
player.setMedia(content)
player.play()
但是,这对我不起作用。我已经尝试将代码放在各种地方(在 window.show()
调用之后,我拥有的各种 类 的内部和外部,等等)。我可以验证 MP3 是否有效,因为我可以在 Clementine、VLC 和 Dolphin 中播放它。它也是直接从我的 Plex 服务器上获取的,所以它绝对是一个有效的 MP3 文件。我曾尝试将此文件转换为 OGG 和 WAV,但没有成功。我也试过 FLAC 和 AAC 音频文件,但它们都不起作用。
我在论坛上看到有人建议 运行 一个命令来检查 PyQt 是否可以看到任何音频设备。我 运行 以下代码,它返回了多个音频输出设备:
print(QtMultimedia.QAudioDeviceInfo.availableDevices(QtMultimedia.QAudio.AudioOutput))
我需要做的就是获取对音频文件的引用(最终从文件对话中打开,但我会在遇到它时越过那座桥)并播放它。我做错了吗?我绝不是 PyQt 的专家,并且只试验了几天。
我目前 运行 在 Antergos Arch Linux。
你必须传递完整的路径,但如果你只想传递文件名并且程序添加其余部分,你可以使用 QDir::current()
:
import sys
from PyQt5 import QtCore, QtWidgets, QtMultimedia
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
filename = 'office theme.mp3'
fullpath = QtCore.QDir.current().absoluteFilePath(filename)
url = QtCore.QUrl.fromLocalFile(fullpath)
content = QtMultimedia.QMediaContent(url)
player = QtMultimedia.QMediaPlayer()
player.setMedia(content)
player.play()
sys.exit(app.exec_())