radikoをフラッシュ無しで再生

普段ラジオ聞かないけど。

この情報はradikoの仕様変更前のものです。より新しい情報は新しい記事を参照してください。

rtmpdumpに含まれるrtmpgwを使う場合。

./rtmpgw --rtmp "rtmp://radiko.smartstream.ne.jp:1935" --playpath "simul-stream" --swfUrl "http://radiko.jp/player/player_0.0.9.swf" --pageUrl "http://radiko.jp/player/player.html#QRR" --app "QRR/_defInst_" --flashVer "LNX 10,0,45,2" --live --device 127.0.0.1 --sport 8088
mplayer http://127.0.0.1:8088

ffplay http://127.0.0.1:8088 だとRangeヘッダのせいでうまくいかない。

直接ffplayを使う場合

以下のパッチを当てる必要あり。

Index: libavformat/rtmpproto.c
===================================================================
--- libavformat/rtmpproto.c     (リビジョン 22539)
+++ libavformat/rtmpproto.c     (作業コピー)
@@ -843,7 +843,7 @@
         } else {
             char *c = strchr(p + 1, ':');
             fname = strchr(p + 1, '/');
-            if (!fname || c < fname) {
+            if (!fname || (c && c < fname)) {
                 fname = p + 1;
                 av_strlcpy(rt->app, path + 1, p - path);
             } else {

んで以下で再生可能。

./ffplay rtmp://radiko.smartstream.ne.jp:1935/QRR/_defInst_/simul-stream

直接mplayerも同様のパッチとURLでうまくいくと思う。

パッチ送ろうかと思ったけどIP制限されていない適切な例が見つけられないのと、いくつかのrtmpのurlを見るにここら辺のコードが間違ってる予感がするので仕様を調べるまで保留。



一応録音の方法も書いておくか(SEO的に考えて)。
上記パッチ当てたFFmpegなら、以下を実行するだけでおk。

./ffmpeg -i rtmp://radiko.smartstream.ne.jp:1935/QRR/_defInst_/simul-stream -acodec copy qrr.aac

ffserver使って携帯機器から聞く方法も書きたかったが、クラッシュしたり雑音しか発生しなかったりで諦めた。