2019年7月6日土曜日

Raspberry Pi の pygame で音源を再生できない

Raspberry Pi の Python で pygame モジュールを使用しましたが、簡単なサンプルで全く音が出なかったので、調査しました。

サンプルコード
import pygame.mixer
pygame.mixer.init()
music = pygame.mixer.Sound("./sample.wav")
music.play()



調査を進めたところ、スクリプトではなく Python の対話モードだと再生できることが判明した。これはつまり、再生が始まる前にプログラムが終了してしまうことが問題らしい。

そこで、
import pygame.mixer
import time
pygame.mixer.init()
music = pygame.mixer.Sound("./sample.wav")
music.play()
print(music.get_length())
time.sleep(music.get_length())


play が非同期だから、再生が終わる前に終了しちゃうんですね。とりあえず再生が終了するまで sleep してやれば済みます。


pygameライブラリ 公式
https://www.pygame.org/download.shtml