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