Skip to content

[Python] 使用 os 模組與 PyGame 套件播放音樂

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] 這個區間。

這樣一來應該就可以順利播放音樂了。之後若是有幸回去繼續加強音樂播放器,或許可以寫得更仔細再發一篇文。

Leave a Reply取消回覆

Exit mobile version