2010/04/09
debianでradikoをエアチェック、mp3出力してみる
先月から始まった地上波ラジオのIPサイマルキャスト放送
「radiko」。ラジオ大好きだけど携帯電波すらシャットアウトする電波シールド完全装備の部屋に住んでるわしに取っては嬉しくて涙のちょちょ切れるサービス。
いろいろとエアチェックできるツールなんかも出回ったりで、朝から晩まで聞きたかった番組をエアチェックしてホクホクしてたのですが、ついこないだ
「radikoのセキュリティを強化する」なんてニュースがあり、エアチェックに使っていたツールが使えなくなってしまいました。
ちょっとショボくれつつネットを見ていると、どうも
「rtmpdump」と言うのを使えばイケそうな感じ。見ればlinuxでガッツリ使えそうなツールなので、「スクリプト書いてcronに入れれば俺ウハウハ」なので、エアチェックしてmp3に変換するスクリプトをcronに登録してみたらうまく行ったので、そのあたりの方法をば。いつもの事ながら対象はdebian linux(squeeze)です。
※ 以下はあくまでも個人で楽しむためのものです。よこしまな考えで使わないように。
※ 今後radikoがどんな規制をかけるか分からんので、あくまでも現時点での話です。
1. aptラインにdebian-multimediaを登録
rtmpdumpはデフォルトのaptラインにはないので、以下のaptラインを/etc/apt/sources.list に追加して、お決まりのapt-get update(またはaptitude update)。
[/etc/apt/sources.list]
deb http://www.debian-multimedia.org testing main
※ うちはsqueezeなので「testing」にしてますが、このあたりはお好みで。ただstableにあるかどうかは分からんです。
2.rtmpdumpとffmpeg、lameコーデックを取得
必要なそれぞれのパッケージをインストールします。
# apt-get install rtmpdump ffmpeg libmp3lame
※ ffmpegとlibmp3lameを入れてるのは、rtmpdumpだとAACのflvファイルしか吐いてくれないのでそこの変換用。もし別ツールがあるならいらないです。
3. rtmpdumpからファイル出力→mp3変換のスクリプトを書く
うちではこんな感じで書いてます。参考にどうぞ。
[/usr/local/bin/radikorec.sh]
#!/bin/sh
OUTFILEPREFIX=$1
RECTIMEMIN=$2
CHANNEL=$3
RTMPDUMP=/usr/bin/rtmpdump
RTMPDUMPOPT="-m 0 -s http://radiko-dl.ssdl1.smartstream.ne.jp/radiko-dl/1.1/player/player_0.1.2.swf -vr rtmpe://radiko.smartstream.ne.jp/$CHANNEL/_defInst_/simul-stream"
FFMPEG=/usr/bin/ffmpeg
FFMPEGOPT="-acodec libmp3lame"
OUTFILEBASEPATH=/home/localdata/radio
FLVFILEEXT=".flv"
MP3FILEEXT=".mp3"
MARGINTIMEMIN=1
OUTFLVFILENAME=$OUTFILEBASEPATH/$OUTFILEPREFIX-`date +%Y-%m-%d`$FLVFILEEXT
OUTMP3FILENAME=$OUTFILEBASEPATH/$OUTFILEPREFIX-`date +%Y-%m-%d`$MP3FILEEXT
RECTIME=`expr $RECTIMEMIN \* 60 + $MARGINTIMEMIN \* 2 \* 60`
cd $OUTFILEBASEPATH
$RTMPDUMP $RTMPDUMPOPT -B $RECTIME -o $OUTFLVFILENAME
$FFMPEG -i $OUTFLVFILENAME $FFMEPGOPT $OUTMP3FILENAME
※ 蛇足ながら追記。
※ 上記「OUTFILEBASEPATH」にローカルに保存するパスを指定しておくこと。
※ また、ネットでの遅延配信を考慮して、マージン分として1分(前後にするため内部ではx2しています)を「MARGINTIMEMIN」で指定してます。
※ まあ内容は適当に参考にしてください。ただRTMPDUMPOPTの値はキモなのでご注意を。
(10/04/16 仕様変更にてrejectされるようになったので修正。URL指定をしないとダメな模様)
上記バッチのパラメータオプションは以下のような感じです。
/usr/local/bin/radikorec.sh [出力ファイルのプレフィックス] [録音する分数] [録音するチャンネル]
チャンネル表記は公式radikoプレーヤで直リンする際に出てきた#以降の英大文字のやつを(「TBS」とか)。分かんなかったら「radiko 直リンク」とかで調べてみてください。
例として、TBSを2時間「baka」ってプレフィックスでエアチェックを実行するならこんな感じ。
# /usr/local/bin/radikorec.sh baka 120 TBS
うまく行けば2時間ちょいで指定したディレクトリに「baka-YY-MM-DD.flv」「baka-YY-MM-DD.mp3」ってファイルができるので、別途プレーヤーとかでmp3の方を。flvは中間ファイル扱いなので、mp3がうまくできているようなら削除するなりバックアップとして残すなりで。
4. cronに登録
3.の内容でうまくエアチェックできたら、あとはcronに突っ込めばOK。
例えば深夜ラジオ界で有名な痴豚様の番組なら、登録するcron行はこんな感じ。
59 00 * * 2 /usr/local/bin/radikorec.sh baka 120 TBS > /dev/null 2>&1
※(マージン分で実際の録音時間は122分になるため、前倒しで1分前に実行してます)
これで放っておいても
あれや
これや
こんなラジオがiPodとかに入れて聴けます。
またrtmpdumpはwindows版もあるので、うまいこと組み合わせればwindowsでも同じことができます。linux鯖がない方は挑戦してみればと。