
ラズベリーパイでFM COCOLOや FM 802のラジオを聞きたいですよね。
ラズベリーパイを使えば1日中radikoを聞くことができますよ。1か月聞きっぱなしでもコストは電気代の約50円だけ。
しかも、スマホやPCからラズベリーパイのラジオをリモートコントロールできます。
21世紀的ですね。さっそくやってみましょう。
1. mplayerとrtmpdumpをインストールします。
$ sudo apt-get install mplayer
$ sudo apt-get install rtmpdump swftools libxml2-utils
mplayerで持っている音声ファイルmp3の音が出るか試してみてください。
$ mplayer 音声ファイル.mp3
音が流れたら成功です。
2. play_radiko.shをダウンロード
play_radiko.sh シェルスクリプトを下のリンクからダウンロードしてください。
https://gist.github.com/ihsoy-s/5292735
play_radiko.sh を編集します。
作成するディレクトリを指定します。
私はoutdirを下の変更しました。
outdir="/home/pi/radio/"
これで /home/pi/radio/ディレクトリが作成されるようになります。
$ sudo chmod +x play_radiko.sh
$ sudo cp play_radiko.sh /usr/bin/play_radiko.sh
3. ラジオを再生してみよう
試しにFM COCOLOを流してみましょう。
$ play_radiko.sh CCL
FM 802を再生してみましょう。
$ play_radiko.sh 802
CCLがFM COCOLOです。802がFM 802。
ラジオ曲の放送局IDは以下のリンクで確認できます。
http://www.dcc-jpl.com/foltia/wiki/radikomemo
4. ブラウザからリモートコントロールしよう。
ラズベリーパイからラジオを再生することができたら、ブラウザからリモートコントロールできるようにしましょう。
ここまでは簡単でした。
実はここからが本題で、難しいかもしれません。
今回ここは解説を省略します。
IPアドレスを固定してウェブサーバーを立ててください。
私は軽量のnginxとphpでウェブサーバーを立てています。定番のapacheでもいいです。
IPアドレスは192.168.0.101にしています。
IPアドレスは毎回起動時に変動すると面倒なので固定IPアドレスにします。
5. ウェブサーバーから音を鳴らせるようにしよう。
ブラウザからコマンドを実行させて音を鳴るようにする必要があります。
$ usermod -G www-data, audio www-data
要するにウェブサーバーをaudioグループに追加しています。
apacheやnginx, ともにデフォルトでwww-dataになっていますので、これで良いと思います。
更新の仕方が分からないので、ここで一度再起動しました。
6. index.phpを作成しよう。
ウェブサーバーを無事に立てれたとします。
以下のphpをindex.phpで保存して、ウェブルートに置いてください。
<?php
//radiko player
//http://www.nakatayuki.com/
if(isset($_GET['id'])){
$id = $_GET['id'];
if($id=="stop"){
exec("killall mplayer");
}else if($id=="CCL"){
exec("killall mplayer");
exec("play_radiko.sh CCL", $e);
}else if($id=="802"){
exec("killall mplayer");
exec("play_radiko.sh 802", $e);
}else if($id=="ABC"){
exec("killall mplayer");
exec("play_radiko.sh ABC", $e);
}else if($id=="MBS"){
exec("killall mplayer");
exec("play_radiko.sh MBS", $e);
}else if($id=="OBC"){
exec("killall mplayer");
exec("play_radiko.sh OBC", $e);
}else if($id=="RN1"){
exec("killall mplayer");
exec("play_radiko.sh RN1", $e);
}else if($id=="RN2"){
exec("killall mplayer");
exec("play_radiko.sh RN2", $e);
}else if($id=="CRK"){
exec("killall mplayer");
exec("play_radiko.sh CRK", $e);
}else if($id=="KISSFMKOBE"){
exec("killall mplayer");
exec("play_radiko.sh KISSFMKOBE", $e);
}else if($id=="HOUSOU-DAIGAKU"){
exec("killall mplayer");
exec("play_radiko.sh HOUSOU-DAIGAKU", $e);
}
}
?>
<html>
<head>
<meta name="viewport" content="width=device-width">
</head>
<body>
<p><a href="index.php?id=stop">stop</a></p>
<ul>
<li><a href="index.php?id=802">FM 802</a></li>
<li><a href="index.php?id=CCL">FM COCOLO</a></li>
<li><a href="index.php?id=ABC">ABC Radio</a></li>
<li><a href="index.php?id=MBS">MBS Radio</a></li>
<li><a href="index.php?id=OBC">OBC Radio Osaka</a></li>
<li><a href="index.php?id=RN1">Radio NIKKEI 1</a></li>
<li><a href="index.php?id=RN2" >Radio NIKKEI2</a></li>
<li><a href="index.php?id=CRK" >CRK Radio Kansai</a></li>
<li><a href="index.php?id=KISSFMKOBE" >Kiss FM KOBE</a></li>
<li><a href="index.php?id=HOUSOU-DAIGAKU" >HOUSOU DAIGAKU</a></li>
</ul>
</body>
</html>

パソコンからラズベリーパイにアクセスしたところ。
IPアドレスにアクセスします。私の環境ではhttp://192.168.0.101 です。
ラジオ曲をクリックするとラジオの再生が始まります。
STOPで停止ができます。
ラズベリーパイでラジオライフを楽しんでくださあい。でわ。
コメント
コメント一覧 (2)
当方シェルスクリプトはあまり馴染みがないのですが、こちらのplay_radiko.shはctrl+cを押して再生を止めない限り、次のコマンドを打ち込めない仕様となっているようですが、これをctrl+cを押さず、再生も続いたまま次のコマンドを打ち込めるように改造することは可能でしょうか?
できると思いますよ。
コマンドの最後に&を付けます。
$ play_radiko.sh 802 &
参考URL
http://itpro.nikkeibp.co.jp/article/COLUMN/20060224/230589/