用python编写播放切割wav音频且带有开始暂停按钮进度条的代码
时间: 2024-05-14 20:12:15 浏览: 153
音频播放,带进度条和播放暂停按钮重播按钮
好的,以下是可以回答的内容:
您可以使用Python中的PyAudio库来播放和切割.wav音频文件。您可以使用Tkinter库来创建GUI界面,包括开始、暂停按钮和进度条。
以下是示例代码:
```python
import pyaudio
import wave
import threading
import time
import tkinter as tk
from tkinter import ttk
class AudioPlayer:
def __init__(self, file):
self.file = file
self.chunk = 1024
self.paused = False
self.playing = False
self.stream = None
self.wf = wave.open(file, 'rb')
self.p = pyaudio.PyAudio()
self.total_frames = self.wf.getnframes()
self.framerate = self.wf.getframerate()
self.duration = self.total_frames / float(self.framerate)
def play(self):
self.playing = True
self.paused = False
self.stream = self.p.open(format=self.p.get_format_from_width(self.wf.getsampwidth()),
channels=self.wf.getnchannels(),
rate=self.wf.getframerate(),
output=True)
data = self.wf.readframes(self.chunk)
while data != b'' and self.playing:
while self.paused:
time.sleep(0.1)
self.stream.write(data)
data = self.wf.readframes(self.chunk)
self.stop()
def stop(self):
self.playing = False
self.paused = False
if self.stream is not None:
self.stream.stop_stream()
self.stream.close()
self.p.terminate()
def pause(self):
self.paused = True
def resume(self):
self.paused = False
class AudioGUI:
def __init__(self, file):
self.player = AudioPlayer(file)
self.root = tk.Tk()
self.root.title("Audio Player")
self.root.geometry("400x200")
self.play_button = tk.Button(self.root, text="Play", command=self.play)
self.pause_button = tk.Button(self.root, text="Pause", command=self.pause, state=tk.DISABLED)
self.progress_bar = ttk.Progressbar(self.root, orient=tk.HORIZONTAL, length=300, mode='determinate')
self.play_button.pack(pady=10)
self.pause_button.pack(pady=10)
self.progress_bar.pack(pady=10)
self.root.protocol("WM_DELETE_WINDOW", self.on_close)
def play(self):
self.play_button.config(state=tk.DISABLED)
self.pause_button.config(state=tk.NORMAL)
t = threading.Thread(target=self.player.play)
t.start()
self.update_progress()
def pause(self):
if self.player.paused:
self.player.resume()
self.pause_button.config(text="Pause")
else:
self.player.pause()
self.pause_button.config(text="Resume")
def update_progress(self):
current_frame = self.player.stream.get_write_available() / 4
progress = int(current_frame / self.player.total_frames * 100)
self.progress_bar['value'] = progress
if progress < 100 and self.player.playing:
self.root.after(100, self.update_progress)
else:
self.play_button.config(state=tk.NORMAL)
self.pause_button.config(state=tk.DISABLED)
def on_close(self):
self.player.stop()
self.root.destroy()
if __name__ == '__main__':
gui = AudioGUI('test.wav')
gui.root.mainloop()
```
该代码使用tkinter库创建了一个GUI界面,包括开始、暂停按钮和进度条,使用PyAudio库播放和切割.wav音频文件。您可以将文件名替换为您自己的.wav文件名。
阅读全文