Pyqt5的資料較少,音頻播放搜索到的參考資料不大好,這里重新整理了一下。
參照:
- https://github.com/Enayem/Audiograme/blob/0cfce1e17410fc4526b3666e639e40e30d90bf22/testAudio.py
- http://blog.csdn.net/z609932088/article/details/51248596
- https://github.com/pbouda/pyqt-und-pyside-buch/blob/1b4333b7ba3875edb66db74c8a064e696265ed47/beispielanwendungen/sound/main2.py
方式一: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