Friday, September 27, 2013

mjpg-streamer on raspberry pi のすすめ

1FPS とかしかでないよという話題のでているraspberry piを使ったUVC 監視カメラですが、YUVとかの形式のデータを頑張って変換しようとしているからなんじゃないかと思ってます。手元の
UVC カメラではデバイス側で MJPEG形式でデータをはいてくるようになっていて、多分殆どのカメラではそうなってるんじゃないでしょうか。MJPEGはJPEGファイルを多数つなげたような形式でそれをほぼそのまま垂れ流せばいいだけのはずでraspberrypiがいくら遅いからってそれを使えばまともなFPSがでるんじゃないかとおもって調査してみました。

世間でmjpegをそのままHTTPサーバに出してくれるというツールが意外とないんですが、mjpg-streamerというツールがそれにあたるっぽいので試して見ました。

$ sudo apt-get install libjpeg-dev imagemagick libv4l-dev
$ svn co 'https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer' mjpg-streamer 
$ cd mjpg-streamer
$ make USE_LIBV4L2=true clean all
$ LD_LIBRARY_PATH=. ./mjpg_streamer -o "output_http.so -w ./www" -i "./input_uvc.so -f 30 -r vga"

以上で  http://hostname:8080/ にウェブサーバが立ち上がるのでそれにアクセスするとストリーミングで表示してくれます。

30fps, VGA でCPU負荷4%くらい。解像度あげるとフレームが落ちている気がするけど30fpsでてるのかどうかよくわからない。15fps以上は目で見ても差がよくわからないのでどうやって確認するのが良いのかな?



  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND                                                                  
 6938 pi        20   0 47392 2528 2184 S   4.2  0.5   0:02.16 mjpg_streamer
 2668 pi        20   0 17672 5220 1420 S   2.3  1.0   2:05.09 mosh-server

No comments:

Post a Comment