もう、このサイトの通りにやっただけ。
ここも参考にさせていただいた。
Raspberry Pi を想定して書かれているが、うちのOrange Piでも全く同様にやって配信できた。
以下の4つをインストールする。
libv4l-dev : Video for Linuxライブラリ
libjpeg8-dev : jpegランタイムライブラリ
imagemagick : 画像処理ライブラリ
subversion : バージョン管理クライアント(今回はmjpg-streamerダウンロードに使用する)
1 |
$ sudo apt-get install libv4l-dev libjpeg8-dev imagemagick subversion |
Video for Linuxライブラリヘッダファイルのシンボリックリンクを作る。
1 |
$ sudo ln -s /usr/include/linux/videodev2.h /usr/include/linux/videodev.h |
Subversionクライアントでmjpg-streamerをダウンロードする。
1 |
$ svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer/ mjpg-streamer |
mjpg-streamerディレクトリに移動して、make、installする。
1 2 3 |
$ cd mjpg-streamer $ make USE_LIBV4L2=true clean all $ sudo make DESTDIR=/usr install |
mjpg-streamerを起動する。
1 |
$ sudo mjpg_streamer -i "/usr/lib/input_uvc.so -d /dev/video0 -r 800x600 -f 20 -l off" -o "/usr/lib/output_http.so -p 8080 -w /usr/www" |
mjpg_streamer –help
で簡単なヘルプが表示される。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
mjpg_streamer --help ----------------------------------------------------------------------- Usage: mjpg_streamer -i | --input "<input-plugin.so> [parameters]" -o | --output "<output-plugin.so> [parameters]" [-h | --help ]........: display this help [-v | --version ].....: display version information [-b | --background]...: fork to the background, daemon mode ----------------------------------------------------------------------- Example #1: To open an UVC webcam "/dev/video1" and stream it via HTTP: mjpg_streamer -i "input_uvc.so -d /dev/video1" -o "output_http.so" ----------------------------------------------------------------------- Example #2: To open an UVC webcam and stream via HTTP port 8090: mjpg_streamer -i "input_uvc.so" -o "output_http.so -p 8090" ----------------------------------------------------------------------- Example #3: To get help for a certain input plugin: mjpg_streamer -i "input_uvc.so --help" ----------------------------------------------------------------------- In case the modules (=plugins) can not be found: * Set the default search path for the modules with: export LD_LIBRARY_PATH=/path/to/plugins, * or put the plugins into the "/lib/" or "/usr/lib" folder, * or instead of just providing the plugin file name, use a complete path and filename: mjpg_streamer -i "/path/to/modules/input_uvc.so" ----------------------------------------------------------------------- |
-i に続く[parameters]の部分に書くオプション
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[-d | --device ].......: video device to open (your camera) [-r | --resolution ]...: the resolution of the video device, can be one of the following strings: QSIF QCIF CGA QVGA CIF VGA SVGA XGA SXGA or a custom value like the following example: 640x480 [-f | --fps ]..........: frames per second [-y | --yuv ]..........: enable YUYV format and disable MJPEG mode [-q | --quality ]......: JPEG compression quality in percent (activates YUYV format, disables MJPEG) [-m | --minimum_size ].: drop frames smaller then this limit, useful if the webcam produces small-sized garbage frames may happen under low light conditions [-n | --no_dynctrl ]...: do not initalize dynctrls of Linux-UVC driver [-l | --led ]..........: switch the LED "on", "off", let it "blink" or leave it up to the driver using the value "auto" |
-o に続く[parameters]の部分に書くオプション
1 2 3 4 5 |
[-w | --www ]...........: folder that contains webpages in flat hierarchy (no subfolders) [-p | --port ]..........: TCP port for this HTTP server [-c | --credentials ]...: ask for "username:password" on connect [-n | --nocommands ]....: disable execution of commands |
あとは静止画の保存の時にもやったようにシェルスクリプトに書いて、起動時に自動実行させるようにする。
シェルスクリプトは以下のように書いて、mjpg-streamer.shとして保存、パーミッションを777にしておいた。
1 2 3 4 |
#!/bin/bash sudo mjpg_streamer -b \ -i "/usr/lib/input_uvc.so -d /dev/video0 -r 800x600 -f 20" \ -o "/usr/lib/output_http.so -p 8080 -w /usr/www" |
これをを/etc/init.d/に移動する。
1 |
sudo mv mjpg-streamer.sh /etc/init.d/ |
自動起動させるには以下のようにすると書いてあるのだが、
1 |
sudo insserv mjpg-streamer.sh |
私の環境ではinsserv(※1)が無いと叱られた。
先に
1 |
sudo ln -s /usr/lib/insserv/insserv /sbin/insserv |
を実行しておくとエラーが出ずに設定され、再起動するとストリーミングが自動的に開始される。
こういうのをシンボリックリンクを張ると言うんだって。
と言うわけで、これで、とりあえず我が家のWiFi圏内なら、配信される動画をどこでもチェックできる。
念頭にあるのは、何となく完全に目を離すのはちょっと、という微妙な状況の3Dプリンターの印刷時の状況チェックのための動画配信だ。
最長で6時間程度は問題なく動くことが実証済だが、中華基板、中華電源で数アンペア流しながら可動部分多数、という到底安全性を過信する気にはなれない代物をとにかく逐一モニターできるようにはなる。
※1
inssev について斜めに調べた限りでは、どうやらここでは起動時に実行するプログラムを指定するのに使われているようだ。
つまり、起動時にWEBカメラの映像のストリーミングを開始するようにしたってわけ。
「Orange Pi + C270 + eBay廉価カメラ で動画を2つストリーミング配信する。」へ続く。
Tweet