Redundant Stream Management on Axis Cameras

Vega Systems Inc, July 2025

Executive Summary

Modern redundancy architectures require independent streams from cameras for each data center, for viewing, recording, analytics, and other purposes. While multicast streaming can send multiple copies without overloading cameras, networks often do not support multicast due to security policies or equipment limits. In such cases, cameras must provide unicast streams to meet all demands. This note focuses on stream management on Axis cameras and discusses ways to stay within the camera's capacity while still meeting demand.

Stream Planning

The Key camera parameters we need to respect

There are two separate camera parameters to consider:

  1. The number of unique streams requested from the camera

  2. The total number of streams the camera outputs.

Maximum number of Unique Streams

An independent encode chain generates a distinct stream. It is characterized by a specific set of encoding parameters, including resolution, frame rate, encoder, and view, among others. See: https://help.axis.com/en-us/axis-os-knowledge-base#unique-encoded-streams, for a more in-depth explanation.

The Axis ARTPEC-8 SoC performance white paper (see: https://whitepapers.axis.com/en-us/product-performance-for-artpec-8) says that unique stream capacity isn’t fixed because many interacting limits shape a camera’s workload. High‐demand settings—max resolution, low compression, mixed MJPEG + H.26x, many clients or clients requesting different profiles—add load, as do features like motion detection, HTTPS, and heavy event rules. Scene content matters too: complex or low-light imagery costs more bits and processing. In short, the usable stream count is bounded by whichever constraint—SoC design (standard vs. limited), camera, network, or client—reaches saturation first.

Graphs published in the whitepaper illustrate the decline in delivered frame rate as the number of independent streams increases. A couple of these graphs are reproduced below for convenience.

It appears prudent to limit the total number of independent encode streams to the lower single digits.

Finding the maximum unique streams for your camera

1

Locate the ARTPEC chipset version

Find the version of the ARTPEC chipset in your product from the data sheet. Read the performance white paper for that chipset.

2

Read the Product datasheet for indicative performance

For example, the datasheet of Axis 3057 PLVE states this:

Axis 3057 PLVE

The last sentence states that the camera can support one panoramic view and four de-warped views simultaneously. This results in a total of five parallel encode chains. Additionally, when streaming all five at maximum resolution, the frame rate cannot exceed 14 frames per second (fps) per stream. So for the 3057, the indicative number of unique encodes is five.

Similarly, the datasheet of 4327-P states:

Axis 4327 P

This is understood to mean it can support a 360-degree view and four de-warped views, providing a total of five unique encoded chains. Furthermore, it states:

Axis 4327 P

Reinforcing the five unique streams encoding guideline.

Maximum number of Clients

This parameter indicates the maximum number of streams that the camera can deliver to all external clients (such as NVRs across data centers, AI systems, and browser instances) across all unique encoder instances combined. See: https://help.axis.com/en-us/axis-os-knowledge-base#maximum-number-of-clients

Finding the maximum number of clients for your camera

On the 3057 PLVE and the 4327P models, one can obtain this number by visiting:

http://<ip-address>/axis-cgi/param.cgi?action=list&group=Image.MaxViewers

The default number on the 3057 is 20, while on the 4327P, it is 12.

Alternatively, this value can also be set or read through the camera's web page, as shown below:

Setting MaxViewers on Axis 4327P

The effect of recording video on a camera's SD card

Note that while streams recorded on a camera's internal SD card count towards the total unique encoders (Redundant Stream Management on Axis Cameras) if they are unique encoding demands, they do not count towards the viewers (Maximum number of Clients), because these are not streamed out.

Monitoring Unique Encoder and Client Usage

When setting up a camera to stream to multiple data centers, AI clients, and local edge storage, it is necessary to monitor camera resource usage.

Finding the unique encoder consumption

1

Visit

<your-cameras-address>/axis-cgi/serverreport.cgi
2

Locate the "Snapshot of all running streams" section


----- Snapshot of all running streams -----

{
    "streams" : [
        { "id/0x10aa" : {"bitrate":0,"channel":0,"duration":"22:08:19","failcount":0,"format":"nv12","framecount":796929,"framerate":10,"identity":"video-object-detection","peers":1,"resolution":"768x768"} },
        { "id/0x1119" : {"bitrate":12490978,"channel":2,"duration":"12:19:07","failcount":0,"format":"h264","framecount":354785,"framerate":8,"identity":"monolith","peers":1,"resolution":"2560x720"} },
        { "id/0x10d2" : {"bitrate":31617789,"channel":1,"duration":"22:08:08","failcount":0,"format":"h264","framecount":637521,"framerate":8,"identity":"monolith","peers":1,"resolution":"2160x2160"} },
        { "id/0x10e6" : {"bitrate":33309275,"channel":4,"duration":"22:08:08","failcount":0,"format":"h264","framecount":637515,"framerate":8,"identity":"monolith","peers":1,"resolution":"2560x1920"} },
        { "id/0x10ee" : {"bitrate":0,"channel":0,"duration":"16:35:16","failcount":0,"format":"analytics","framecount":138346,"framerate":30,"identity":"tampering","peers":1,"resolution":"120x120"} },
        { "id/0x10a1" : {"bitrate":0,"channel":0,"duration":"22:08:19","failcount":0,"format":"analytics","framecount":795933,"framerate":30,"identity":"video-scene-provider","peers":1,"resolution":"416x416"} }
    ],

In the above list (shown on the 4327P), count the number of lines with the word 'monolith' in them. That gives the total number of unique encoders being consumed on the device.

Ensure that the number always remains within the camera's capacity.

Finding the number of active clients

1

Visit

<your-cameras-address>/axis-cgi/serverreport.cgi
2

Locate the "Snapshot of number of current outgoing media streams" section

----- Snapshot of number of current outgoing media streams -----
10
----- Snapshot of current HTTP streams -----
{
	"data" : [
		{}
	]
}
{
	"data" : [
		{}
	]
}
----- Snapshot of current RTP streams -----
{
	"data" : [
		{
			"/com/axis/Streamer/RTP/StreamProperties/374" : {
				"com.axis.StreamControlRenew" : {},
				"com.axis.Streamer.RTP.StreamProperties" : {
					"id" : {
						"data" : 374
					},
					"source_address" : {
						"data" : "x.x.x.x"
					},
					"source_port" : {
						"data" : 0
					},
					"destination_address" : {
						"data" : "y.y.y.y"
.
.
.

The number of outgoing media streams (10) above equals the sum of the entries in the HTTP and RTP streams sections. This number must always be less than or equal to what is retrieved by the fetch:

http://<ip-address>/axis-cgi/param.cgi?action=list&group=Image.MaxViewers
  1. Minimize the number of unique streams needed across the deployment.

    1. Reuse the same stream for both live and recorded content on the VMS by setting the encoding parameters of the two to the same values.

  2. Redundant VMS deployments, AI, and camera edge recording must use the same unique encoded streams.

    1. Achieved by ensuring that all VMS deployments, AI, and edge recordings reuse the same encoding parameters.

An Example

For example, the 3057 PLVE (with ATRPEC-8), which supports five unique streams (at 1080P and 30fps without loss of performance) and 20 external clients simultaneously, can be used to enable video across two data centers and AI applications, as shown below.

  • The first data center consumes up to five unique streams, including both live and recorded ones.

    • Even without the second data center and AI, this represents the maximum camera capacity for unique streams.

    • At this point, the Data Center 1 recorder consumes a total of five external clients as well.

DC1 uses 100% of encoding capacity and 25% of client capacity
  • On-camera edge recording then reuses these unique streams.

    • Doing so neither increases the demand for unique streams nor the demand for external clients.

Edge Record uses 0% of additional encoding capacity and 0% of additional client capacity
  • The second data center then reuses the five unique streams by requesting streams with the same encoding parameters as the primary data center.

    • This only increases external client demand, which now rises to ten.

DC2 uses 25% of client capacity
  • After both data centers are active and edge recording is enabled, the camera can still supply ten additional streams to other clients, such as AI applications, provided those applications request the same unique streams already offered by the camera.

50% of client capacity is still available for future use

References

Some links need an Axis portal account.

Last updated