Python加载声音

对于音频的操作可以使用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)
View Code

   

猜你喜欢

转载自www.cnblogs.com/sunshenggang/p/9279228.html