radikool が落ちまくる
わたしはat コマンド + python で録音できるので 問題ないのですが、家族がradikool で録音したのですが・・・radikool不安定すぎて苦情が俺のところに来る。
radikoolのソースコード落ちてないかなと思ったら作者さんはソースコード公開してない模様。てか作者you ってもしかしてヤツか。。。ヤツだ奴に違いない。
radiko を予約録音できるexeでもつくろう
radikoolが動かない程度で、電話かかってきては私もツライ。もう面倒だから録音できるEXEをつくろうと思う。
Windowsでradikoを録音するには、netFramework でアレコレやらなくちゃいけないんだけど。
が必要なんだけど、、とりあえず、rtmpdumpのlibrtmp を動かしてストリーム取得してみることにした。
GUI作る前に、とりあえず、ライブラリを作っておかないと。。。
librtmp を使って らじる★らじる NHK FMをストリーム
librtmp を使って、らじる★らじるをストリーム取得してみよう
rtmpdump を使った再生
rtmpdumpコマンドを使った再生は、次のようなコマンド一発で終わる。alias登録しても問題ないほどに単純なコマンド。
rtmpdump --rtmp "rtmpe://netradio-r1-flash.nhk.jp" \ --playpath 'NetRadio_R1_flash@63346' \ --app "live" \ -W http://www3.nhk.or.jp/netradio/files/swf/rtmpe.swf \ --live \ | mplayer -
今回は、rtmpdumpに引数を与えて起動している部分をlibrtmpを使って、C言語で書いてみることにした。
2015-03-25 追記 注意 rtmpdump のバージョン
OSXでrtmpdump はバージョンでらじる★らじる再生失敗するので、再生できない時は、Macのhomebrew を見直す
brew uninstall rtmpdump brew install --HEAD rtmpdump
ソースコードの実行方法。
ファイルのコンパイル。
gcc main.c -lrtmp -o radiru_nhk_fm
ライブラリパスに、librtmp がない場合は、適当にインストールしておく。
聴取はコレ。
作ったコマンドはSTDOUTにバイナリを出すだけなので、聴取するにはmplayer のSTDINに渡す。
./radiru_nhk_fm | mplayer -
これで、うん、動いた。3時間ほどかかったけど、librtmp を使うことが出来た。
ソースコード
librtmp を使う手順
RTMP_Init(&rtmp); RTMP_SetupURL(&rtmp, url); RTMP_SetupStream(&rtmp, protocol, &hostname, port, &sockshost, &playpath, &tcUrl, &swfUrl, &pageUrl, &app, &auth, &swfHash, swfSize, &flashVer, &subscribepath, &usherToken, dSeek, dStopOffset, bLiveStream, timeout); RTMP_SetBufferMS(&rtmp, bufferTime); RTMP_Connect(&rtmp, NULL);
この順番で呼び出す。 RTMP_ConnectStream は使わなくてもいいみたい。
AVal はこの構造で定義される。
AVal = { "文字列", "長さ" }
RTMP_ParseURL で、url を解析してくれるけど、app 名は手作業だった。
RTMP_HashSWFはなんでいるかわからないけど、なんか必要みたい。
正しく接続できたか確認するには
RTMP_IsConnected(&rtmp)
を使えば取得できる。RTMP_IsConnected(&rtmp)が TRUEを返すまで頑張る。
次は、librtmp を使ってRadikoを再生してみよう。