When setting up an RTMP output in Vahana VR, you will find the following screen
The encoder used by Vahana VR is x264.
If you want to have more control on the encoder parameters, here is a short explanation of each parameter.
A profile is a set of coding tools used by the encoder, that will give clues to the decoder on which ones are necessary to decode the bitstream. The level indicates the minimal decoding performances the target device should have to decode the stream.
Baseline profile supports intro and inter-coding (I-slices and P-slices). It targets limited computing resources devices, so decoding is easier but you will need a higher bitrate to achieve a good image quality. It is mostly used for teleconferencing systems and mobile applications.
Ex: Older phones support only Baseline 3.0, iPhone 3G supports Baseline 3.1
Main supports B-slice inter-coding, and interlaced coding. and is mostly used for television broadcasting. It is broadly supported.
Ex: Main 3.1 will ensure widest cross-platform compatibility
High profile should be preferred for HD broadcast like HDTV and Blu-Ray storage. It is moderately CPU-costlier to encode/decode but ensures high image quality compared to the Main profile.
The level is automatically computed by Vahana VR:
From the panorama size and the framerate, you can compute the number of Macroblocks/sec, rounded-up: ceil((width * height * fps ) / 256)
The level that can accommodate this Macroblocks bandwidth can be deduced from the following table:
VBR (variable bitrate) vs CBR (constant bitrate).
In VBR, the bitrate will vary according to the complexity of the scene: still, scenes will use less bandwidth, while the bitrate will be higher in fast-motion scenes. Overall, you should see bandwidth reduction in that mode. But viewers may complain of lag when there are no dropped frames because some frames will be more difficult to decode than others.
In CBR, x264 will try to ensure your stream goes out at exactly the specified bitrate. This results in a smoother stream (bandwidth wise) but will cause both you and your viewers to consume a higher total bandwidth as the bitrate will not be lowered for still scenes, and can result in poor video quality on textured/fast moving scenes as bitrate peaks are not allowed. As transport protocols are in general not designed for variable bandwidth, CBR can also help with VBR performance and latency issues.
Target bitrate of the x264 encoder. Combined with the audio bitrate, this will determine how much bandwidth (upload on the producer’s side and download on the viewer's’ side) you want to use. Set it to 70-80% of your upload speed.
In CBR, the only way to control the quality of your stream is through the bitrate. This parameter will set both the bitrate and max bitrate of your stream, Please note that in CBR mode, the bitrate will still vary, it is the average over a certain period of time which will be constant.
For a true constant CBR, you can use the CBR padding option
When using variable bitrate, this controls the CRF (constant rate factor) parameter in x264 (10 is CRF 22, 0 is CRF 32). It determines how the video encoder should spend bits for quality. Set 5 as default if you don’t know how to use it. This value depends on your bitrate, resolution, and FPS (Frames per second). If you get undesirable pixelation on higher motion, it generally means you should turn down this value until it stops, or increase your bitrate.