Explaining XSplit Part 1: Quality and VBV-Maxrate
Many broadcasters are not entirely sure what various options are available in XSplit or how to take full advantage of them. To help solve this I will be trying to help explain the in’s and outs of various XSplit settings and features.
Note: I have written this guide specifically for GDi News and we would appreciate it if you found these posts useful that you link back to this article instead of merely copying and pasting the contents. Let us begin.
This is a standard view of the broadcast settings page in XSplit. (Pro tip: to quickly access this, click the broadcast tab and then right click on the channel you want to view or edit).
Today we will be focusing on the Video Encoding section.
Preset is where you can select from the various presets included within the encoder, x264. It is recommended that you use a preset between medium and superfast. A good starting point is veryfast. XSplit Default is equivalent to veryfast, but we recommend you use veryfast as XSplit Default can be changed without you noticing, while the build in presets cannot be. Presets allow you to set a large amount of technical settings that affect both performance and quality with a simple keyword change. The faster the preset, the less cpu usage used but the less compressible the video is meaning that more bandwidth will be required to get the same quality of a slower bandwidth. Conversely, the slower the preset the more cpu usage, but the more x264 can compress the video meaning better quality at equal or lower bitrates.
VBV-Maxrate is essentially the max bitrate for your stream. XSplit uses a system called variable bitrate encoding which allows the encoder to change the current bitrate to meet the needs of the video being encoded. There are no real negatives to running this type of encoding compared to a standard static bitrate stream like you find in Flash Media Encoder. The benefit is that instead of broadcasting a stream at the same bitrate in game with high motion as you do while in a menu or on a static image where there is not much change frame to frame, XSplit automatically throttles the bandwidth as long as it is able to maintain your set Quality setting.
-Recommendation: Depends on framerate, resolution, and available bandwidth.
If you are familiar with h264 encoding lingo, the Quality settings in XSplit sets the crf setting in the encoder. Crf is a little complicated to explain, but I will try my best. Essentially the set crf tells the encoder how much variation from the original source to the image being sent out is allowed. To make things easier for normal people, the Quality settings in XSplit go from 0 to 10, 10 being the best quality. In the H264 standard and in the x264 encoder, crf (the encoding option Quality controls) works the opposite way. The range is from 0 to 51, 0 being the best quality (lossless in fact) and 51 being the worst quality.
At the time of writing this, Quality 0 is equivalent to crf:35 and Quality 10 is equivalent to crf:25. If you have your Quality set to 10 (crf:25) then XSplit will try to maintain that per frame variation factor, but will never go below it. If there isn’t enough frame variation then the bitrate will be lowered while the video maintains the set variation factor. If there is more variation, the bitrate will increase until it hits your vbv-maxrate at which time it starts increasing the allowed variation to fit the bitrate. The combination of Quality and VBV-Maxrate allows the stream to use as much bandwidth as available when needed, but is not wasteful during low motion scenes.
Recommendation: 10 unless more throttling is required in low motion scenes.
Now that we have the technical side done with, we can talk about what this means to you as a broadcaster.
In high motion scenes with high pixel change, the Quality option will be your major limiting factor. In lower motion scenes, when XSplit can throttle bandwidth, the Quality factor is the limiting factor. Now if someone is trying to stream 720p at 1200kbps, having the quality at 5 versus 10 basically is not going to make any difference to the overall stream. Zero difference during high motion scenes. A person trying to stream 360p at 3000kbps is likely to experience the opposite affect. At such a resolution and bitrate and Quality 10, XSplit will almost never use the full 3mb/s available to it to stream because it is not needed. You reach the point of diminishing returns where throwing more and more bandwidth at a stream won’t increase the quality.
You will need to find your own happy medium between resolution, quality, and bitrate, but hopefully having read this you are now prepared to do so.
If you would like to research the various encoder options inside the encoder, x.264 feel free to check out the wiki http://mewiki.project357.com/wiki/X264_Settings