概要
Userspace Video4Linux frameworkは、mjpeg や vlc などの便利な extensions を用意してくれているので、これだけでストリーミング中継が可能です。この検証動画のように 画角は小さく、fps も高くありませんが、200ms ぐらいの遅延で中継が可能になります
UV4L のインストール
インストレーションはこちらの手順で行います
1.UV4L のパッケージを認証
wget http://www.linux-projects.org/listing/uv4l_repo/lrkey.asc && sudo apt-key add ./lrkey.asc
そして、nano で /etc/apt/sources.list を開いて
sudo nano /etc/apt/sources.list
末尾に下記を追加します。
deb http://www.linux-projects.org/listing/uv4l_repo/raspbian/ wheezy main
2.インストール
sudo apt-get update
sudo apt-get install uv4l uv4l-raspicam
sudo apt-get install uv4l-raspicam-extras
sudo rpi-update
sudo apt-get install uv4l-server
sudo apt-get install uv4l-uvc
sudo apt-get install uv4l-xscreen
sudo apt-get install uv4l-mjpegstream
私は途中、** could not open moddep file ** のエラーが出ましたがこちらを参考に一度リブートしてやり直すと無事にインストールできました
中継の開始
以下のように起動します
uv4l --auto-video_nr --driver raspicam --encoding mjpeg --server-option '--port=9000'
ブラウザで http://RaspberPiのアドレス:9000/stream/ にアクセスすると中継が始まっています。
ただ、これでは画角が大きく遅延が大きいのと、カメラを逆向きに付けたいので、--driver raspicam でさらに raspicam のオプションを追加して以下のように起動すると、この検証動画のように0.2秒程度の遅延で中継ができます
uv4l --auto-video_nr --driver raspicam --encoding mjpeg --server-option '--port=9000' --driver raspicam --rotation 180 --width 352 --height 288
中継の停止は
pkill uv4l
でOK です
#補足
Raspbian では標準では Video4Linux はありませんでした。歴史的(というほど年月が経っているわけでもないですが)な経緯はこちらにまとまっていますが、単に Video4Linux のドライバのみが必要な場合は、このユーザーモード版の UV4L の他にオフィシャルなカーネルモードの V4L を insmod して使う方法もあります。この2つは共存させることも可能です
Full Hivision での HLS での中継は、遅延が大きいですがこちらもご参照いただければ幸いです