ipcam
Sample application for "V4L2 for Ruby".
Installation
Add this line to your application's Gemfile:
gem 'ipcam'
And then execute:
$ bundle
Or install it yourself as:
$ gem install ipcam
Usage
Connect a camera device compatible with V4L2 and start ipcam as follows.
ipcam [options] [device-file]
options:
--use-ssl
--ssl-cert=CRT-FILE
--ssl-key=KEY-FILE
-D, --digest-auth=YAML-FILE
-A, --add-user
--bind=ADDR
--port=PORT
-d, --database-file=FILE
-e, --extend-header
--log-file=FILE
--log-age=AGE
--log-size=SIZE
--log-level=LEVEL
--develop-mode
Then connect to port 4567 by http browser and operate. The accessible URLs are as follows.
- http://$HOST:4567/
redicrect to /main - http://$HOST:4567/main
preview and settings - http://$HOST:4567/stream
http streaming
options
- --use-ssl
- Specify use SSL/TLS. If you use this option, shall specify a certificate file and a key file (Use the --ssl-cert and --ssl-key options).
- --ssl-cert=CRT-FILE
- Specifies the file that contains the X 509 server certificate.
- --ssl-key=KEY-FILE
- Specifies the key file that was used when the certificate was created.
- -D, --digest-auth=YAML-FILE
- Specifies to use restrict access by Digest Authentication. This argument is followed by a password file written in YAML.
- -A, --add-user
- Add entry to the password file. If this option is specified, the user name and password must be specified as arguments. And if you specify this option, only to add an entry to the password file to exit this application.
Overwrites the entry if you specify an existing user name. - --bind=ADDR
- Specify the address to which the HTTP server binds. by default, IPv6 any address("::") is used.
- --port=PORT
- Specify the port number to which the HTTP server binds. by default 4567 is used.
- -d, --database-file=FILE
- Specify the file name to save the camera setting value. by default, it tries to save to "~/.ipcam.db".
- -e, --extend-header
- Add extend header to part data (for debug).
- --log-file=FILE
- --log-age=AGE
- --log-level=LEVEL
Use digest authentication
To restrict access by digest authentication, the password file written in YAML must be specified in the "--digest-auth" option. This file must be YAML-encoded map data of A1 strings (ref. RFC 7616) keyed by the user name.
This file can be created using the "--add-user" option. The actual procedure is as follows.
Create password file
create password file, and add user "foo"
If specified password file does not exist and the "--digest-auth" and "--add-user" options are specified together, new password file containing user entry will be created.
ipcam --digest-auth passwd.yml --add-user foo XXXXXXX
and add user "bar"
If specified password file exists and the "--digest-auth" option and "--add-user" option are specified together, a user entry is added to the password file.
ipcam --digest-auth passwd.yml --add-user bar YYYYYY
Run the server
If only the "--digest-auth" option is specified, the server is started and performs digest authentication with the specified password file.
ipcam --digest-auth passwd.yml --use-ssl --ssl-cert cert/server.crt --ssl-key cert/server.key /dev/video0
Delete user from password file
To delete a user, edit the YAML file directly.
Device file
specify target device file (ex: /dev/video1). if omittedm, it will use "/dev/video0".
etc
About image data
いらすとや (https://www.irasutoya.com) で配布されている『特撮映画のイラスト』(https://www.irasutoya.com/2018/12/blog-post_90.html) を改変して使用しています。
License
The gem is available as open source under the terms of the MIT License.