Hidden Settings and Features of Wowza Transcoder
Hidden settings in Wowza Streaming Engine Transcoder
Wowza Streaming Engine (hereafter, Wowza) Transcoder has detailed options that do not appear in the web UI but can be applied through an XML template. This article explains the purpose of 13 MainConcept parameters found in official documents and through customer support. It also shows how to apply them by adding a Parameter block to a template file.
How to change the hidden settings
To change the hidden settings, you must edit the template file directly. As is well known, Wowza Transcoder settings are managed through Transcoder template files located in [install-dir]/transcoder/templates/.
Like other Wowza configuration files, these template files use XML. You can edit them in the same way that you edit properties in other Wowza configuration files. Open the template file and go to the video parameter section of the Transcoder preset that you want to change. Then add a parameter block as shown below.
...(earlier part omitted)...
<Encode>
<Name>Profile name</Name>
<Enable>true</Enable>
<Description>Profile description</Description>
<StreamName>mp4:${SourceStreamName}_360pvbr</StreamName>
<Video>
<Parameters>
<Parameter>
<Name>mainconcept.bit_rate_mode</Name>
<Value>2</Value>
<Type>Long</Type>
</Parameter>
</Parameters>
... (remaining part omitted) ...
Like other Wowza parameters, each parameter consists of Name, Value, and Type.
List of hidden additional options
This is the list of additional Wowza Transcoder options that I investigated. It includes options published in official documents and options that have no official document but were confirmed through technical support.
- Select the bitrate mode
- Name
mainconcept.bit_rate_mode- Value
-
- 0: CBR mode
- 1: CQT mode
- 2: VBR mode
- Type
- Long
-
Average or target bitrate
- Name
mainconcept.bit_rate- Value
- Enter an integer in bps. For example, 2500000 means 2.5 Mbps.
- Type
- Long
-
Maximum bitrate
- Name
mainconcept.max_bit_rate- Value
- Enter the maximum bitrate allowed in VBR mode as an integer in bps. For example, 4000000 means 4 Mbps.
- Type
- Long
-
IDR frame interval
- Name
mainconcept.idr_interval- Value
- Enter the interval for inserting IDR (Instantaneous Decoder Refresh) frames as an integer number of frames.
- Type
- Long
-
H.264 Level setting
- Name
mainconcept.level_id- Value
- Enter the integer that corresponds to the H.264 Level to apply to the output stream.
- Type
- Long
-
Number of reference frames
- Name
mainconcept.num_reference_frames- Value
- Enter the number of reference frames that the encoder will use as an integer.
- Type
- Long
-
Frame reordering delay
- Name
mainconcept.reordering_delay- Value
- Enter the frame reordering delay for B-frames as an integer. The default value described in the official Wowza documentation is 1. At this value, no B-frames are inserted.
- Type
- Long
-
Enable or disable Access Unit Delimiters
- Name
mainconcept.write_au_delimiters- Value
- Enter an integer that determines whether to output Access Unit Delimiters.
- Type
- Long
-
Select the entropy coding mode
- Name
mainconcept.entropy_coding_mode- Value
-
- 0: CAVLC mode
- 1: CABAC mode
- Type
- Long
-
VBV buffer size
- Name
mainconcept.bit_rate_buffer_size- Value
- Enter the VBV (Video Buffering Verifier) buffer size as an integer in bytes. 1000000 means 1 MB.
- Type
- Long
-
I-frame Quantization value
- Name
mainconcept.quant_pI- Value
- Enter an integer from 0 to 51. A lower value gives higher quality, while a higher value gives stronger compression. The test value provided by customer support was 23.
- Type
- Long
-
P-frame Quantization value
- Name
mainconcept.quant_pP- Value
- Enter an integer from 0 to 51. A lower value gives higher quality, while a higher value gives stronger compression. The test value provided by customer support was 25.
- Type
- Long
-
B-frame Quantization value
- Name
mainconcept.quant_pB- Value
- Enter an integer from 0 to 51. A lower value gives higher quality, while a higher value gives stronger compression. The test value provided by customer support was 27.
- Type
- Long
Summary and cautions
In fact, this article covers something that ordinary operators should not have to need. I have already stated several times in other articles that encoding and transcoding work should be handled outside Wowza.
Some sharp-eyed readers may have noticed that the word mainconcept keeps appearing. Wowza Transcoder is based on the MainConcept SDK. The parameters that correspond to the options listed above can be found in the AVCEncoderParams structure of the MainConcept SDK. There are likely to be more options, but no method for configuring them has been published.
The information in this article was officially provided by Wowza technical support, and I also applied the options to an actual system and checked whether they worked. However, some of the information has not been published as regular Wowza documentation. Even when an option has been provided, it may not work correctly.
Still, I am sharing this information in the hope that it will offer some help to anyone who has no choice but to squeeze every last bit out of Wowza. I sincerely hope that none of you will need this article when building a service.
Encoding is the encoder’s job.
Update history
- — First published
- — Revision and URL migration