Raspberry Pi で遊ぶ (3) —Radiko の録音サーバーとして—

Raspberry Pi (RPi) で思いついたことをやってみる記事の3つ目。今回は RPi を Radiko の録音サーバーにしてみる。スクリプト (rec_radiko.sh) を作成してくださっている方がいらっしゃるので、利用させていただく。

Radiko

まず依存関係にあるパッケージを入手しておいて、録音用スクリプト (rec_radiko.sh) をパスの通ったところに配置しておく。

$ sudo apt-get install rtmpdump swftools libxml2-utils ffmpeg
$ cd ~/bin
$ wget https://gist.github.com/raw/3956266/0dc83895770e26a7c37104d896a150c8bb1dffbb/rec_radiko.sh
$ chmod +x rec_radiko.sh

使用方法は以下の通り。チャンネルは radiko 参加放送局一覧 を参照する。

rec_radiko.sh チャンネル 録音時間(分) 保存先ディレクトリ 

rec_radiko.sh を実行して実際に録音できることを確認する。

$ rec_radiko.sh TBS 1 ~/tmp

Radiko を今すぐ再生するにはスクリプトの最後の行を以下のように mplayer に編集すればよいらしい。

play_radiko.sh:

# (上略)

rtmpdump -v \
-r ${url_parts[0]} \
--app ${url_parts[1]} \
--playpath ${url_parts[2]} \
-W $playerurl \
-C S:"" -C S:"" -C S:"" -C S:$authtoken \
--live \
--stop ${DURATION} | mplayer -

# ここまで

録音

ラジオの録音データは移動中などに聞きたくなることが多いので、いつでもアクセスできるように保存先はクラウドを指定しておくことにした。前回 と同様に ownCloud を利用する。RPi にマウントする方法は以下の通り。

$ sudo mount -t davfs https://example.com/owncloud/remote.php/webdav -o uid=1000,gid=1000 /mnt/owncloud/
$ mkdir -p /mnt/owncloud/Radiko

例えば、毎週日曜日 15:00〜17:00 に放送されている BARAKAN BEAT を録音するには以下のように cron に登録しておく。スクリプトは開始してから若干タイムラグがあるので念のため1分前から始めている。

# BARAKAN BEAT
59 14 * * 0 rec_radiko.sh INT 121 /mnt/owncloud/Radiko/INT/BARAKAN

ちなみに、Radiko の録音データは私的利用に限られる。念のため。

【追記 2013/03/22】

RPi で Radiko 録音中の CPU 使用率はおおよそ 10% 強ほど (psensor-server でモニタ)。

https://skalldan.files.wordpress.com/2013/03/wpid-radiko_rec.png

最後のエンコードの過程で 100% に達する。RPi にはエンコード作業は少し苦しそう。

https://skalldan.files.wordpress.com/2013/03/wpid-radiko_encode.png

radiko_cpu_usage.png

ただ、この一ヶ月ほど RPi で Radiko の録音を cron で定期的に行なっているが、サーバー自体が落ちるという事はなかった。概ね安定して運用できる様子。

Advertisements

One thought on “Raspberry Pi で遊ぶ (3) —Radiko の録音サーバーとして—

  1. Pingback: Raspberry Pi で遊ぶ (3) —Radiko の録音サーバーとして— – gutar.out

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s