{"id":32,"date":"2025-08-29T13:02:56","date_gmt":"2025-08-29T04:02:56","guid":{"rendered":"https:\/\/www.decteng.com\/en\/?p=32"},"modified":"2025-08-29T13:03:46","modified_gmt":"2025-08-29T04:03:46","slug":"wowza-transcoder-hidden-vbr-options","status":"publish","type":"post","link":"https:\/\/www.decteng.com\/en\/wowza-transcoder-hidden-vbr-options\/","title":{"rendered":"Hidden options of the Wowza Streaming Engine Transcoder."},"content":{"rendered":"\n<section id=\"WowzaTranscoderVBR\">\n<h2>Default operating mode of the Wowza Transcoder.<\/h2>\n<p>The transcoder of Wowza Streaming Engine(hereafter Wowza) operates in VBR(Variable Bit Rate) mode by default. However, the transcoder&#8217;s settings UI only displays basic options like Codec, Profile, Key Frame Interval, and Bitrate. It lacks detailed settings for VBR encoding and does not even show a CBR-VBR selection.<\/p>\n<p>However, there are hidden configurable options, even though Wowza has not officially documented them. This article shares the list of detailed options and their configuration methods, which were provided by Wowza during the process of <a href=\"https:\/\/www.decteng.com\/en\/wowza-streaming-engine-transcoder-cbr-bug-eng-2346\/\" title=\"A Month-long Record of Registering Wowza Transcoder CBR Bug ENG-2346.\" hreflang=\"en\">discovering a bug in the Wowza transcoder<\/a>.<\/p>\n<\/section>\n\n<section id=\"HowToApplyHiddenOptions\">\n<h2>How to Apply Hidden Options<\/h2>\n<p>Wowza Transcoder settings are <a href=\"https:\/\/www.wowza.com\/docs\/how-to-set-up-and-run-wowza-transcoder-for-live-streaming\" target=\"_blank\" title=\"Set up and run Transcoder in Wowza Streaming Engine\" rel=\"noopener\" hreflang=\"en\">managed through template files<\/a> located in <code class=\"line\">[install-dir]\/transcoder\/templates\/<\/code>. Open the relevant template file and navigate to the video parameter section of the transcoder preset you wish to configure. Then, add a parameter block as shown in the example below.\n<pre><code>...( omitted )...\n&lt;Encode&gt;\n &lt;Name&gt;Profile name&lt;\/Name&gt;\n &lt;Enable&gt;true&lt;\/Enable&gt;\n &lt;Description&gt;Profile description&lt;\/Description&gt;\n &lt;StreamName&gt;mp4:${SourceStreamName}_360pvbr&lt;\/StreamName&gt;\n &lt;Video&gt;\n &lt;Parameters&gt;\n  <kbd>&lt;Parameter&gt;\n   &lt;Name&gt;mainconcept.bit_rate_mode&lt;\/Name&gt;\n   &lt;Value&gt;2&lt;\/Value&gt;\n   &lt;Type&gt;Long&lt;\/Type&gt;\n  &lt;\/Parameter&gt;<\/kbd>\n &lt;\/Parameters&gt;\n... ( omitted ) ...<\/code><\/pre><\/p>\n<p>Like other Wowza parameters, each parameter consists of a <code>Name<\/code>, <code>Value<\/code>, and <code>Type<\/code>.<\/p>\n<\/section>\n\n<section id=\"WowzaTranscoderHiddenOptions\">\n<h2>Hidden Options of Wowza Transcoder<\/h2>\n<section id=\"OperationMode\">\n<h3>Operation Mode : CBR, CQT, VBR<\/h3>\n<dl><dt>Name<\/dt><dd>mainconcept.bit_rate_mode<\/dd>\n<dt>Value<\/dt><dd><ul><li><strong><var>0<\/var><\/strong> : CBR<\/li>\n\t\t\t\t\t\t<li><strong><var>1<\/var><\/strong> : CQT<\/li>\n\t\t\t\t\t\t<li><strong><var>2<\/var><\/strong> : VBR<\/li><\/ul><\/dd>\n<dt>Type<\/dt><dd>Long<\/dd><\/dl>\n<\/section>\n\t<section id=\"TargetBitrate\">\n<h3>Average \/ Target bitrage<\/h3>\n<dl><dt>Name<\/dt><dd>mainconcept.bit_rate<\/dd>\n<dt>Value<\/dt><dd>enter in bps (e.g., <var>4000000<\/var> = 4Mbps)<\/dd>\n<dt>Type<\/dt><dd>Long<\/dd><\/dl>\n<\/section>\n\t<section id=\"MaxBitrate\">\n<h3>Maximum bitrate<\/h3>\n<dl><dt>Name<\/dt><dd>mainconcept.max_bit_rate<\/dd>\n<dt>Value<\/dt><dd>enter in bps (e.g., <var>8000000<\/var> = 8Mbps)<\/dd>\n<dt>Type<\/dt><dd>Long<\/dd><\/dl>\n<\/section>\n\t<section id=\"VBVSize\">\n<h3>Size of VBV(Video Buffering Verifier)<\/h3>\n<dl><dt>Name<\/dt><dd>mainconcept.bit_rate_buffer_size<\/dd>\n<dt>Value<\/dt><dd>enter in byte (e.g., <var>1000000<\/var> = 1MByte)<\/dd>\n<dt>Type<\/dt><dd>Long<\/dd><\/dl>\n<\/section>\n\t<section id=\"IFrameQuantization\">\n<h3>I-Frame Quantization Level<\/h3>\n<dl><dt>Name<\/dt><dd>mainconcept.quant_pI<\/dd>\n<dt>Value<\/dt><dd>An integer between 0 and 51 (The higher the value, the lower the quality).<\/dd>\n<dt>Type<\/dt><dd>Long<\/dd><\/dl>\n<\/section>\n\t<section id=\"BFrameQuantization\">\n<h3>B-Frame Quantization Level<\/h3>\n<dl><dt>Name<\/dt><dd>mainconcept.quant_pB<\/dd>\n<dt>Value<\/dt><dd>An integer between 0 and 51 (The higher the value, the lower the quality).<\/dd>\n<dt>Type<\/dt><dd>Long<\/dd><\/dl>\n<\/section>\n<section id=\"PFrameQuantization\">\n<h3>P-Frame Quantization Level<\/h3>\n<dl><dt>Name<\/dt><dd>mainconcept.quant_pP<\/dd>\n<dt>Value<\/dt><dd>An integer between 0 and 51 (The higher the value, the lower the quality).<\/dd>\n<dt>Type<\/dt><dd>Long<\/dd><\/dl>\n<\/section>\n<section id=\"OtherPossibilities\">\n<h3>Other Possibilities<\/h3>\n<p>Some astute readers may have noticed that the word <code>mainconcept<\/code> keeps appearing. That&#8217;s correct. The Wowza Transcoder is based on the <a href=\"https:\/\/www.mainconcept.com\/sdks\" title=\"MainConcept\" target=\"_blank\" rel=\"noopener\">MainConcept<\/a> SDK. The parameters for the options mentioned above can be found in the MainConcept SDK&#8217;s <code>AVCEncoderParams<\/code> struct.\n<pre><code>typedef struct AVCEncoderParams\n{\n    int32_t struct_size;       \/\/ Size of the structure\n    int32_t width;             \/\/ Frame width resolution\n    int32_t height;            \/\/ Frame height resolution\n    int32_t framerate_num;     \/\/ Framerate numerator\n    int32_t framerate_den;     \/\/ Framerate denominator\n    int32_t rc_mode;           \/\/ Rate control mode\n    int32_t bitrate;           \/\/ Target bitrate\n    int32_t max_bitrate;       \/\/ Maximum bitrate\n    int32_t vbv_buffer_size;   \/\/ VBV buffer size\n    int32_t qp;                \/\/ Common QP for all frames\n    int32_t i_qp;              \/\/ I-Frame QP\n    int32_t p_qp;              \/\/ P-Frame QP\n    int32_t b_qp;              \/\/ B-Frame QP\n    int32_t gop_size;          \/\/ Size of GOP\n    int32_t idr_interval;      \/\/ IDR Interval\n    int32_t b_frames;          \/\/ Number of B-Frame\n    int32_t b_pyramid;         \/\/ Use B-pyramid (0 : off)\n    int32_t profile_idc;       \/\/ AVC Profile\n    int32_t level_idc;         \/\/ AVC Level\n    int32_t entropy_mode;      \/\/ 0 = CAVLC, 1 = CABAC\n    int32_t scene_change_detection; \/\/ Insert I-frame on scene change\n    int32_t color_format;      \/\/ e.g., NV12, YUV420\n    int32_t interlace_mode;    \/\/ Progressive-Interlace setting\n    void*    user_data;        \/\/ User data pointer\n    uint32_t reserved[16];     \/\/ Reserved for future use\n} AVCEncoderParams;<\/code><\/pre>\n<\/p>\n<p>There is likely a way to adjust the MainConcept SDK&#8217;s parameters internally within Wowza. However, Wowza has only officially documented the seven items mentioned above.<\/p>\n<\/section>\n<\/section>\n<section id=\"Conclusion\">\n<h2>Conclusion<\/h2>\n<p>In fact, the content of this article is information that general operators will not need (and should not need). The writer has stated multiple times in other articles that <strong>it is recommended to handle encoding\/transcoding tasks outside of Wowza.<\/strong><\/p>\n<p>The information in this article was officially provided by Wowza technical support. Additionally, the writer has <strong>personally verified that these options work by applying them to a live system.<\/strong> However, this is not information that has been formally documented and released by Wowza. (Wowza themselves mentioned they had no internal documentation on this before the writer&#8217;s inquiry.)<\/p>\n<p>However, the writer is sharing this information to offer some help to those who find themselves in a situation where they must push the Wowza system to its absolute limits. The writer sincerely hopes that no readers will need this article for their service deployment.<\/p>\n<\/section>\n","protected":false},"excerpt":{"rendered":"<p>Hidden settings of the Wowza Streaming Engine Transcoder. How to Configure VBR, CBR, CQT Mode and Adjust VBV Size, quality of I-Frame, B-Frame, P-Frame.<\/p>\n","protected":false},"author":1,"featured_media":31,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[26,27,28,30,31,29,20],"class_list":{"0":"post-32","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-ott","8":"tag-cbr","9":"tag-gop","10":"tag-mainconcept","11":"tag-technical-support","12":"tag-transcoding","13":"tag-vbr","14":"tag-wowza-streaming-engine","15":"content-layout-excerpt-thumb"},"_links":{"self":[{"href":"https:\/\/www.decteng.com\/en\/wp-json\/wp\/v2\/posts\/32","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.decteng.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.decteng.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.decteng.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.decteng.com\/en\/wp-json\/wp\/v2\/comments?post=32"}],"version-history":[{"count":2,"href":"https:\/\/www.decteng.com\/en\/wp-json\/wp\/v2\/posts\/32\/revisions"}],"predecessor-version":[{"id":34,"href":"https:\/\/www.decteng.com\/en\/wp-json\/wp\/v2\/posts\/32\/revisions\/34"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.decteng.com\/en\/wp-json\/wp\/v2\/media\/31"}],"wp:attachment":[{"href":"https:\/\/www.decteng.com\/en\/wp-json\/wp\/v2\/media?parent=32"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.decteng.com\/en\/wp-json\/wp\/v2\/categories?post=32"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.decteng.com\/en\/wp-json\/wp\/v2\/tags?post=32"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}