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 上限があるので課題です。
こうなると、プラスチックケースと予備パーツが欲しくなってくるな〜。