Last Updated on 2021-05-17 by Clay
說到『使用 Python 做一個小型專案』,幾乎大部分的網路教學都是在教導怎麼『自己做一個音樂播放器』。無論怎麼說,能夠自己客製化一個音樂播放器,想想也還滿有趣的。
我在大概距今一年前曾經做過一個簡陋的音樂播放器,也一直心心念念著總有一天我要把它美化、優化,再次丟上 Github。
不過在那之前,我曾經撞壁過,那就是——Python 音樂播放的教學網路上很多,『但我幾乎沒有一個跑得起來』。
當然,有部份是我自己的錯,況且我最後還是成功找到教學了,這個我等一下會提及。
我認為在 Python 當中播放音樂的方法不外乎 2 種:
- os 使用預設播放器播放
- PyGame 在背景播放
其中我比較喜歡 PyGame 的方法 (背景執行),因為我那時候就是想要製作音樂播放器嘛。以下,就簡單紀錄該怎麼通過 Python 撰寫播放音樂的程式吧。
很多人也會推薦 mp3play 這個模組,但我看了下底層的程式碼,似乎是 Python2 的,在我這邊跑不太起來。若是習慣用 Python2 寫程式的人或許可以多少參考一下。
使用 os 預設的播放器播放
這個程式非常地簡單,也非常地單純。假設我們有個 MP3 檔,先叫做 "test.mp3"。
import os os.system('test.mp3')
Output:
由於我是在 Windows 的作業系統上測試,所以就跳出了預設的播放器。
這裡要先預先說明一下:其實我去年在嘗試這個方法的時候失敗的,這就是我說原因出在我身上的地方。
因為我討厭這個預設的播放器所以把它卸載掉了啊啊啊啊!!!
所以其實問題是我的系統內沒有任何音樂播放軟體 ...... 咳咳,沒事。
所以如果這個方法失敗的話,可以檢查一下自己預設的播放器哦。
PyGame
PyGame 是 Python 專門寫遊戲的模組,雖然很多人評價其不適合拿來做真正的遊戲開發,但若是忽略其效能跟美術(美術超難弄的!),其實因為它的語法是用 Python 撰寫,所以開發速度算得上非常快。
我學 C# 還在學 Python 之前,但是我之前曾經在寫過 Python 的填字小遊戲之後,轉移到 Unity 上繼續開發,開發的速度是這樣的:
Python | 第一次寫這個小遊戲 | 一個晚上 (約 3 小時) |
C# | 第二次寫這個小遊戲 | 一天 (約 7 小時) |
當然,這樣比較或許並不公平,畢竟我那時候填字小遊戲的文字資料是透過 Python 處理的,到 C# 上我還是第一次做,難免有些不熟。不過就我個人體感而言,至少開發個遊戲的 Prototype 確認遊戲邏輯跑得通,PyGame 還是相當好用的。
若是對 PyGame 有興趣,不妨參考他們的官方網站: https://www.pygame.org/news
裡面甚至還有許多使用 PyGame 完成的遊戲介紹,看看 PyGame 能做到什麼程度也不錯。
好,話題回到怎麼使用 PyGame 進行音樂播放吧。
第一次使用的話,需要用以下指令下載。
pip3 install pygame
下載完後,我開始說我遇到的第二個坑:PyGame 音樂播放的模組是用『流』(flow) 的方式來播放的,網路上找到的一些教學至少在我這裡是跑不起來的。
以下簡單的範例:
import pygame pygame.mixer.init() pygame.mixer.music.set_volume(1.0) while True: if not pygame.mixer.music.get_busy(): pygame.mixer.music.load('test.mp3') pygame.mixer.music.play()
set_volume 的音量大小為 [0.0 - 1.0] 這個區間。
這樣一來應該就可以順利播放音樂了。之後若是有幸回去繼續加強音樂播放器,或許可以寫得更仔細再發一篇文。