python十几行代码实现简单播放器
一、播放器简介
播放器大家都并不陌生,我们听音乐,我们看视频都会用到。那么播放器实现的功能到底有哪些呢?一个播放器一般来讲都完成了如下步骤:
1.读取文件(包括音频文件和视频文件);
2.判断文件类型(视频和音频的格式千差万别);
3.根据不同的文件类型来进行解码(流媒体的文件体积太大,一般都经过了压缩,而压缩的标准和格式又五花八门);
4.保证音画同步(画面和视频不同步是不是很不爽);
5.解码后的图像渲染到显示设备(如显示器,不同的显卡和硬件的驱动也千差万别);
6.解码后的图像渲染到声音设备(如声卡)。
有没有感觉好复杂。没错,一个音视频播放的背后就是这么复杂,不过对于我们使用者来说使用是简单的。这也是我们常追求的一种产品哲学,把复杂留给后台,把简单呈现给用户。
二、使用python简单实现播放器
接触到python之后,发现其强大之处,结合自己的技术方向,简单实现了一个播放器,可以说,这样的组合把留给程序员的复杂也进一步的减少了呢。
当然如果你要是想完全懂这个程序,可能需要有一定的前提:
1.你有简单的python基础,不需要精通,快速入门即可;
2.你有简单的图形图像的基础,看过我的公众号的你,基本都具备这个能力(哈哈); 再说一下这个程序所需要的开发环境:
3.python的开发环境,最少3.6以上,IDE你用什么都可以,vscode, pycharm等等;
4.你需要安装pyglet的python库:安装命令很简单喽 pip install pyglet;
5.同时你需要安装AVbin动态库,介个是pyglet所使用的多媒体解码库,动动你的手指,百度或google,然后安装一下;
6.你需要安装PyInstaller库:安装命令同样很简单pip install PyInstaller;
7.最好找一个播放器的图标:mylayer.ico;
8.准备一个测试的视频。
好了,环境准备好以后,接下来就是传说中的十几行代码:
import pyglet
window = pyglet.window.Window(resizable=True)
@window.event
def on_draw():
player.get_texture().blit(0, 0)
if __name__ == "__main__":
player = pyglet.media.Player()
source = pyglet.media.load("F:\FFOutput\parent.vob")
player.queue(source)
player.play
pyglet.app.run()
关于这段代码的说明:
文件的路径一定要写对哦,就是你的测试视频所在的路径;
这是一个简单的版本,所以只有播放,而没有控制,如暂停,播放等选项
别忘了写pyglet.app.run()这是程序事件循环的起点哈。
三、生成exe文件
pyinstaller player.py -F --icon=player.ico
注意:
这里的player.py就是我们所创建的python文件的名称,你可以起更酷炫的;
这里的player.ico就是我们生成的exe文件的图标;
这里的pyinstaller就是我们环境准备里的PyInstaller包的可执行程序,用于打包python程序。
有没有很强大?十几行代码,实现一个简单播放器,有没有很简单。可以尝试一下看看效果哦!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 视屏面试传输协议到底是TCP还是UDP
- prometheus学习笔记(1)-mac单机版环境搭建
- Metaspace内存不足导致FGC问题排查
- useful-scripts
- 清空所有 NSUserDefaults 记录
- 重温Java Web的技术细节
- 国密算法SM2加解密_签名验签图形化例子
- 链接脚本linker script的妙用
- 【TBase开源版测评】轻松愉快去O选项:TBase
- Tungsten Fabric知识库丨更多组件内部探秘
- TRTC Android端开发接入学习之环境快速搭建(三)
- 为了满足UI小姐姐要求,自己动手实现了Android面包屑效果(支持Fragment联动)
- Jenkins持续集成「编译打包、代码检查、单元测试、环境部署、软件测试」
- 斗鱼直播带你实现:你主播最爱的Android音视频开发
- 深度解析Redis线程模型设计原理