pyqt5音頻播放

Pyqt5的資料較少,音頻播放搜索到的參考資料不大好,這里重新整理了一下。
參照:

方式一:QMediaPlayer,播放MP3(推薦)

QMediaPlayer是對(duì)本地計(jì)算機(jī)底層播放框架封裝,依賴(lài)本地的播放框架,因此可播放格式受到限制,Windows上是DirectShow框架,安裝LAV Filters之類(lèi)的DirectShow解碼框架可以支持更多的格式。所以一般windows 只能播放常見(jiàn)的mp3 mp4格式,.avi 和 .wav格式可能無(wú)法播放。該類(lèi)有設(shè)置播放位置接口。DEMO如下:

app = PyQt5.QtWidgets.QApplication(sys.argv)
url = PyQt5.QtCore.QUrl.fromLocalFile("yourfilepath")
content = PyQt5.QtMultimedia.QMediaContent(url)
player = PyQt5.QtMultimedia.QMediaPlayer()
player.setMedia(content)
player.setVolume(Sound_level)
player.play()
sys.exit(app.exec())

方式二:QSound以及QSoundEffect,播放wav

簡(jiǎn)單地播放wav音頻文件,使用QSound類(lèi)方法即可,DEMO:

app = PyQt5.QtWidgets.QApplication(sys.argv)
sound_file = 'triggers/waves/nock.wav'
sound = PyQt5.QtMultimedia.QSound(sound_file)
sound.play()
sys.exit(app.exec())

QSoundEffect可以用來(lái)播放無(wú)壓縮的音頻文件(如wav文件),可對(duì)文件進(jìn)行更多的操作,可用來(lái)播放交互音效,如提示音等。DEMO:

app = PyQt5.QtWidgets.QApplication(sys.argv)
sound_file = 'test.wav'
sound = PyQt5.QtMultimedia.QSoundEffect()
sound.setSource(PyQt5.QtCore.QUrl.fromLocalFile(sound_file))
sound.setLoopCount(PyQt5.QtMultimedia.QSoundEffect.Infinite)
sound.setVolume(100)
sound.play()
app.exec()

以上兩個(gè)類(lèi)均可設(shè)置音量: setVolume()方法可以設(shè)置播放音頻時(shí)的音量大小,參數(shù)為浮點(diǎn)型數(shù)值。1.0代表全音量播放,0.0代表靜音;播放為 play(),停止為stop()。

方式三:QAudioOutput

播放PCM音頻(裸流)文件,最強(qiáng)大的方式。DEMO:

app = PyQt5.QtWidgets.QApplication(sys.argv)
format = PyQt5.QtMultimedia.QAudioFormat()
format.setChannelCount(1)
format.setSampleRate(1000)
format.setSampleSize(8)
format.setCodec("audio/pcm")
format.setByteOrder(QAudioFormat.LittleEndian)
format.setSampleType(QAudioFormat.UnSignedInt)
output = PyQt5.QtMultimedia.QAudioOutput(format)

rfile = PyQt5.QtCore.QFile()
rfile.setFileName("../test/19147_160913105347.adpcm")
rfile.open(PyQt5.QtCore.QIODevice.ReadOnly)
output.start(rfile)
app.exec()

以上的源碼下載(若有問(wèn)題可以留言交流):

https://72k.us/file/22762188-409300366

如果需要密碼應(yīng)該是:111111

http://www.itdecent.cn/p/19f096daabd6

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容