Stop smearing or broken streams with CBR streams instead of VBR

You can do some tweaking to make VBR more reliable but if you can't get a clear picture then it's better to give a little more resources and use CBR.

VBR stands for Variable Bit Rate. CBR stands for Constant Bit Rate. VBR dynamically reduces or induces quality based on connection strength and frame changes.

CBR is a lot like MJPEG. It doesn't try anything fancy with the frames in an attempt to save bandwidth or NVR resources. It just sends the frames as they are captured by the lens.

In short : CBR provides better picture quality for H.264 and H.265 at the expense of the NVR's resources and network bandwidth.

Unfortunately this feature isn't always mentioned or even recommended. For each camera vendor it may differ.

For example take Hikvision , they have a drop down selector that allows you to choose between the two. The option may be labelled Bitrate Type  and the values that are available are Variable and Constant . You may see some cameras simply label them as VBR and CBR .

Hikvision : Bitrate Type option shown as dropdown selector.

With Reolink you have no option for this at all. For a long time I wondered why Reolink didn't provide the option to use CBR. I just accepted that they might be stuck as VBR. What I didn't know is that I was only connecting one way. Through the RTSP protocol.

Reolink : Option not shown at all.

Many months later a new user by the name of sandos#7339  makes their way into the Shinobi community  on Discord. They were trying to figure out why their Reolink cameras were smearing all the time and they found that their camera provides a stream over the RTMP protocol. They tried it for a while and reported to the community that they had no more smears, only clear streams. My cameras could do the same and found my cameras also never smear now. They smeared very little before but now there is none.

I know... enough babbling and give you the Reolink RTMP url format . Here it is.

rtmp://USERNAME:[email protected]_IP/bcs/channel0_main.bcs?token=sdasdasd&channel=0&stream=0&user=USERNAME&password=PASSWORD

So instead of your RTSP Streaming Link , just use this. Take note of all the query string values. You must have all of them or it will not work. token can be set as any value you want.

This link has only been tested with Reolink cameras. Other vendors may require a different link structure.

Shinobi monitor connection configuration using Reolink's RTMP link.

For those wondering what a Reolink RTSP link looks like, here it is.

rtsp://USERNAME:[email protected]_IP/

It's very simple and appealing to just connect this way but if you have uncontrollable smearing, you will need to use RTMP with Reolink cameras.


All content is property of their respective owners.