Qwatch(TS-WLCAM)ゲットしたから画像ぶっこ抜いてみた.
知り合いがQWatchっていうネットワークカメラ買ったんだけど,持ってる回線がプライベートIPしか割り当てられて無くて使えなかったので僕が一時的に借りてます. IO-DATAの提供するDDNSとUPnPで外部に公開される仕組みになっていて,使い勝手は良さそうです. でもわざわざアプリとか認証付きのWebページで見てもつまらないので,データぶっこ抜いてみました.
Web画面
Web画面むっちゃしょぼくてウケた.
HTML
<img id="MJPEG_streaming" src="http://192.168.0.36:/snapshot.cgi" align="CENTER" width="640" height="480" _pageexpand_="8">
肝心のHTMLを見たところ,動画はimgタグだった... id属性から察するにMotion JPEGとなっているみたい. Motion JPEGはただ連続したJPEGになっているだけで,今回のようにHTMLにかかれている場合はMotion JPEG over HTTPでboundaryで区切られたマルチパートなHTTPボディになってる.
ソースコード gist6844563 普通にソケットでHTTPリクエスト飛ばしてるだけ. ぐぐったら,PythonでMotion JPEG over HTTPのプログラム書いてる人がいたんでそれを改良してみた.変更点はboundaryの判定がうまくいかなかったところの書き直し,Basic認証の追加,連続保存にしたところ.
実行
% python grab_mjpeg_frame.py 192.168.0.36 80 /snapshot.cgi IO-WLCAM password destfile.jpg destfile00000000000000000000.jpg destfile00000000000000000001.jpg destfile00000000000000000002.jpg destfile00000000000000000003.jpg destfile00000000000000000004.jpg destfile00000000000000000005.jpg destfile00000000000000000006.jpg destfile00000000000000000007.jpg destfile00000000000000000008.jpg
割とうまくいった.