Avkans PTZ CameraStreaming Settings Guide (RTSP, NDI and RTMPs)
Recommended RTSP Settings
60Hz 50Hz
IF 1080@60
ENCODE PROTOCOL: H264 RESOLUTION: 1920x1080 BITRATE: 12288
FRAME RATE: 60
I FRAME: 60 CBR
FLUCTUATE LEVEL: 1 SPLICE SPLIT ENCODE: Off
IF 1080@50
ENCODE PROTOCOL: H264 RESOLUTION: 1920x1080 BITRATE: 10240
FRAME RATE: 50
I FRAME: 50 CBR
FLUCTUATE LEVEL: 1 SPLICE SPLIT ENCODE: Off
IF 1080@30
ENCODE PROTOCOL: H264 RESOLUTION: 1920x1080 BITRATE: 8192
FRAME RATE: 30
I FRAME: 30 CBR
FLUCTUATE LEVEL: 1 SPLICE SPLIT ENCODE: Off
IF 1080@25
ENCODE PROTOCOL: H264 RESOLUTION: 1920x1080 BITRATE: 6826
FRAME RATE: 25
I FRAME: 25 CBR
FLUCTUATE LEVEL: 1 SPLICE SPLIT ENCODE: Off
IF 720@60
ENCODE PROTOCOL: H264 RESOLUTION: 1280x720 BITRATE: 6144
FRAME RATE: 60
I FRAME: 60 CBR
FLUCTUATE LEVEL: 1 SPLICE SPLIT ENCODE: Off
IF 720@50
ENCODE PROTOCOL: H264 RESOLUTION: 1280x720 BITRATE: 5120
FRAME RATE: 50
I FRAME: 50 CBR
FLUCTUATE LEVEL: 1 SPLICE SPLIT ENCODE: Off
Of first note is that all of these streams have been set to use H.264 compression as it is currently the most widely used protocol. Changing to H.265 or MJPEG, which are also available, will require different settings.
So you are likely well aware of what the resolution and frame rate are but may not be as aware of the requirements that coincide with those selections.
As we increase the resolution, frame rate, or both, we need a larger pipeline (i.e. more bandwidth) to properly support the connection. Thus, we will increase that pipeline by adjusting the bitrate accordingly, as shown in the chart above.
Example: 1920 x 1080 at 60 FPS requires a bitrate or 12,288 Kb/s while the same resolution at 30 FPS only requires a bitrate of 8,192 Kb/s. We are transmitting less information and thus the bitrate can be smaller.
If there is not enough bandwidth allocated, the network cannot support the set bitrate, or the camera is told to use too high of a bitrate then artifacting will occur.
Another setting of interest would be the i-frame interval that relates directly to the H.264 compression and how it will handle your stream.
When adjusting this setting, you are telling H.264 how many full images or frames (as opposed to a predicted image or frame) to send per second. The lower this number, or shorter the interval, the better chance you have of high quality video without artifacts at the expense of bandwidth. Just as it sounds this is a balancing act.
The more predictive frames used, the lower your overall bandwidth usage will be, which sounds great… unfortunately this also means we are allowing H.264 to predict more of the imagery without updated references, full images, which can lead to artifacting or even very strange behavior with subjects moving where they aren’t supposed to be.
The last setting we’ll be covering is the differences between CBR, Constant Bit rate, and VBR, Variable Bit Rate.
VBR is a very enticing technology that, to save bandwidth, will vary the bitrate depending on the complexity of the scene, sounds awesome right?
While VBR generally provides better compression and thus higher quality for the same amount of bits, it is not recommended because the peaks in bitrate can result in skips or buffering. In addition, some solutions for viewing the stream can average the incoming VBR resulting in video freezing when an overly complex scene occurs.
In short, while it may be useful in certain scenarios VBR is not recommended for a professional live stream due to the complexities and unpredictability it introduces.
Note that when using multicast these same settings will apply just via a different transport while lowering the impact on the network for multiple viewers / producers.
Recommended NDI Settings
60Hz 50Hz
IF 1080@60 "NDI Mode: High" ENCODE PROTOCOL: H264 RESOLUTION: 1920x1080 BITRATE: 12288
FRAME RATE: 60
I FRAME: 120
CBR
FLUCTUATE LEVEL: 1 SPLICE SPLIT ENCODE: Off
IF 1080@50
ENCODE PROTOCOL: H264 RESOLUTION: 1920x1080 BITRATE: 10240
FRAME RATE: 50
I FRAME: 100
CBR
FLUCTUATE LEVEL: 1 SPLICE SPLIT ENCODE: Off
IF 1080@30 "NDI Mode: Medium" ENCODE PROTOCOL: H264 RESOLUTION: 1920x1080 BITRATE: 8192
FRAME RATE: 30
I FRAME: 60
CBR
FLUCTUATE LEVEL: 1 SPLICE SPLIT ENCODE: Off
IF 1080@25
ENCODE PROTOCOL: H264 RESOLUTION: 1920x1080 BITRATE: 6826
FRAME RATE: 25
I FRAME: 50
CBR
FLUCTUATE LEVEL: 1 SPLICE SPLIT ENCODE: Off
IF 720@60 "NDI Mode: Low" ENCODE PROTOCOL: H264 RESOLUTION: 1280x720 BITRATE: 6144
FRAME RATE: 60
I FRAME: 120
CBR
FLUCTUATE LEVEL: 1 SPLICE SPLIT ENCODE: Off
IF 720@50
ENCODE PROTOCOL: H264 RESOLUTION: 1280x720 BITRATE: 5120
FRAME RATE: 50
I FRAME: 100
CBR
FLUCTUATE LEVEL: 1 SPLICE SPLIT ENCODE: Off
So in the above recommended settings for use as an NDI source you’ll notice that the only change is to the i-frame interval.
The correlation is that rather than generating a new i-frame every second, we will be generating a new i-frame every two seconds. This is to allow NDI™ to manage the stream to provide the low latency and high quality that is synonymous with NDI™.
Please feel free to adjust these as needed based on your network conditions, but know that the changes may impact the overall quality of your streaming experience.
Recommended RTMP Settings
When looking into recommended settings for an RTMP stream that is being delivered to a service such as YouTube or Facebook, it is always best to reference the service providers recommended encoder settings and find the best match based on what the camera is capable of and by network bandwidth limitations you may have.
Below are a few examples from some of the popular services to use as a reference: YouTube:
1920x1080@60fps
bitrate = 4,500 - 9,000 Kbps
i-frame interval: 120 (2 seconds) CBR
1920x1080@30fps
bitrate = 3,000 - 6,000 Kbps
i-frame interval: 60 (2 seconds) CBR
1280x720@60fps
bitrate = 2,250 - 6,000 Kbps
i-frame interval: 120 (2 seconds) CBR
1280x720@30fps
bitrate = 4,000 Kbps
i-frame interval: 60 (2 seconds) CBR