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.

The Key camera parameters we need to respect
There are two separate camera parameters to consider:
The number of unique streams requested from the camera
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
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.
For ARTPEC-8, see: https://whitepapers.axis.com/en-us/product-performance-for-artpec-8
Read the Product datasheet for indicative performance
For example, the datasheet of Axis 3057 PLVE states this:

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:

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:

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:

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
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
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
Recommended Stream Management Practices
Minimize the number of unique streams needed across the deployment.
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.
Redundant VMS deployments, AI, and camera edge recording must use the same unique encoded streams.
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.

On-camera edge recording then reuses these unique streams.
Doing so neither increases the demand for unique streams nor the demand for external clients.

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.

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.

References
Some links need an Axis portal account.
Definition of Unique Encoders: https://help.axis.com/en-us/axis-os-knowledge-base#unique-encoded-streams
Product performance for ARTPEC-8: https://whitepapers.axis.com/en-us/product-performance-for-artpec-8
Definition of Maximum Number of Clients: https://help.axis.com/en-us/axis-os-knowledge-base#maximum-number-of-clients
The effect of exceeding capacity: https://help.axis.com/en-us/axis-os-knowledge-base#performance-considerations-and-maximum-bitrate
Data Sheet of Axis 3057 PLVE: https://www.axis.com/dam/public/13/16/5f/datasheet-axis-m3057-plve-network-camera-en-US-353729.pdf
Data Sheet of Axis 4327P: https://www.axis.com/dam/public/23/e7/8f/datasheet-axis-m4327-p-panoramic-camera-en-US-405341.pdf
Last updated