読み込み時、/dev/zero は \0 を返す。 /dev/null は EOF を返す。
読み込み | 書き込み | |
---|---|---|
/dev/zero | \0を返す | 入力を破棄 |
/dev/null | EOFを返す | 入力を破棄 |
読み込み | 書き込み | |
---|---|---|
/dev/zero | \0を返す | 入力を破棄 |
/dev/null | EOFを返す | 入力を破棄 |
a2enmod proxy
a2enmod proxy_http
proxyだけだとダメでproxy_httpも有効化する必要がある。
proxy.confを編集。proxy_httpは編集するものは無い
# If you want to use apache2 as a forward proxy, uncomment the # 'ProxyRequests On' line and theblock below. # WARNING: Be careful to restrict access inside the block. # Open proxy servers are dangerous both to your network and to the # Internet at large. # # If you only want to use apache2 as a reverse proxy/gateway in # front of some web application server, you DON'T need # 'ProxyRequests On'. #ProxyRequests On # # AddDefaultCharset off # Order deny,allow # Deny from all # #Allow from .example.com # # Enable/disable the handling of HTTP/1.1 "Via:" headers. # ("Full" adds the server version; "Block" removes all outgoing Via: headers) # Set to one of: Off | On | Full | Block #ProxyVia Off ProxyRequests OffOrder deny,allow Allow from all ProxyPass /stream http://127.0.0.1:9999 ProxyPassReverse /stream http://127.0.0.1:9999 ProxyVia On
停電から復旧時は自動的に起動させたい
/usr/bin/mjpg_streamer -i input_uvc.so -d /dev/video0 -o output_http.so -p 9999 -www /home/httpd/mjpg_streamer
/usr/bin/mjpg_streamer -i input_uvc.so -d /dev/video0 -f 1 -r 1280x720 -o output_http.so -p 9999 -www /home/httpd/mjpg_streamerちゃんとうごきだすとCTRL+Cでストップするまで端末に戻ってこない。
java -jar cambozola.jar http://《ipアドレス》:9999/?action=stream -width=1280 -height=720 -accessorystyle=overlaymjpg_streamerと違うサイズを変更することもできるが、mjpg_streamer側から送られている画像を指定サイズに変換しているだけみたい。通信が軽くなる訳ではない。左肩に表示されるコントロールはデジタルズーム相当の機能
mjpg_streamerはhttpサーバの機能を持っているが、これを80番ポートで運用するとApacheとかと競合する。
競合を避けるため、mjpg_streamerは9999ポートでリッスンし、Apacheの方で工夫してやる。
今回はApacheのproxy機能を使って /stream/ へのアクセスがあったら 《mjpg_streamerマシンのipアドレス》:9999へ渡すようにした。
ubuntu(10.10)の場合は /etc/apache2/mods-available/proxy.conf に追記する必要がある。# If you want to use apache2 as a forward proxy, uncomment the # 'ProxyRequests On' line and the block below. # WARNING: Be careful to restrict access inside the block. # Open proxy servers are dangerous both to your network and to the # Internet at large. # # If you only want to use apache2 as a reverse proxy/gateway in # front of some web application server, you DON'T need # 'ProxyRequests On'. #ProxyRequests On # # AddDefaultCharset off # Order deny,allow # Deny from all # #Allow from .example.com # # Enable/disable the handling of HTTP/1.1 "Via:" headers. # ("Full" adds the server version; "Block" removes all outgoing Via: headers) # Set to one of: Off | On | Full | Block #ProxyVia Off ProxyRequests OffOrder deny,allow Allow from all ProxyPass /stream http://《mjpg_streamerマシンのipアドレス》:9999 ProxyPassReverse /stream http://《mjpg_streamerマシンのipアドレス》:9999 ProxyVia On
これで、 http://《webサーバのアドレス》/stream/?action=stream でストリームが見れるようになった。職場のF/W越えも出来てウハウハである。
/etc/rc.local
(/bin/su - 《ユーザ名》 《実行するスクリプト》> 《logファイル名へのフルパス》 2>&1 ) &
フルパスで指定する。
スクリプトは最初に30秒スリープさせている。/etc/rc.localの走るタイミングが早過ぎるらしく、スリープ無しで実行するとV4Lのエラーとなったため。カメラの認識前なのかな?
#!/bin/sh echo `date '+%Y/%m/%d (%a) %H:%M:%S (%Z)'`: delay 30 sec for start mjpg_streamer /bin/sleep 30 echo `date '+%Y/%m/%d (%a) %H:%M:%S (%Z)'`: start mjpg_streamer /usr/bin/mjpg_streamer -i "input_uvc.so -d /dev/video0 -f 1 -r 1280x720" -o "output_http.so -p 9999 -www /home/httpd/mjpg_streamer"
※http://d.hatena.ne.jp/DGL/20080119 を参考にさせて頂いた。