Configure variable bitrate video encoding with Beamr in Wowza Streaming Engine

By default, the Beamr encoder in Wowza Streaming Engine™ media server software uses constant bitrate (CBR) encoding for a consistent bitrate. With variable bitrate (VBR) encoding, the bitrate changes according to the complexity of the video and can exceed the target bitrate but not a maximum bitrate. VBR encoding is slower than CBR encoding but results in smaller video file sizes and higher-quality video with complex or high-motion content.

To configure VBR encoding, open your Transcoder template ([install-dir]/transcoder/templates) for editing in a text editor and complete the following steps.

  1. Set the average target bitrate, in bits per second (bps), with the video Bitrate property for any encoding presets (<Encodes>/<Encode>) using Beamr. For example:
    <Video>
       ...
       <Bitrate>365000</Bitrate>
       ...
    </Video>

    Access logs (wowzastreamingengine_access.log) report this property with the beamr4.kbps (H.264) or beamr5.rc_kbps (HEVC/H.265) parameters and the value of Bitrate divided by 1000 (Kbps).

  2. Configure VBR encoding by adding the following advanced parameters within the <Video>/<Parameters> container element for the same encoding presets.
     
    Note: For H.264 video encoding, use the parameters beginning with beamr4; for HEVC/H.265 video encoding, use the parameters beginning with beamr5.
    1. Enable VBR encoding with the beamr4.rc_type or beamr5.rc_type parameter set to 1. For example:
      <Parameter>
         <Name>beamr4.rc_type</Name>
         <Value>1</Value>
         <Type>Long</Type>
      </Parameter>

    2. (Optional) Set a maximum video bitrate, in kilobits per second (Kbps), with the beamr4.max_kbps or beamr5.rc_max_kbps parameter. By default, the maximum bitrate is 2 × (Bitrate ÷ 1000). For example:
      <Parameter>
         <Name>beamr4.max_kbps</Name>
         <Value>...</Value>
         <Type>Long</Type>
      </Parameter>
      

Access logs (wowzastreamingengine_access.log) report the new values the next time the Transcoder runs. For example:

INFO 200 - beamr4.kbps: 365
INFO 200 - beamr4.rc_type: 1
INFO 200 - beamr4.max_kbps: 730

Note: Logs do not report a warning or error for invalid parameter values. If you specify an invalid value, the Transcoder uses the default value for the parameter instead, which is reflected in the logs.

More resources