Raspberry Pi2 でラジコ録音を試してみる

FreeBSD サーバー構築で時間を取られていて、ここしばらく Raspberry Pi2 に触れていませんでした。

Raspberry Pi 2 の利用方法をまだ決めていませんが、低消費電力を活かしてラジコの録音サーバーなんか良さそうだと思っています。今は、PCハードウェアで録音しているので、最低でも30Wは消費している計算。Raspberry なら 5W以下運用が可能そうですが、録音ファイルがSDメモリに置かれるのでSDメモリの寿命がちょっと心配。

しかし、消費電力を議論する前に、技術的に可能なのかどうかを試さないといけません。(基本的には Debian と FreeBSD が動くので可能なはず。)

録音できた場合、Raspbian 上で聞きたいとは思わないので、録音が終わったら自動的に Dropbox サーバーに転送できれば、後はどうとでもなります。

ということで、本日は、Radiko 録音と、Dropbox への転送を試す事にしました。
余談ですが、リアルタイムラジコ聴取は単純に、GUI を立ち上げてFireFoxかChromeをインストールし、Radiko.jp をアクセスすれば出来ることが予想されますので、今の時点でテストを行う予定はありません。

OS

先日 WordPress の動作確認を行ったRaspbian に追加する形でテストを実施

$ uname -a
Linux raspberrypi 4.1.6-v7+ #810 SMP PREEMPT Tue Aug 18 15:32:12 BST 2015 armv7l GNU/Linux

ラジコ録音

過去、FreeBSD でラジコ録音を行うために行った手順を実施しました。

まず、次のパッケージがインストールされている必要があります。

  • rtmpdump
  • swftools (コマンドは swfextract)
  • wget
  • base64
  • ffmpeg

WordPress をインストールした関係かもしれませんが、wget, base64 はインストール済みだったため、apt-get または aptitude で、残りの rtmpdump, swftools, ffmpeg をインストールしました。

sudo apt-get install rtmpdump swftools ffmpeg

という感じ。

その後で、ラジコ録音用スクリプト radiko.sh を現在運用中のサーバーからコピー&実行してみたところ、

pi@raspberrypi /tmp/radiko_out $ ~/bin/radiko.sh TBS 22:29
date: invalid option -- 'v'
Try `date --help' for more information.
authtoken: 6RXQa6F9W5twayYSPegn8Q 
offset: 139026 length: 16 
partialkey: 57VFDIfLBIOOBjB4GRke9A==
authentication success
areaid: JP13
RTMPDump v2.4
(c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL
Connecting ...
WARNING: Trying different position for server digest!
INFO: Connected...
Starting Live Stream
For duration: 78.000 sec
INFO: Metadata:
INFO:   StreamTitle           
475.506 kB / 78.04 sec
Download complete

dateコマンドのオプションに問題があったものの、録音できました。

調べてみたところ、date コマンドのエラーは FreeBSD と Linux で date コマンドの仕様が違うためでした。

date -v +1M +%Y%m%d%H%M → date +%Y%m%d%H%M

という行の “-v +1M” というところが linux では使えないようです。これを外すと録音、ファイル名とも仕様通りになりましたが、録音終了時刻を調整する部分なので、録音時間に1分影響が出るかも。でもそれは、録音時間の調整でなんとでもなるので、テスト段階では気にしなくてもいいでしょう。

録音テストなので、現時点では ffmpeg は不要です。

Dropbox を利用する

dropbox との同期には、FreeBSD でお世話になっている dropbox-api-command を使用する事にします。
Raspbian へのインストールは、https://github.com/s-aska/dropbox-api-command のページにある Ubuntu Linuxへのインストール情報をそのまま実行しますが、ビルドするためのパッケージの殆どは既にインストール済みなので、実際には libssl-dev だけを追加インストール。

root@raspberrypi:/home/pi# wget https://raw.github.com/miyagawa/cpanminus/master/cpanm
--2015-09-21 21:15:36--  https://raw.github.com/miyagawa/cpanminus/master/cpanm
Resolving raw.github.com (raw.github.com)... 23.235.47.133
Connecting to raw.github.com (raw.github.com)|23.235.47.133|:443... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://raw.githubusercontent.com/miyagawa/cpanminus/master/cpanm [following]
--2015-09-21 21:15:40--  https://raw.githubusercontent.com/miyagawa/cpanminus/master/cpanm
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 23.235.47.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|23.235.47.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 303836 (297K) [text/plain]
Saving to: `cpanm'

100%[======================================================================>] 303,836      410K/s   in 0.7s    

2015-09-21 21:15:44 (410 KB/s) - `cpanm' saved [303836/303836]

root@raspberrypi:/home/pi# sudo perl cpanm App::dropboxapi
--> Working on App::dropboxapi
Fetching http://www.cpan.org/authors/id/A/AS/ASKADNA/App-dropboxapi-1.17.tar.gz ... OK
Configuring App-dropboxapi-1.17 ... OK
<このあとは省略>

入力するコマンドは簡単ですが、インストールに掛かる時間は結構長かった。

このあとで、dropbox-api sync コマンドを試してみたところ、

pi@raspberrypi /tmp/radiko_out $ dropbox-api sync /tmp/radiko_out/ dropbox:/Public/
upload TBS_201509212304_1.flv /Public/TBS_201509212304_1.flv
upload TBS__1.flv /Public/TBS__1.flv

という感じの結果になり、Dropbox との同期もいけるじゃない!
出来そうだとは思っていたものの、コアになるプログラムは実際に動かしてみないとね。

ということで、今日はここまで。

あとは、スクリプトを書いて crontab に登録すればいいだけのようです。flv から AAC への変換を Raspberry Pi2 にやらせるかどうかは電源アダプタ容量の1000mA 上限があるので課題です。

こうなると、プラスチックケースと予備パーツが欲しくなってくるな〜。

コメントを残す