OS/2(あと Win32)のコンソールで radiko を聴く、的な
いわゆる rtmpdump でデータ落としてオンザフライで再生、的な感じのアレです。
とりあえず OS/2 版のバイナリ作っておきました。OpenSSL のランタイムも必須です。
なんかそれらしいキーワードでぐぐると「rtmpdump | ffmpegでflv(AAC)→wav(PCM) | 適当なプレーヤ」みたいな3段構えになってる例ばっかりだったのですが、AAC 再生に対応している mplayer なら(ほどよく -cache 指定すれば)rtmpdump の出力をそのまま再生可能です。ただし、先読みキャッシュ必須かつ mplayer 自身の再生開始処理のせいで再生時刻が少しズレます。
ということでなんとなくバッチファイル化してみますた。OS/2 用ですが Win32 でも使えます(実質1行だし)。Win32 版の mplayer はふつーにこのへんから取ってきました。rtmpdump はオフィシャルサイトの Windows 版 2.2b + OpenSSL-0.9.8k のランタイム DLL の組み合わせで Windows2000 で再生できました。
@echo off set RTMPDUMP=rtmpdump set RTMPSERVER=rtmpe://radiko.smartstream.ne.jp:1935 rem set RTMPOPT_SWF=-s "http://radiko.jp/player/player_0.0.9.swf" set RTMPOPT_SWF=-s "http://radiko-dl.ssdl1.smartstream.ne.jp/radiko-dl/1.1/player/player_0.1.2.swf" set RTMPOPT_URL=-p "http://radiko.jp/player/player.html" set MPLAYER=mplayer set MPLAYER_OPT=-cache 64 goto LOC_0 :README_JP_TXT listen_radiko.cmd コンソールで radiko.jp 再生、的なサンプル(Win32 とか OS/2 とか用) rtmpdump で抽出した flv ストリームをそのまま mplayer に(パイプでつないで) 食わせています。(mplayer が aac 再生可能でないとダメ) mplayer や rtmpdump にパスが通っていない場合はあらかじめ 設定(しておくか、ファイル先頭の環境変数指定を適当に変更)してください。 あと rtmpdump は OpenSSL のランタイム DLL が必須なので、適当にそれらしい パッケージを入手して、DLL を適切な場所に置いてください。 ダウンロード先(一例) OpenSSL ランタイム: Windows 版 http://code.google.com/p/openssl-for-windows/ OS/2 版 http://ebisa.hp.infoseek.co.jp/os2/index.htm#openssl (もしくは http://hobbes.nmsu.edu から openssl で検索) ちなみに、まともな中断方法はないので、適当に Ctrl-C を何度か叩くとか 外部から終了させるかといった方法をとっていただくことになります。 OS/2 の場合は "kiluu mplayer rtmpdump" が一番スマートな方法かもしれません。 割とマジで。 割と必須な mplayer オプション -cache 先読みキャッシュサイズ指定。今回のようなオンザフライの ストリーム再生にはほぼ必須だが、サイズを大きくすると そのぶんだけ再生時刻がずれる。 (自分の環境でまともに再生される最低限度の設定にしている ので、場合によってはもっと数値を増やしたほうがいいかも…) 環境によっては割と有用な mplayer オプション -ao オーディオ出力デバイス選択。 最近の OS/2 版だとデフォルトで uniaud 出力になるけど 現状では正直、環境選びすぎだと思われ… OS/2 版で dart 出力にする場合は -ao kai:dart とする。 すこし古めの OS/2 版の場合は -ao dart(もしくは無指定)。 -srate 出力サンプルレート強制指定 サウンドカードやドライバによっては 44.1KHz 系に指定しないと まともに音が出ない場合がある(-srate 44100)。 逆に 48KHz 系に指定しないとダメな場合もある(-srate 48000)。 (OS/2 のオーディオドライバはけっこう泥沼ですヨ、いやほんと…) 今回の場合はラジオクオリティな音質なので、22K/24K ぐらいの 指定をしてもいいのかも(-srate 22050 あるいは 24000)。 2010-03-31 OS/2 版のをすこし手直し(mplayer の OS/2 固有オプションを抜いといた) 2010-04-11 rtmp → rtmpe 2010-04-30 --swfUrl と --pageUrl オプション追加 (swf のほうだけつけとけばいい気もする…少なくとも今のところは) 2010-06-09 --swfUrl を現状にあわせて修正 :LOC_0 if not "x%1" == "x" goto LOC_play rem HELP echo radiko.jp コンソール再生テスト用バッチファイル echo 用法: %0 局名 echo 局名(東日本) echo TBS TBSラジオ echo QRR 文化放送 echo LFR ニッポン放送 echo NSB ラジオNIKKEI echo INT InterFM echo FMT Tokyo FM echo FMJ J-Wave echo 局名(西日本) echo ABC ABCラジオ echo MBS MBSラジオ echo OBC ラジオ大阪 echo CCL FM COCOLO echo 802 FM 80.2 echo FMO FM Osaka goto LOC_exit :LOC_play %RTMPDUMP% -q -vr "%RTMPSERVER%/%1/_defInst_/simul-stream" %RTMPOPT_SWF% %RTMPOPT_URL%| %MPLAYER% %MPLAYER_OPT% - :LOC_exit
はてなの構文ハイライトがバッチファイル未対応っぽいことに絶望した!brainfuck 未満の扱いであることに絶望した!
絶望したのでスーパーpre記法で(無効なのはわかっていながら)">|bat|" とか指定しておいた! 忘れたころに見直したらカラフルな表示になってるかもしれないからね…(ほんとに絶望してんの?)
(2010-04-30) とりあえず現時点で聴けるようにすこし直してみたりして。まあでも今後もちょろちょろ変わりそうな気はする…