{"id":36,"date":"2025-08-30T17:58:51","date_gmt":"2025-08-30T08:58:51","guid":{"rendered":"https:\/\/www.decteng.com\/en\/?p=36"},"modified":"2025-08-30T17:58:52","modified_gmt":"2025-08-30T08:58:52","slug":"wowza-streaming-engine-transcoder-cbr-bug-eng-2346","status":"publish","type":"post","link":"https:\/\/www.decteng.com\/en\/wowza-streaming-engine-transcoder-cbr-bug-eng-2346\/","title":{"rendered":"A Month-long Record of Registering Wowza Transcoder CBR Bug ENG-2346."},"content":{"rendered":"\n<section id=\"WhyNot\">\n<h2>Start of digging : Huh? Where is it?<\/h2>\n<p>When the writer started to write the transcoder section of the Wowza Streaming Engine(hearafter Wowza), the writer encountered a confusing situation.<\/p>\n<blockquote>Huh? Where is the VBR selection in the transcoding options?<\/blockquote>\n<p>Apart from the early days of handling satellite transmission systems or RealVideo, using VBR (Variable Bit Rate) configurations was almost never necessary. Most of the systems handled so far were based on CBR (Constant Bit Rate). In addition, the main approach has always been to avoid using Wowza&#8217;s transcoding feature whenever possible.<\/p>\n<p>That is why, even after using Wowza for such a long period, the absence of a VBR setting went completely unnoticed. <del>(Yeah, true. It&#8217;s actually an excuse\u2026)<\/del><\/p>\n<p>However, the writer had not seen a system without VBR-CBR selection during worked with countless encoders and transcoders until now. It was a moment of confusion for the writer, who had intended to cover this aspect while writing about the Wowza transcoder.<\/p>\n<\/section>\n<section id=\"ItMustExist\">\n<h2>I knew it! Of course it exists!<\/h2>\n<p>The writer started investigation, but could not find significant information about VBR settings. While searching around, the writer eventually found a clue.<\/p>\n<blockquote>Updated transcoder VBR target to peak bitrate range from varying values per-implementation to 110% everywhere<br><a href=\"https:\/\/www.wowza.com\/docs\/wowza-streaming-engine-4-0-1-release-notes\" title=\"Wowza Streaming Engine Release Note\" target=\"_blank\" rel=\"noopener\">Wowza Streaming Engine release note<\/a><\/blockquote>\n<p><strong>I knew it! It&#8217;s a transcoder, after all. There&#8217;s no way it wouldn&#8217;t have a VBR option!<\/strong>Referring to the release notes, the writer contacted Wowza technical support to ask how to change the transcoder&#8217;s operating mode, and received a reply a few hours later. The response instructed that, add the following parameters to the transcoder&#8217;s template file.<\/p>\n<pre><code>&lt;Parameter&gt;\n    &lt;Name&gt;mainconcept.bit_rate_mode&lt;\/Name&gt;\n    &lt;Value&gt;2&lt;\/Value&gt; &lt;!-- 0 = CBR, 1 = CQT, 2 = VBR, 3 = TQM --&gt;\n    &lt;Type&gt;Long&lt;\/Type&gt;\n&lt;\/Parameter&gt;<\/code><\/pre>\n<p>Happy about being able to continue the article, the writer added the parameters to the template file. Next, the writer attempted to capture the decoding bitrate in VLC to visually show the difference between CBR and VBR. And then, <strong>the real digging began.<\/strong><\/p>\n<\/section>\n<section id=\"FullScaleDigging\">\n<h2>The Real Digging: Huh? This Is odd.<\/h2>\n<section id=\"WhatsDifferent\">\n<h3>What changed?<\/h3>\n<p>In a one live application, the writer created two transcoder profiles as follows, and then inputted a 9Mbps UDP Multicast MPEG TS stream.\n<ul>\n<li>Applied 3.65Mbps to the video bitrate of the default Wowza transcoding profile.<\/li>\n<li>Applied 3.65Mbps to the video bitrate of the default Wowza transcoding profile, and then applied the VBR parameters.<\/li>\n<\/ul>\nThe bitrates of the two output streams from the different transcoders should have measured differently. However, the bitrates of both output streams were same. Even after trying to change the mode to CBR, the result was the same too.<\/p>\n<p>Thinking the settings might have been entered incorrectly, the writer contacted Wowza again with the bitrate data measured by <code>ffprobe<\/code> and the <code>transrate.xml<\/code> file used. A few days later, a reply with the following content arrived.<\/p>\n<blockquote>I\u2019d also suggest testing with a more dynamic source (fast movement, scene changes, etc.) to give the encoder more reason to vary the bitrate.<\/blockquote>\n<p>The moment the author read the reply, a hunch kicked in: Uh-oh&#8230; <strong>this won\u2019t be easy<\/strong>.<\/p> \n\n<\/section>\n\t<section id=\"LookClosely\">\n<h3>Open Your Eyes and See!<\/h3>\n<p>When someone talking about the content issue, the best answer is a direct visual demonstration. Typically, dynamic content brings to mind things like concerts or sports broadcasts. The writer agrees, but there is another type of content that is just as dynamic: <strong>anime featuring transforming magical girls<\/strong>.<\/p>\n<center><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/RXsEvjIbk1k?si=o41SXGNA1cNJbe7T\" title=\"YouTube video player\" frameborder=\"1\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/center>\n<p>The video above is a mosaic version of the capture file sent to Wowza, edited to protect the copyright of the content used for the test. Although it is mosaiced, it is clear that the content is dynamic enough. The VLC information window is displayed below the video.<\/p>\n<p>There are three factors to observe carefully here:\n<dl>\n    <dt>Input Media Data Size<\/dt>\n    <dd>This indicates the total amount of data transmitted in the stream. Since the two transcoders are operating with different profiles, the data sizes of the streams should not be identical.<\/dd>\n    <dt>Input Bitrate Graph<\/dt>\n    <dd>Because CBR and VBR use different encoding methods, the shapes of their graphs must be different.<\/dd>\n    <dt>Demuxed Data Size<\/dt>\n    <dd>This is the size of the data that VLC used for playback from the stream. Again, the sizes of the two streams should not be identical.<\/dd>\n<\/dl>\nAs expected, the three factors appeared identical, regardless of the CBR or VBR operating mode. The writer sent a reply to Wowza, including the video.<\/p>\n<p>Serveral days later, Wowza sent a reply.\n<blockquote>&#8230;Wowza Streaming Engine\u2019s default behavior already uses VBR encoding. So, unless you&#8217;re explicitly changing it to a different mode (like CBR), VBR is the default behavior out-of-the-box&#8230;.<\/blockquote><\/p>\n<\/section>\n\n\t<section id=\"WhatIsThis\">\n<h3>Okay, Then What Is This?<\/h3>\n<p>The writer understands that technical support departments have standard verification factors and procedures. However, from the user&#8217;s perspective, the support team&#8217;s response can sometimes hard to understand. (The writer still remember Thomson&#8217;s first answer about about an encoder output stream issue. &#8216;Is the encoder grounded?&#8217;) <strong>What, you think I didn\u2019t even try?<\/strong><\/p>\n\n<p>During reading the response, the writer suddenly realized that missed something. Typically, VBR settings requires additional options, usually around three likes,\n<dl>\n    <dt>Max Bitrate<\/dt>\n    <dd>The maximum bitrate not exceed<\/dd>\n    <dt>Min Bitrate<\/dt>\n    <dd>The minimum bitrate not exceed<\/dd>\n    <dt>Q-Factor<\/dt>\n    <dd>Quality factor: The level of image quality to be maintained.<\/dd>\n<\/dl>\nBut <strong>there are no such options<\/strong> in Wowza Streaming Engine.<\/p>\n<p>The writer think that, understanding the default values or adjustment methods for these factors would clarify the transcoder\u2019s behavior and support effective CBR implementation. So, along with mentioning that the CBR setting had already been tested in Wowza, the writer sent a reply requesting information about those three values.<\/p>\n<p>The writer received a reply several days later.\n<blockquote>..I could replicate the issue you reported&#8230; &#8230;we currently do not have any documented&#8230;<\/blockquote>\n<strong>Right! this is just the beginning.<\/strong> (Then what on earth have been doing until now?)<\/p>\n<\/section>\n<\/section>\n<section id=\"ResultBigRock\">\n<h2>The Result of Digging: A Huge Rock<\/h2>\n<section id=\"XcoderParms\">\n<h3>Hidden Parameters for the Transcoder<\/h3>\n<p>The next day, an email arrived from Wowza containing details about several options for fine-tuning the transcoder settings. It included explanations on <a href=\"https:\/\/www.decteng.com\/en\/wowza-transcoder-hidden-vbr-options\/\" title=\"Hidden options of the Wowza Streaming Engine Transcoder.\" hreflang=\"en\">how to modify the following hidden  parameters<\/a>:\n<ul><li><strong>Average bitrate<\/strong><\/li>\n<li><strong>Maximum bitrate<\/strong><\/li>\n<li><strong>Buffer Size<\/strong><\/li>\n<li><strong>Q Factor<\/strong> : I-frame, B-frame, P-frame Quantization<\/li><\/ul><\/p>\n\n<p>This time, feeling there was something to gain, the writer excitedly applied the new settings and finally succeeded in observing a significant difference.\n<figure class=\"wp-block-image aligncenter size-medium\"><a href=\"https:\/\/www.decteng.com\/ko\/wp-content\/uploads\/sites\/4\/2025\/07\/WowzaTranscoderOutDifference.webp\"><img decoding=\"async\" src=\"https:\/\/www.decteng.com\/ko\/wp-content\/uploads\/sites\/4\/2025\/07\/WowzaTranscoderOutDifference-400x216.webp\" alt=\"A clear difference is visible in the bitrate graphs and data sizes of the two streams.\" class=\"wp-image-806\" \/><\/a><figcaption class=\"wp-element-caption\">A clear difference is visible in the bitrate graphs and data sizes of the two streams.<\/figcaption><\/figure>\n<figure class=\"wp-block-image aligncenter size-medium\"><a href=\"https:\/\/www.decteng.com\/ko\/wp-content\/uploads\/sites\/4\/2025\/07\/WowzaTranscoderOutAlmostCBR.webp\"><img decoding=\"async\" src=\"https:\/\/www.decteng.com\/ko\/wp-content\/uploads\/sites\/4\/2025\/07\/WowzaTranscoderOutAlmostCBR-400x215.webp\" alt=\"The range of bitrate fluctuation has clearly decreased.\" class=\"wp-image-805\" \/><\/a><figcaption class=\"wp-element-caption\">The range of bitrate fluctuation has clearly decreased.<\/figcaption><\/figure><\/p>\n<\/section>\n<section id=\"MetBigRock\">\n<h3>Encountering a Huge Rock in the End<\/h3>\n<p>If so, knowing the initial values for these settings would help in understanding the characteristics of the stream output by the Wowza transcoder, which would be beneficial for writing the article. So, the writer sent this inquiry to Wowza, and got a reply a few days later.\n<blockquote>there are no internal defaults applied for these parameters they default to 0.<\/blockquote><\/p>\n<p>Furthermore, the reply stated:\n<blockquote>I checked with our Product Management team, and they confirmed that this is indeed a bug. I\u2019ve gone ahead and created a bug ticket for it in our internal system<\/blockquote><\/p>\n<p>The result of all the tirelessly diligent digging was hitting <strong>a huge rock that could no longer be moved with a shovel<\/strong>. Now, it is up to Wowza to remove this rock.<\/p>\n\t<\/section>\n<\/section>\n<section id=\"Conclusion\">\n<h2>Conclusion and Final Thoughts<\/h2>\n<p>It took over a month from the initial question to the offcial bug registration. Although there were moments of frustration, the Wowza representative diligently responded to the writer&#8217;s issue over this long period (and is still responding). Regardless of the issue itself, the writer think that Wowza&#8217;s technical support is quite good.<\/p>\n<p>Wowza has been used in the field for a long time. Its functionality and stability have been thoroughly verified over many years, and there is no dispute about this.<\/p>\n<p>The writer think that <strong>Wowza is fundamentally an origin server<\/strong> and that the transcoding process should be handled by separate, external equipment.<\/p>\n<p>However, <strong>this issue is not a critical problem that makes the practical use of Wowza Transcoder impossible<\/strong>. Even now, numerous streams are being delivered through Wowza Transcoder, as the use of CBR in the OTT environment is quite limited. The writer would also have continued using it without noticing the problem, just as before, if not for looking into it more deeply while preparing this blog.<\/p>\n<p>This issue has been officially acknowledged as a bug and assigned the tracking ID ENG-2346. The next step is now up to Wowza to address.<\/p>\n<p>As one of the Wowza users, this writer believes it is enough to have contributed in a small way to improving the program, to have gained deeper knowledge through the process, and to have written a post that may serve as a helpful reference for those who might otherwise waste their thoughts and time on the same issue..<\/p>\n<\/section>\n","protected":false},"excerpt":{"rendered":"<p>A one-month record of identifying and reporting the official Wowza Transcoder CBR bug (ENG-2346), and adjustable VBR settings in Wowza Streaming Engine Transcoder.<\/p>\n","protected":false},"author":1,"featured_media":35,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[32,17,30,31,20],"class_list":{"0":"post-36","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-ott","8":"tag-bug-report","9":"tag-experience","10":"tag-technical-support","11":"tag-transcoding","12":"tag-wowza-streaming-engine","13":"content-layout-excerpt-thumb"},"_links":{"self":[{"href":"https:\/\/www.decteng.com\/en\/wp-json\/wp\/v2\/posts\/36","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=36"}],"version-history":[{"count":1,"href":"https:\/\/www.decteng.com\/en\/wp-json\/wp\/v2\/posts\/36\/revisions"}],"predecessor-version":[{"id":37,"href":"https:\/\/www.decteng.com\/en\/wp-json\/wp\/v2\/posts\/36\/revisions\/37"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.decteng.com\/en\/wp-json\/wp\/v2\/media\/35"}],"wp:attachment":[{"href":"https:\/\/www.decteng.com\/en\/wp-json\/wp\/v2\/media?parent=36"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.decteng.com\/en\/wp-json\/wp\/v2\/categories?post=36"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.decteng.com\/en\/wp-json\/wp\/v2\/tags?post=36"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}