ONVIF Device Reference Design - Evaluating the Project using Docker
Make sure you also check Onvif Device Reference Design's companion project: Onvif device server |
ONVIF Device Reference Design |
---|
Project Architecture |
Getting Started |
Reference Designs |
Customizing the Project |
Contact Us |
Introduction
RidgeRun provides an evaluation version within a Docker container which is limited to 5 min of execution of web page and ONVIF device support. This evaluation has to be implemented in a NVIDIA Jetson platform, and it includes all the dependencies in their evaluation version. These dependencies are libonvif and rtsp-sink.
Hardware setup
This section specifies the minimum hardware setup so the container can run as expected, which is:
- The JetPack version running on the board has to match the one pulled with docker. For instance, if the board is running a 32.5.0 meta tegra version, then the tag used by Docker should be onvif-jetson:r32.5.0.
- The board should has at least one MIPI camera.
Install docker
To install the docker package in a Jetson device, follow the instructions in the next link: Install Docker Engine on Ubuntu.
How to run
A link with the project image will be shared. Download it copy it in the Jetson platform. Load the ONVIF image:
$ docker load < onvif-server-ref-design-file.tar
To double check it the ONVIF image where correctly loaded, run:
$ docker images
The command above will show the two ONVIF images, one with a tag labeled as r32.5.0, and another one labeled as r32.6.0.
REPOSITORY TAG IMAGE ID CREATED SIZE onvif-reference-design-eval-jetson r32.5.0 d5fe1644f5e8 2 weeks ago 2.79GB onvif-reference-design-eval-jetson r32.6.0 d5fe1644f5e8 2 weeks ago 2.79GB
To run the evaluation docker, use the following command (the tag can be changed by r32.5.0 or r32.6.0):
$ sudo docker run --name onvif --net=host --runtime nvidia --rm --ipc=host -v /tmp/.X11-unix/:/tmp/.X11-unix/ -v /tmp/argus_socket:/tmp/argus_socket --cap-add SYS_PTRACE --privileged -v /dev:/dev -v /proc:/writable_proc -e DISPLAY=$DISPLAY -it onvif-reference-design-eval-jetson:tag
This message will appear in the terminal, indicating that the evaluation version is running correctly.
************************************* *** THIS IS AN EVALUATION VERSION *** ************************************* Thanks for evaluating RidgeRun OnvifServer This version allows you to use the library for 300 seconds. Please contact <support@ridgerun.com> to purchase the professional version of this library. ************************************* *** THIS IS AN EVALUATION VERSION *** *************************************
Get the web URL
The web URL can be accessed by writing the following address in a browser https://Jetson-IP-address/:8092/. This browser has to run in the same network as the ONVIF server. One way to get the IP address of the board is to open a terminal window and run the following command:
$ ifconfig
The output of the command will look like this:
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255 inet6 fe80::42:34ff:fe3f:51b0 prefixlen 64 scopeid 0x20<link> ether 02:42:34:3f:51:b0 txqueuelen 0 (Ethernet) RX packets 274 bytes 26371 (26.3 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 312 bytes 960054 (960.0 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.100.167 netmask 255.255.255.0 broadcast 192.168.100.255 inet6 fe80::7588:c406:506d:2572 prefixlen 64 scopeid 0x20<link> ether 00:04:4b:cb:ea:a2 txqueuelen 1000 (Ethernet) RX packets 12417 bytes 7458841 (7.4 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 3854 bytes 2239891 (2.2 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 41 l4tbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.55.1 netmask 255.255.255.0 broadcast 192.168.55.255 inet6 fe80::58cc:a9ff:fe25:e775 prefixlen 64 scopeid 0x20<link> inet6 fe80::1 prefixlen 128 scopeid 0x20<link> ether 5a:cc:a9:25:e7:75 txqueuelen 1000 (Ethernet) RX packets 1218 bytes 311630 (311.6 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 1238 bytes 286030 (286.0 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1 (Local Loopback) RX packets 654 bytes 91112 (91.1 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 654 bytes 91112 (91.1 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 rndis0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet6 fe80::58cc:a9ff:fe25:e775 prefixlen 64 scopeid 0x20<link> ether 5a:cc:a9:25:e7:75 txqueuelen 1000 (Ethernet) RX packets 1102 bytes 278481 (278.4 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 1306 bytes 368685 (368.6 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 usb0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet6 fe80::58cc:a9ff:fe25:e777 prefixlen 64 scopeid 0x20<link> ether 5a:cc:a9:25:e7:77 txqueuelen 1000 (Ethernet) RX packets 130 bytes 34856 (34.8 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 97 bytes 19124 (19.1 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
The IP address in this case, is 192.168.100.167. The URL can also be found when the server starts running. This will display a message like the one below, indicating the URL, which in this case would be: https://192.168.100.167:8092/.
Onvif Server reference design application * Serving Flask app 'onvif_web_page.src.server' (lazy loading) * Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Debug mode: off * Running on all addresses. WARNING: This is a development server. Do not use it in a production deployment. * Running on https://192.168.100.167:8092/ (Press CTRL+C to quit)
The webpage can be opened on whatever device, only with the condition that has to be connected to the same network as the ONVIF server. Below there is an image that shows how the web page looks like when the URL is written in the browser.
It is important to remind that when the container is working, every ONVIF device can be connected to it.
To stop the docker:
sudo docker stop onvif
When the server stops working, it will send a message telling that the evaluation time has concluded. Also, functionalities such as changing or adding video sources or video encoders, streaming and showing the device information will stop working.