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是对本地计算机底层播放框架封装,依赖本地的播放框架,因此可播放格式受到限制,Windows上是DirectShow框架,安装LAV Filters之类的DirectShow解码框架可以支持更多的格式。所以一般windows 只能播放常见的mp3 mp4格式,.avi 和 .wav格式可能无法播放。该类有设置播放位置接口。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
简单地播放wav音频文件,使用QSound类方法即可,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可以用来播放无压缩的音频文件(如wav文件),可对文件进行更多的操作,可用来播放交互音效,如提示音等。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()
以上两个类均可设置音量: setVolume()方法可以设置播放音频时的音量大小,参数为浮点型数值。1.0代表全音量播放,0.0代表静音;播放为 play(),停止为stop()。
方式三:QAudioOutput
播放PCM音频(裸流)文件,最强大的方式。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()
以上的源码下载(若有问题可以留言交流):
https://72k.us/file/22762188-409300366
如果需要密码应该是:111111
网友评论