読者です 読者をやめる 読者になる 読者になる

親子丼の備忘録(改)

親子丼の日常を綴った何か。専門的なことも書くかも?

ラズパイでラジオを聞いてみようの回。

技術的な備忘録

久しぶりの技術的備忘録です。
今回は「ラズパイでラジオを聞いてみようの回」です。

はじめに

今日はずっとRaspberry Piをいじっていました。
昨日セットアップしたラズパイで「ラジオを聞ける」ようにしたかったからです。
ラジオを聞く、といってもAM・FMチューナーを作ってラズパイで制御できるようにする、
という訳ではなく、NHKの「らじる★らじる」と「radiko」を
ラズパイで受信してスピーカーから流そう、というものです。
GUIだとブラウザ開いて終わりなのですが、コマンドラインだとそうは行きません・・・。
RTMPDUMPというコマンドを使ってストリーミングを視聴します。

動作環境

Raspberry Pi1 model B(古い方です。Pi2でも問題ないと思います)
OS : Raspbian Wheezy(最近jessieが来ましたが、インストールしてないので分かりません・・・。)
USB:変換名人・USB-SHS(USBオーディオ)
スピーカー:セリアのスピーカー(108円)
USBハブ:U2HS-T201SBK
f:id:oyakodon2109:20160213211048p:plain:w300

radiko/らじる★らじるを聞く。

聞くためのシェルスクリプトですが、ぐぐったらGistにありました。

radikoをlinuxで聞いたり録音したりするやつ · GitHub
簡易らじるらじる(NHK)録音スクリプト (2015/09 以降版) · GitHub

ですが、ここで安心はできず、少し修正が必要です。
まず、radikoスクリプトを参考にらじる★らじるスクリプトを修正します。
修正したものを僕のGistにあげておきます。

ラズパイでらじる★らじるを聞く。 / bash · GitHub

次にradikoスクリプトの「mplayer」コマンドに引数「-ao alsa:device=plughw=1.0」を追加します。
(USBオーディオを使用している場合。本体を使っている等環境が違うとdevice=の後を変更する必要があります。)
radiko.sh」171行目

mplayer -ao alsa:device=plughw=1.0 -

あと、使用するプログラムのインストールも忘れてはいけません。
(↑本来、コレを一番最初にやるべきなのですが・・・(汗))
使用するパッケージは 「rtmpdump swftools libxml2-utils mplayer」です。
あと、後々使う
「nginx php5 php5-fpm php5-cgi php5-cli php5-common」も一緒に入れておきましょう。
最後にスクリプトに権限を与えましょう。(chmod u+x [スクリプト名]) コレで再生する準備が整いました。
運命の「radiko.sh -p TBC」・・・。
キェェェェェアァァァァァシャベッタァァァァァァァ!!

(僕はここまで来るのに4時間かかりました(泣)
らじるが厄介でしたがswfVfyを_2015verにしてmplayerにflvで流したらうまくいきました。)

スマホから操作してみる。

ここから発展的内容。
僕はWEBサーバを建ててスマホからアクセスし、スマホでラジオを操作できるようにしよう
いう野望をいだきました。
で、野望を抱いてから4時間後、野望を成し遂げたので、そのことを書きたいと思いますw
まずはnginxとphp-fpmの設定をしてください。
「nginx php」とかと調べれば出てくると思うのでここでは割愛します。
f:id:oyakodon2109:20160213210053p:plain:w300

アクセスしてこんなページが表示されればOK。
そうしたら、ルートディレクトリ(index.htmlのある場所)に
「index.php」というファイルを作り、また先ほどのラジオを再生するスクリプトもコピーしておいてください。
index.phpはGistに上げました。
僕は宮城の人なのでNHK仙台放送局、radiko民法はTBCにしてあります。
このindex.phpはこのページを参考に作りました。
www.nakatayuki.com

ラジオをブラウザから操作する / php & html & jquery · GitHub

局を変更したい、とか局を増やしたい、もしくは録音したい時は
局名の変更:局を増やしたい:

case "[局名]":  
 exec("nohup /usr/bin/killall mplayer > /dev/null &");  
 exec("nohup /bin/bash [radiko/rajiru].sh -p [局名] > /dev/null &");  
 $content="再生を開始しました。";  
 break;

と変更し下に行って

<li><a href="index.php?id=[局名]">[局名(表示名)]</a></li>

を追加。
録音したい:

exec("nohup /bin/bash [radiko/rajiru].sh -d [出力先フォルダ] 
-f [ファイル名] -t [時間(分)] [局名] > /dev/null &", $e);

と変更。
ということでこんな感じになりました。
f:id:oyakodon2109:20160213210003p:plain:w300

スマホでもちゃんと操作出来ています。
f:id:oyakodon2109:20160213211304p:plain:h300

押してすぐ再生、というわけには行きませんが、満足しています。
今後もこのようにちょっと便利に面白くするようなものを作っていきたいですね。

広告を非表示にする