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

 

 

   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM