对于音频的操作可以使用pygame包中的sound 和 music对象进行音乐播放。
Sound对象适合处理较短的音乐,如OGG和WAV格式的音频文件。
Music对象出来可以播放OGG、WAV音频外,还可以播放mp3格式。
from pygame import mixer #mixer对象可以播放音乐
一、Sound 对象
mixer.init() 先初始化
创建Sound对象
sound = mixer.Sound(音频文件名)
sound.play(loops = 0) 播放音乐,loops代表播放次数,默认为0,表示播放一次;loops=5可播放6次;loops=-1 可重复播放
sound.stop() 结束播放
sound.set_volume(value) 设置音量,音量有最低到高0.0--1.0
sound.get_volume() 获取当前的音量
二、music对象
mixer.init() 先初始化
mixer.music.load(filename) 停止正在播放的音乐,filename为歌曲的文件名
mixer.music.play(loops=0,start=0.0) 播放歌曲,loops表示播放次数,默认为0,播放1次;loops=5可以播放6次;loop=-1可以重复播放
mixer.music.stop() 停止播放
mixer.music.pause() 暂停播放
mixer.music.unpause() 用pause()暂停后,必须使用这个函数来继续播放
mixer.music.set_volume(value) 设置音量,最大1.0,最小0.0
mixer.music.get_volume() 获取当前音量
mixer.music.get_busy() 检查歌曲播放状态,True为正在播,False为不在播

1 from pygame import mixer 2 import glob 3 import tkinter as tk 4 5 mixer.init() 6 win = tk.Tk() 7 win.geometry("640x380") 8 win.title("mp3 播放器") 9 10 labeltitle = tk.Label(win,text='mp3 播放器',fg = 'red') 11 labeltitle.pack() 12 13 framel = tk.Frame(win) 14 framel.pack() 15 16 musicList = glob.glob('*.mp3') 17 18 playSong = preplaySone = '' 19 index = 0 20 volume = 0.6 21 choice = tk.StringVar() 22 23 def choose(): 24 global playSong 25 msg.set("播放歌曲:"+choice.get()) 26 playSong = choice.get() 27 28 29 30 def playMp3(): 31 global status,playSong,preplaySone 32 if playSong == preplaySone: 33 if not mixer.music.get_busy(): 34 mixer.music.load(playSong) 35 mixer.music.play(loops = -1) 36 else: 37 mixer.music.pause() 38 else: 39 playNewSong() 40 preplaySone = playSong 41 42 def playNewSong(): 43 global playSong 44 mixer.music.stop() 45 mixer.music.load(playSong) 46 mixer.music.play(loops = -1) 47 msg.set("正在播放:{}".format(playSong)) 48 49 def pauseMp3(): 50 mixer.music.pause() 51 msg.set("暂停歌曲:{}".format(playSong)) 52 53 def increase(): 54 global volume 55 volume += 0.1 56 if volume >=1: 57 volume = 1 58 mixer.music.set_volume(volume) 59 60 def decrease(): 61 global volume 62 volume -= 0.1 63 if volume <= 0.1: 64 volume = 0.1 65 mixer.music.set_volume(volume) 66 67 def stopMp3(): 68 mixer.music.stop() 69 msg.set("\n停止播放") 70 71 72 73 def exitMp3(): 74 mixer.music.stop() 75 win.destroy() 76 77 78 for music in musicList: 79 rbtem = tk.Radiobutton(framel,text=music,variable = choice,value=music,command=choose) 80 if index == 0: 81 rbtem.select() 82 playSong = preplaySone = music 83 rbtem.grid(row = index,column = 0,sticky = 'w') 84 index += 1 85 86 msg = tk.StringVar() 87 msg.set("\n播放歌曲:"+playSong) 88 label = tk.Label(win,textvariable=msg,fg='blue') 89 label.pack() 90 91 labelsep = tk.Label(win,text='\n') 92 labelsep.pack() 93 94 frame2 = tk.Frame(win) 95 frame2.pack() 96 97 button1 = tk.Button(frame2,text='播放',width=8,command = playMp3) 98 button1.grid(row=0,column=0,padx=5,pady=5) 99 100 button2 = tk.Button(frame2,text='暂停',width=8,command = pauseMp3) 101 button2.grid(row=0,column=1,padx=5,pady=5) 102 103 button3 = tk.Button(frame2,text='音量调大',width=8,command = increase) 104 button3.grid(row=0,column=2,padx=5,pady=5) 105 106 button4 = tk.Button(frame2,text='音量调小',width=8,command = decrease) 107 button4.grid(row=0,column=3,padx=5,pady=5) 108 109 button5 = tk.Button(frame2,text='停止',width=8,command = stopMp3) 110 button5.grid(row=0,column=4,padx=5,pady=5) 111 112 button6 = tk.Button(frame2,text='结束',width=8,command = exitMp3) 113 button6.grid(row=0,column=5,padx=5,pady=5) 114 115 win.protocol("WM_DELETE_WINDOW",exitMp3) 116 win.mainloop() 117 #print(musicList)