pygameでmp3再生

Windowsでは環境によってpygame.mixer.musicでmp3が再生できないことがあります。これに関して以下のサイトを見たところmp3のライセンスの関係でSDL_mixer.dllそのものがmp3のサポートをしていないことがあるそうです。
PyKaraoke - Installation FAQ


というわけで、mp3をサポートした状態でビルドされたSDL_mixerを使えば良さそうな感じなので以下のサイトからSDL_mixer-1.2.7-win32.zipを落として解凍します。

解凍すると以下のようなdllが出てきます。

  • ogg.dll
  • smpeg.dll
  • vorbis.dll
  • vorbisfile.dll
  • SDL_mixer.dll

これらのdllのうちSDL_mixerのみをpythonフォルダ下のpygameフォルダに入れます。すでにpygameフォルダにはSDL_mixer.dllがあるのでSDL_mixer.dll.bakとでも名前を変えておくと良いでしょう。

Python24\Lib\site-packages\pygame

はじめは他のdllもpygameフォルダに入れたのですが、mp3を再生するプログラムの実行時に「smepg.dllがロードできません」と出てくるので実行するスクリプトと同じフォルダに入れてやったところうまくいきました。同様にogg.dll,vorbis.dll,vorbisfile.dllもスクリプトと同じフォルダに入れる必要があります。


結局のところこういう感じになるようです。

  • SDL_mixer.dll:pygameフォルダに入れる
  • それ以外のdll:実行するプログラムと同じフォルダに入れる


「それ以外のdll」はsystem32フォルダに入れてもいいと思います。配布する際はこれらのdllも配布することになるのでmp3の再生に関してはこれで問題なさそうかな。