python20行代碼實現簡單播放器
-
播放器簡介
播放器大家都並不陌生,我們聽音樂,我們看視頻都會用到。那麼播放器實現的功能到底有哪些呢?一個播放器一般來講都完成了如下步驟:- 讀取文件(包括音頻文件和視頻文件)
- 判斷文件類型(視頻和音頻的格式前差萬別)
- 根據不同的文件類型來進行解碼(流媒體的文件體積太大,一般都經過了壓縮,而壓縮的標準和格式又五花八門)
- 保證音畫同步(畫面和視頻不同步是不是很不爽)
- 解碼後的圖像渲染到顯示設備(如顯示器,不同的顯卡和硬件的驅動也前差萬別)
- 解碼後的圖像渲染到聲音設備(如聲卡)
有沒有感覺好複雜。沒錯,一個音視頻播放的背後就是這麼複雜,不過對於我們使用者來說使用時簡單的。這也是我們常追求的一種產品哲學,把複雜留給後臺,把簡單呈現給用戶。
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程序,有沒有很強大
十幾行代碼,實現一個簡單播放器,有沒有很簡單。可以嘗試一下看看效果哦