Python实现简易音频播放器

Posted LeBron Le

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python实现简易音频播放器相关的知识,希望对你有一定的参考价值。

1. 需要用到的Python库

  • pygame
  • tkinter

2. 简易UI设计

audio_player = Tk()
audio_player.title('Audio Player v1.0')
audio_player.geometry('100x100+570+200')
audio_player.maxsize(height=110, width=220)
audio_player.minsize(height=110, width=220)

3. 功能模块实现

3.1 选择音频文件进行播放

def selectFile():
    file = filedialog.askopenfile(mode='r', filetypes=[('AudioFile', '*.mp3')])
    global filePath
    filePath = str(file).split("'")[1]
    try:
        playAudio()
    except:
        pass

3.2 控制音频播放、暂停

def changeText(text):
    if text == 'play':
        return 'pause'
    if text == 'pause':
        return 'play'


def playStop():
    playBtn.config(text=changeText(playBtn.config('text')[4]))
    if playBtn.config('text')[4] == 'pause':
        mixer.music.unpause()
    else:
        if playBtn.config('text')[4] == 'play':
            mixer.music.pause()

3.3 控制音频音量大小

这里可以定义一个全局变量x,初始化为值0.5。

def audioINC(y):
    mixer.music.set_volume(y + 0.1)
    global x
    x += 0.1


def audioDEC(y):
    mixer.music.set_volume(y - 0.1)
    global x
    x -= 0.1

3.4 播放器初始化等细节

def playAudio():
    try:
        mixer.init()
        mixer.music.load(filePath)
        mixer.music.set_volume(x)
        playBtn.config(text='pause')
        mixer.music.play()
    except:
        pass

4. 运行

frame = Frame(app)
frame.place(x=35, y=20)

openBtn = Button(frame, text='OpenFile', command=selectFile, width=8).grid(row=0, column=1)

audioDec = Button(frame, text='➖', command=lambda: audioDEC(x)).grid(row=1, column=0)
playBtn = Button(frame, text='...', command=playStop, width=8)
playBtn.grid(row=1, column=1)
audioInc = Button(frame, text='➕', command=lambda: audioINC(x)).grid(row=1, column=2)
restartBtn = Button(frame, text='Restart', command=playAudio, width=8).grid(row=2, column=1)

app.mainloop()

5. 简易音频播放器展示图


①点击“OpenFile”按钮可以打开本地音频文件
②“➖”和“➕”分别控制音量的减小和增大
③点击"Restart"按钮可以重新播放当前选中的音频

6. 总结

本文仅仅是实现了一个简易的音频播放器,UI极其简陋,为了仅仅是实现音频播放的功能,仅供学习参考。

Python实现 ---简易在线音乐播放器

    最近这几天,学习了一下python,对于爬虫比较感兴趣,就做了一个简单的爬虫项目,使用Python的库Tkinsert做了一个界面,感觉这个库使用起来还是挺方便的,音乐的数据来自网易云音乐的一个接口,通过requests模块,get请求将数据获得,使用Json模块进行数据的解析,最终使用python的mp3play库进行对音乐的在线播放,以下是该程序的源码。

 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3 # @Date    : 2016-12-28 21:03:21
 4 # @Author  : Donoy ([email protected])
 5 # @Link    : http://www.cnblogs.com/Donoy/
 6 # @Version : $Id$
 7 
 8 from Tkinter import *
 9 import tkMessageBox
10 import requests
11 import json
12 import urllib
13 import mp3play
14 import threading
15 import time
16 
17 
18 def  createWnd():
19     global root
20     global listBox
21     global text
22     
23     root = Tk()
24     root.title(-- DMPlayer --默认搜索100条----来自网易云音乐---)
25     root.geometry(500x270+600+200)
26 
27     text = Entry(font=宋体,width=36)
28     text.pack()
29     Button(root,text=搜索,width=18,command=searchM).pack()
30 
31     listBox = Listbox(root, height=12,width=72)
32     listBox.bind(<Double-Button-1>,play)
33     listBox.pack()
34 
35     root.mainloop()
36 
37 def searchM():
38     global m_List 
39     itemCount = 100
40 
41     if not text.get():
42         tkMessageBox.showinfo(温馨提示,您可以输入以下内容进行搜索\\n1.歌曲名\\n2.歌手名\\n3.部分歌词)
43 
44     #获得输入的歌名以及url
45     url = http://s.music.163.com/search/get/?type=1&s=%s&limit=%s%(text.get(),itemCount)
46     
47     #get请求
48     header = {User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36}
49     html   = requests.get(url,header)
50     data   = json.loads(html.text)
51     m_List = []
52 
53     try:
54         listBox.delete(0,listBox.size())
55         for MusicData in data[result][songs]:
56             listBox.insert(END,MusicData[name] +------+( +MusicData[artists][0][name] + ))
57             m_List.append(MusicData[audio])
58     except Exception as e: 
59         print 查询过程出现错误,请重试
60     
61     
62 def  play(args):
63     try:
64         global mp3
65         sy = listBox.curselection()[0]
66         mp3 = mp3play.load(m_List[int(sy)])
67         mp3.play()
68         #time.sleep(1000)
69     except Exception as e:
70         pass
71 
72     
73 def main():
74     createWnd()
75 
76 
77 if __name__ == __main__:
78     main()

    程序运行结果如下图:

 技术分享

 

以上是关于Python实现简易音频播放器的主要内容,如果未能解决你的问题,请参考以下文章

Android制作简易的音乐播放器和视频播放器

python_十几行代码实现简单播放器

Python实现 ---简易在线音乐播放器

Python 实现 m3u8 视频下载

在 Python GUI 中嵌入音频、视频

Python实现--简易视频爬虫