python3学习心得:远程音频播放程序

标签:
python3局域网音频播放远程播放音频 |
分类: 学习心得 |
一、why?
每个学校每周周一都会进行晨会,而晨会的其中一个特别重要的环节就是升旗仪式,不知为什么每当听到中华人民共和国国歌的时候,心里都会激动不已......额,扯远了。由于校园工作和校园设施的特殊原因,广播室的工作人员需要通过一台专门负责广播的计算机A来播放音乐才能完成校园广播任务。各种原因促使下,这台计算机A竟然离广播室100多米远,而工作人员既不会忍术分身也没有100多米长的手臂,于是需要另一个工作人员协同播放音乐,而这学期这个工作人员就是本人。
毕竟协同播放需要各种默契...(此处省略1千字)等。就在上周,"写一个程序进行远程播放音频文件”的想法突然在脑海闪过,于是就开始了码代码的过程。当然,解决这个问题的方法不止一种,还有很多更好的,也希望各位大神指点迷津。
二、how?
因为暑假期间自学过一段时间的python,而且python最近越来越火爆,所以选择使用python来开发这个程序,但大部分程序都是借鉴和学习网络上各位大神的代码来的。
1、编写一个音频播放的程序
这个部分的程序其实是整个程序关键的执行部分,虽然自学过一段时间python,但对于音频文件的播放还是一点都不知道。网络上有很多高手说,用pygame、wxpython模块等,都仔细尝试了一下,最后发现pyaudio模块播放音频文件的案例代码最适用,于是就有了第一个程序(这里要谢谢那些乐于分享的网友们):
打开命令窗口,在程序文件路径下运行这个python程序,就可以听到那激动澎湃的声音了
。(注意:后面改名为“音乐播放2.py”)
http://s6/bmiddle/002ovLlIzy7f9trZgq175&6902、编写监听程序
其实监听程序部分也很关键,当时开始编写监听程序时特别地兴奋,因为对这一块内容完全空白,很好奇。这部分内容主要用到了python中的socket模块,话不多说直接上码。
因为想让服务器一直运行着,于是加了一条循环语句:
3、编写客户端
客户端的程序主要就是发送指令给监听服务器:该播音乐啦。客户端是用户直接接触的,所以客户端程序的界面要友好点。客户端程序是用wxpython的模块编写的,因为初学python,所以客户端的界面设计部分做的有些粗糙,但功能是完整的。
界面如下:
http://s12/bmiddle/002ovLlIzy7f9tyT9Vx9b&690代码如下:
4、调试打包
三个程序文件完成了:播放音乐2.py、server5.py、client5.py,赶紧去测试一下,结果跑起来啦(开心)。
但是客户端毕竟是面向用户的,直接用python的文件似乎不大好,所以要打包成exe文件。在这里使用pyinstaller来生成exe文件。
首先,安装pyinstaller模块:
使用命令安装(python的命令安装超帅气,很喜欢):pip install pyinstaller
http://s11/bmiddle/002ovLlIzy7f9tDRQzE5a&690其次,将client5.py文件转为执行文件:
用命令语句找到client5.py的位置,用命令语句生成执行文件,如下图所示。
打包完成后,在client5.py的所再文件夹中找到dist文件夹,里面就有生成的执行文件。
http://s16/bmiddle/002ovLlIzy7f9tHIYs72f&690三、question?
如何远程控制计算机播放音频文件的问题终于解决了,很开心。换言之,现在广播室的工作人员就是一个拥有100多米手臂的“超能力者”了。
还是喜欢解决问题的方式去学习,初学python,就用它写了个小工具,还是蛮有成就感的,不过除此之外发现python语言特别简单直接,同时还拥有特别丰富的库,感觉不错。
话又说回来,这个小程序在运行时也还不完美,server程序在运行时调用os.system()语句会出现一个cmd.exe命令窗口,这个命令窗口不关掉就无法进行第二次循环。当然,可以把“音乐播放2.py”与“server5.py”合并为一个程序文件,但是还是想知道如果不合并有没有解决的办法,求助强大的网络。