WebカメラをCuBoxに接続して、ネットワーク越しに動画をストリーミングするのが今回のお題、mjpg-streamerです。
mjpg-streamerを使って、UVCカメラ (Universal Video Class、UVCに対応したカメラは、ホストドライバ不要で動作します)を使ったストリーミング配信ができます。zoneminderというアプリを動かそうとして、何故か使うことになってしまった経緯があったのだが、mjpg-streamerだけをとりだして紹介をしておきたい。動画のmpegと静止画のjpegを混ぜたような名前からも想像がつく通り、動画を静止画のjpeg画像の塊として(パラパラまんがのイメージ)扱い、ストリーミングするツールとなっている。
ソースからコンパイルすることになるので、基本はsvn coでダウンロードしてきて(サブバージョン、バージョン管理をするツール)使うのがスジであるが、CuBoxマシン上では、メモリを節約したい都合があるときはまあ無理しないでもいいでしょう。CuBox上で作業をするためには最低限gcc とかmakeはインストールしておきます。
また、mjpegとあるだけにjpeg変換ができないと使えないので、あらかじめlibjpeg-develはインストールが必要となる。
まずソースのゲットから。
|
mjpg-streamer-r63.tar.gzをダウンロードします。
これを任意のディレクトリで解凍。
# tar xvzf mjpg-streamer-r63.tar.gz |
コンパイルするためにlibjpeg8-devをインストール
# apt-get install libjpeg8-dev |
シンボリックリンクを作成
# ln -s /usr/include/linux/videodev2.h /usr/include/linux/videodev.h |
コンパイル
# cd mjpg-streamer-r63 # make |
参考までに)サブバージョンを使うならばコマンドは以下のようにします
apt-get install subversion libjpeg-dev imagemagick svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer mjpg-streamer |
mjpg-streamerを使用するには以下のコマンドを入力します。表示の確認にはブラウザを使いますが、別途Apacheを用意する必要はありません。
# ./mjpg_streamer --help |
でヘルプが見られるのでオプション設定を確認されたい。
# ./mjpg_streamer -i "./input_uvc.so -d /dev/video0 -y" -o "./output_http.so -w ./www -p 8080 -c username:password" -b |
(# ./mjpg_streamer -i "入力側 -d 使用するデバイス -y YUYV(&disable MPEG)" -o "出力側 -w Web表示用のファイルプレース -p ポート -c ユーザ名:パスワード(パスワード設定をしている場合のみ)")
ストリーミング動画画面だけを表示するなら
http://ドメイン名:8080/?Action=streaming (なお、一枚画像のみだと =snapshot ) |
使用するブラウザですが、IEでは表示できません。Chrome, Firefox, MacOS/iOSのSafariは表示できます。
相当にCPUを食います。
mjpg-streamerを構築する際、エラーがでた場合にのエラー対応例は
http://wiki.ubuntuusers.de/MJPG-Streamer
が一番詳しい。
http://ドメイン名:8080/ とすると以下のようなデモ解説画面で表示される。
ルーター越しにアクセスする環境を設定すれば、例えば自宅においたWebカメラのストリーミング映像をスマホからアクセスすることも可能となる。
コメントをお書きください