使用python创建一个交互界面wav的可视化音频播放器
时间: 2024-05-03 13:11:32 浏览: 149
你可以使用Python的PyAudio和PyQt5库来实现这个交互界面。以下是一个基本的代码示例:
```python
import sys
import wave
import numpy as np
import pyaudio
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QSlider, QLabel, QVBoxLayout
class AudioPlayer(QWidget):
def __init__(self, path):
super().__init__()
# 打开wav文件
self.wf = wave.open(path, 'rb')
# 获取音频参数
self.channels = self.wf.getnchannels()
self.width = self.wf.getsampwidth()
self.rate = self.wf.getframerate()
self.frames = self.wf.getnframes()
# 初始化PyAudio对象
self.p = pyaudio.PyAudio()
# 打开音频流
self.stream = self.p.open(format=self.p.get_format_from_width(self.width),
channels=self.channels,
rate=self.rate,
output=True)
# 创建UI
self.initUI()
def initUI(self):
# 设置窗口标题和图标
self.setWindowTitle('Audio Player')
self.setWindowIcon(QIcon('icon.png'))
# 创建播放按钮
self.playBtn = QPushButton('Play', self)
self.playBtn.clicked.connect(self.play)
# 创建停止按钮
self.stopBtn = QPushButton('Stop', self)
self.stopBtn.clicked.connect(self.stop)
# 创建音量滑块
self.volumeSlider = QSlider(Qt.Horizontal, self)
self.volumeSlider.setRange(0, 100)
self.volumeSlider.setValue(50)
self.volumeSlider.valueChanged.connect(self.setVolume)
# 创建时间标签
self.timeLabel = QLabel('00:00 / 00:00', self)
# 创建布局
vbox = QVBoxLayout()
vbox.addWidget(self.playBtn)
vbox.addWidget(self.stopBtn)
vbox.addWidget(self.volumeSlider)
vbox.addWidget(self.timeLabel)
self.setLayout(vbox)
# 设置窗口大小和位置
self.setGeometry(300, 300, 300, 150)
self.show()
def play(self):
# 读取音频数据
data = self.wf.readframes(1024)
# 播放音频数据
while data != b'':
self.stream.write(data)
data = self.wf.readframes(1024)
# 关闭音频流和PyAudio对象
self.stream.close()
self.p.terminate()
def stop(self):
# 关闭音频流和PyAudio对象
self.stream.stop_stream()
self.stream.close()
self.p.terminate()
def setVolume(self):
# 设置音量
volume = self.volumeSlider.value() / 100
self.stream.set_volume(volume)
if __name__ == '__main__':
app = QApplication(sys.argv)
player = AudioPlayer('audio.wav')
sys.exit(app.exec_())
```
在这个示例中,我们使用PyAudio库打开音频文件并创建一个音频流。然后,我们使用PyQt5库创建一个简单的用户界面,包含一个播放按钮、一个停止按钮、一个音量滑块和一个时间标签。当用户点击“播放”按钮时,我们从音频文件中读取数据并写入音频流中进行播放。当用户点击“停止”按钮时,我们停止音频流并关闭PyAudio对象。用户可以使用音量滑块来调整音频的音量。
注意,这个示例只是一个基本的框架,你可以根据自己的需求进行修改和扩展。
阅读全文