簡體   English   中英

用 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_())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM