python20行代码实现简单播放器

  1. 播放器简介
    播放器大家都并不陌生,我们听音乐,我们看视频都会用到。那么播放器实现的功能到底有哪些呢?一个播放器一般来讲都完成了如下步骤:

    • 读取文件(包括音频文件和视频文件)
    • 判断文件类型(视频和音频的格式前差万别)
    • 根据不同的文件类型来进行解码(流媒体的文件体积太大,一般都经过了压缩,而压缩的标准和格式又五花八门)
    • 保证音画同步(画面和视频不同步是不是很不爽)
    • 解码后的图像渲染到显示设备(如显示器,不同的显卡和硬件的驱动也前差万别)
    • 解码后的图像渲染到声音设备(如声卡)

    有没有感觉好复杂。没错,一个音视频播放的背后就是这么复杂,不过对于我们使用者来说使用时简单的。这也是我们常追求的一种产品哲学,把复杂留给后台,把简单呈现给用户。


2.使用python简单实现播放器

接触到python之后,发现其强大之处,结合自己的技术方向,简单实现了一个播放器,可以说,这样的组合把留给程序员的复杂也进一步的减少了呢。

当然如果你要是想完全懂这个程序,可能需要有一定的前提:

  • 你有简单的python基础,不需要精通,快速入门即可
  • 你有简单的图形图像的基础,看过我的博客的你,基本都具备这个能力(哈哈)

再说一下这个程序所需要的开发环境:

  • python的开发环境,最少3.6以上,IDE你用什么都可以,vscode, pycharm等等
  • 你需要安装pyglet的python库:安装命令很简单喽 pip install pyglet
  • 同时你需要安装AVbin动态库,介个是pyglet所使用的多媒体解码库,动动你的手指,百度或google,然后安装一下
  • 你需要安装PyInstaller库:安装命令同样很简单pip install PyInstaller
  • 最好找一个播放器的图标:mylayer.ico
  • 准备一个测试的视频

好了,环境准备好以后,接下来就是传说中的十几行代码:

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()这是程序事件循环的起点哈

3. 生成exe文件
pyinstaller player.py -F --icon=player.ico

注意:

  • 这里的player.py就是我们所创建的python文件的名称,你可以起更酷炫的
  • 这里的player.ico就是我们生成的exe文件的图标
  • 这里的pyinstaller就是我们环境准备里的PyInstaller包的可执行程序,用于打包python程序,有没有很强大

十几行代码,实现一个简单播放器,有没有很简单。可以尝试一下看看效果哦