Skip to main content

AXIS cameras

New in version 1.53.0.

Supported AXIS cameras

You can run Stream directly on AXIS cameras, no need for a separate server machine or a Cloud. Currently we only support Container capable cameras with ARTPEC-8 processors. To check if your camera can run Stream go to AXIS Product Selector, scroll down and choose System-on-chip: ARTPEC-8, tick Container support box. All remaining cameras should work.

We also recommend updating AXIS OS to the latest version before proceeding. Our software was tested to work on OS versions 11.8 and above.

AXIS cameras have limited hardware resources and storage space. We recommend not enabling any unnecessary features in the config, like JSONLines File, CSV File, Video Clips.

Setup instructions:

Install Docker Daemon

Download latest version of Docker ACAP signed .eap file from Releases that is compatible with your system architecture. Navigate to Apps section of your camera's Web Interface, click on + Add app, select the .eap file then click Install.

After Docker Daemon shows in the list of apps, go to its Settings. Enable SD card support if you have SD card plugged into the camera. For extra security enable Use TLS by following these instructions to secure the docker ACAP and the camera. TCP socket should be enabled by default.

Container Instance

Refresh the page after a minute to confirm the app stays running and there hasn’t been an error. The Docker daemon on the camera listens on tcp port 2376, you should now be able to connect to it from a local Docker client on a computer and execute docker commands. To specify the daemon to connect to, add

--tlsverify --tlscacert=ca.pem --tlscert=client-cert.pem --tlskey=client-key.pem -H=tcp://<CAMERA_IP>:2376

to all docker commands. We will refer to those flags as <TLS_FLAGS> below.

info

You may want to disable Use TLS to troubleshoot installation. In that case use simple

-H=tcp://<CAMERA_IP>:2375

as <TLS_FLAGS> below.

Set up config.ini in the Web interface

To avoid using SSH and copying config.ini onto the camera, we recommend setting up Web config for your License. Go to Stream -> Manage -> Configuration. Stream will then automatically download config.ini from our server on the first run.

At the moment Stream might not be able to support camera's maximum resolution due to hardware constraints. We recommend starting with 720p resolution as config URL parameter. You can set up a dedicated Stream profile for that in your camera's Web Interface, or simply use a substream as URL: rtsp://<CAMERA_USER>:<CAMERA_PASS>@<CAMERA_IP>/axis-media/media.amp?resolution=1280x720&fps=15.

You may later try increasing resolution and FPS by changing the URL, but keep monitoring Stream's Health Score in docker logs. It should stay above 75%.

Run Stream

Run the below command to pull Stream docker image and run it on the camera:

docker <TLS_FLAGS> run \
-d \
--restart="unless-stopped" \
--name stream \
--group-add 2 \
-v /run/dbus/system_bus_socket:/run/dbus/system_bus_socket \
-v /usr/lib:/larod_lib \
-v user-data:/user-data \
-e LICENSE_KEY=XXXXX \
-e TOKEN=YYYYY \
platerecognizer/alpr-stream:arm

Flag -d will start Stream in the background, use -t instead for troubleshooting. Two extra volume -v ... flags are needed to access camera's hardware accelerator, extra --group-add 2 flag is needed for SD card support. Also notice the lack of --user ... flag from other guides. Stream must use docker daemon's default user.

You can stop Stream with:

docker <TLS_FLAGS> stop stream

or follow logs with:

docker <TLS_FLAGS> logs -f stream

View detection results

Enable Webhooks or ParkPow in your config to receive detection results on a remote machine. We recommend enabling caching if camera's internet access is intermittent.

Floating button icon
CTRL + .