我正在尋找一個維護良好的Python庫,該庫允許我使用標準音頻輸出在Raspberry Pi上播放音頻文件。
到目前為止,我已經嘗試了好幾次,但似乎都沒有工作。儘管pyglet可以在我的常規計算機上正常工作,但會在Raspberry Pi上導致錯誤。是否有一個Python庫被證明易於使用?
我正在尋找一個維護良好的Python庫,該庫允許我使用標準音頻輸出在Raspberry Pi上播放音頻文件。
到目前為止,我已經嘗試了好幾次,但似乎都沒有工作。儘管pyglet可以在我的常規計算機上正常工作,但會在Raspberry Pi上導致錯誤。是否有一個Python庫被證明易於使用?
我推薦廣受歡迎的 Pygame。我可能是錯的,但我相信它已預先安裝在Pi上。您可以使用 Pygame混音器音樂模塊播放音頻文件。我在下面提供了一些示例代碼。
假設我們有一個名為 myFile.wav
的音頻文件。
import pygamepygame.mixer.init ()pygame.mixer.music.load(“ myFile.wav”)pygame.mixer.music.play()而pygame.mixer.music.get_busy()==真:繼續
注意::如果失敗,請轉到終端並使用
apt-get updateapt-get upgrade
然後重試。
我需要一個腳本來在後台播放30秒內的歌曲,同時響應其他用戶輸入。然後,我希望它在某個事件中結束歌曲。
我認為它不是特別優雅,但是我打開了一個通往MPlayer後台進程的管道。
import subprocessplayer = subprocess.Popen([“ mplayer”,“ song.mp3”,“ -ss”,“ 30”],stdin = subprocess.PIPE,stdout = subprocess.PIPE,stderr = subprocess.PIPE)
然後,當我想終止MPlayer進程時,我只是寫了“ q”以退出管道。
player.stdin.write(“ q”)
請參閱MPlayer文檔,以了解可以通過這種方式傳遞來控製播放的各種命令。
希望這會有所幫助!
另一種選擇是使用 mpg321
並從命令行調用它。
apt-get install mpg321
然後在Python中:
import osos.system('mpg321 foo.mp3 &')
Pygame幾乎肯定更健壯,但這取決於我假設您的需求是什麼。
Pygame為您提供了一種在一系列頻道上輕鬆加載和播放聲音的好方法。
您可能會通過管道使用許多外部播放器。但是,您幾乎總是會遇到速度下降的問題。播放控制也存在問題。
我建議您使用pyaudio,它可以正常工作
如果您還想播放壓縮文件,請隨時將您指向我的模塊coder.py。您可以在PyPI上找到它。
它也使用子進程,但是調用解碼器而不是播放器。它們不佔用大量CPU,並且其中一些人知道如何使用硬件加速。然後,您可以使用pyaudio或其他東西來輸出原始音頻數據。如果需要,您甚至可以通過使用pygame.sndarray使用pygame。這樣,您可以播放比pygame支持更多的格式。
我在pyaudio的pyQT GUI環境中嘗試了coder.py,並同時使用pyaudio和aplay作為外部播放器。就是在Raspberry Pi B上。
在兩種情況下,結果都非常令人滿意。
簡單性值得質疑。
decoder.py本身非常簡單,但是您必須將其與其他庫結合使用,這會增加代碼行。
有一個示例說明如何播放decoder.py附帶的文件。
我正在運行OSMC(Debian),並且可以通過通過HDMI連接的電視揚聲器播放聲音。 https://youtu.be/p2ljmTE67gs
我的方法基於@xxmbabanexx和此處發布的上述解決方案。基本上,我有將 dtparam = audio = on
添加到 /boot/config.txt