Viewer数のログを取得
最近RTMPの解析をしてまして、その副産物として こんなものが出来ました。
Mac OS X用のコマンドラインtoolですが、現在見ているUstreamの番組のViewer数をログに書き出せるようになります。自分でClientのRTMPコネクションを張るのも面倒だったので、tcpdumpと同じくpcapを使ってパケットを横取りして覗いているのでroot権限が必要です。
sudo ./UstViewers | tee log.txt
等のようにしてお使いください。コマンドラインツールの使い方も分からんという質問にはお答えできませんので悪しからず。と、突き放しモード。(^^;
いちおう、sudoで動かさないといけないので、心配な人もいるでしょうからつたないソースも… Mac OS Xでしかコンパイルもしていませんが、たぶんLinuxやCygwinでもコンパイル出来るんじゃないかと思います。たぶん gcc -std="c99" -o UstViewers -lpcap main.c でコンパイルできるハズ…(さくらインターネットのFreeBSDではこれでMakeできました、root権限無いしUstも見られないので動かしても意味無いですが…)
プログラミングには、こちらを参考にさせてもらいました。 http://www.tcpdump.org/pcap.htm
なんだかFlashのViewer数と20くらいの誤差があるようなんですが、なぜかは不明です。同じデータ見てるはずなんですけど、なんか拡張ルールがあるのかもしれません。こちらは、viewersとかAll viewersとかのストリングを見つけて、その後のdoubleらしき領域を読んでるだけなので、それ以上のルールがあるかどうかは不明なんで対処のしようがありません。
【追記】あまりにも雑な判定だったので、だいぶとんでもない値を表示したりする事があったり、データが取得できなかったりしたのを多少改善しました。(まだまだ真面目にはやってませんが…)それとExcelとかで後処理もしやすいように、tab区切りにして日付の表記も直しました。BSDライセンス条項もソースに追加しましたのでライセンス書いてないって記述を削除。
【追記2】どうもstdoutのflushがうまくできてなかったんですが、なんとか直せたようです。良かった。FreeBSDでコンパイルチェックもしてみたので、それについての記述を追加。
【追記3@2010.9.19】有線LANでしかチェックしてなかったので、無線LAN接続時にen1を指定できなくて困りました。-i en1と言う風にパラメータで監視インターフェースを指定できるようにしました。あと、Usageもプリントするように整備しました。
コメント