Yotazo Lab.

ほぼ自分用。でも誰かの役に立つかもしれない話題

Raspberry Piでインターネットラジオを作る #2

mpcでインターネットラジオのストリーミングを聞く

色々なサイトを参考に、mpd/mpcのインストールと設定を済ませると、音が出るようになりました。

さて、次はストリーミングの再生です。
/var/lib/mpd/playlists/に、プレイリストファイルを作ります。
ファイル名は適当、拡張子は.m3uでOK。

下記のように作ったものを /var/lib/mpd/playlists/にradio.m3uとして保存。

#FM - CLASSIC ROCK REPLAY RADIO
http://185.33.22.20:8206
#Radio tornado  one oldies 50s 60s 70s 80s
http://91.181.7.173:8000
#Death.FM
http://209.9.229.211:80

ストリーミング局を探す

ラジオ局のURLですが、僕は http://www.shoutcast.com/ で下記のようにm3uファイルをダウンロード、その中から取得しました。
f:id:yotazo:20150302145808j:plain

他にも色々あると思います。

Pythonからmpcを動かす

mpcでストリーミングを再生する場合、musicフォルダは関係ないので、

mpc clear
mpc load [プレイリスト]
mpc play

という流れになります。

これをPythonからやってみることにします。

pythonのプログラムからコマンドを実行するには、subprocess というモジュールを使えばいいとのこと。とにかくマニュアル通りにやってみます。

まず、モジュールを読み込み、

import subprocess

次に、subprocess.callを使い、mpc clear をコマンドとして送ります

subprocess.call('mpc clear', shell=True)

実はこの、subprocess.callとかsubprocess.Popenとか、subprocessモジュールについて理解するのに三日くらいかかりました・・・いや、まだ完全に理解したわけではありませんが、なんとなく使えるようになるのに三日くらいかかった感じです。

subprocess.Popenはオブジェクトが返ってきたりと高機能ですが、mpc clearやmpc loadは特に何も返ってこなくていいと思ったので、一番シンプルそうなsubprocess.callを使いました。文字列をコマンドとして送るので、shell=Trueを付けています。

同じようにプレイリストのロードと、再生のコマンドを送ります。

subprocess.call('mpc load radio.m3u', shell=True)
subprocess.call('mpc play', shell=True)

これでストリーミングの再生ができました!

でも、もうちょっと操作ができるようにしないと・・・

続く