# How to force bitrate of the transcoded stream?

**URL:** <https://community.wowza.com/t/how-to-force-bitrate-of-the-transcoded-stream/490>\
**Category:** Wowza Streaming Engine\
**Created:** [May 12, 2013, 3:56am UTC](https://community.wowza.com/t/how-to-force-bitrate-of-the-transcoded-stream/490 "2013-05-12T03:56:30Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![system](https://sea2.discourse-cdn.com/flex002/user_avatar/community.wowza.com/system/32/447_2.png) [@system](https://community.wowza.com/u/system)\
**Post date:** [May 12, 2013, 3:56am UTC](https://community.wowza.com/t/how-to-force-bitrate-of-the-transcoded-stream/490/1 "2013-05-12T03:56:30Z")

</div>

Hello Transcoder Team,

I have 1 Mbps input stream. The processing is as follow:

1. The source is an IP camera.

2. Application “master”, type=“live-record”. The stream is started with camera.stream file with the rtp link in it. I start the stream automatically but that is not important. As the result I have:

- recording of the input data

- published rtmp://x.x.x.x/master/camera.stream stream.

1. Application “origin”, type=“liverepeater”. The stream is started with camera-origin.stream with the RTMP link on the master stream. I start the stream manually on demand. The goal is to record all the input data, but make available the data to public only when the event is going, not before and after. All this works.

2. I need to record the input data with bitrate 1 Mbps (and it works too), but broadcast the stream as 512 kbps. So I set up transcoding section with the following settings:

```auto
<Encode>
    <Enable>true</Enable>
    <Name>512k</Name>
    <StreamName>mp4:${SourceStreamName}_512k</StreamName>
    <Video>
        <Codec>H.264</Codec>
        <Transcoder>default</Transcoder>
        <GPUID>-1</GPUID>
        <FrameSize>
            <FitMode>match-source</FitMode>
            <Width>860</Width>
            <Height>576</Height>
        </FrameSize>
        <Profile>base</Profile>
        <Bitrate>512000</Bitrate>
        <KeyFrameInterval>
            <FollowSource>true</FollowSource>
            <Interval>60</Interval>
        </KeyFrameInterval>
        <Parameters>
        </Parameters>
    </Video>
    <Audio>
        <Codec>AAC</Codec>
        <Bitrate>48000</Bitrate>
        <Parameters>
        </Parameters>
    </Audio>
    <Properties>
    </Properties>
</Encode>

```

Once I publish the origin stream I can connect to camera-origin.stream\_512k stream. And here is the issue (probably). All the metadata (in logs, in rtmpdump, in ffmpeg) says that the stream is 512k:

```auto
date: 2013-05-12
time: 04:25:51
tz: NOVT      
x-event: encoder-video-start
x-category: transcoder
x-severity: INFO
x-status: 200
x-ctx: camera-origin.stream
x-comment: {name:"512k", bitrate:512000, codec:H264, profile:Baseline, level:3.1, frameSize:860x576, displaySize:860x576, frameRate:12.5}

```

But when I save the stream with rtmpdump or ffmpeg it is 1 Mbps. For example here is ffmpeg output:

```auto
Input #0, flv, from 'rtmp://x.x.x.x/orig/camera-origin.stream_512k':
  Metadata:
    frameWidth : 860
    frameHeight : 576
    displayWidth : 860
    displayHeight : 576
    audiochannels : 1
  Duration: N/A, start: 0.000000, bitrate: 559 kb/s
    Stream #0:0: Video: h264 (Baseline), yuv420p, 860x576 [SAR 1:1 DAR 215:144], 512 kb/s, 12.50 tbr, 1k tbn, 25 tbc
    Stream #0:1: Audio: aac, 8000 Hz, mono, fltp, 47 kb/s
Output #0, flv, to 'f2.flv':
  Metadata:
    frameWidth : 860
    frameHeight : 576
    displayWidth : 860
    displayHeight : 576
    audiochannels : 1
    encoder : Lavf55.2.100
    Stream #0:0: Video: h264 ([7][0][0][0] / 0x0007), yuv420p, 860x576 [SAR 1:1 DAR 215:144], q=2-31, 512 kb/s, 1k tbn, 1k tbc
    Stream #0:1: Audio: aac ([10][0][0][0] / 0x000A), 8000 Hz, mono, 47 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame= 1657 fps= 27 q=-1.0 Lsize= 9572kB time=00:01:08.68 bitrate=1141.7kbits/s
video:9132kB audio:398kB subtitle:0 global headers:0kB muxing overhead 0.438521%

```

Note **bitrate=1141.7kbits/s** at the very bottom.

rtmpdump output:

```auto
INFO: Connected...
Starting Live Stream
INFO: Metadata:
INFO: trackinfo:
INFO: type video
INFO: profile-level-id 42801f
INFO: sprop-parameter-sets Z0KAH5ZSAbAk9+AqEAAAAwAQAAADAZ4EAAiYAAAjGE/GOMCAARMAAARjCfjHDtChUkA=,aMuNSA==
INFO: description {H264CodecConfigInfo: codec:H264, profile:Baseline, level:3.1, frameSize:860x576, displaySize:860x576, frameRate:12.5, PAR:1:1, crop: l:0 r:2 t:0 b:0}
INFO: type audio
INFO: config 1588
INFO: description {AACFrame: codec:AAC, channels:1, frequency:8000, samplesPerFrame:1024, objectType:LC}
INFO: rtpsessioninfo:
INFO: name D-Link DCS-5605
INFO: origin CV-RTSPHandler 1123412 0 IN IP4 z.z.z.z
INFO: timing 0 0
INFO: protocolversion 0
INFO: attributes:
INFO: etag 1234567890
INFO: range npt=now-
INFO: charset Shift_JIS
INFO: videocodecid avc1
INFO: width 860.00
INFO: height 576.00
INFO: frameWidth 860.00
INFO: frameHeight 576.00
INFO: displayWidth 860.00
INFO: displayHeight 576.00
INFO: framerate 12.50
INFO: videodatarate 500.00
INFO: audiochannels 1.00
INFO: audiosamplerate 8000.00
INFO: audiocodecid mp4a
INFO: audiodatarate 46.00
INFO: transcoder:
INFO: audioCodec AAC
INFO: audioBitrate 48000.00
INFO: audioEncodingParams FALSE
INFO: videoCodec H264
INFO: videoBitrate 512000.00
INFO: videoImplementation DEFAULT
INFO: videoProfile BASE
INFO: videoFrameSizeFitMode letterbox
INFO: videoFrameSizeWidth 860.00
INFO: videoFrameSizeHeight 576.00
INFO: videoKeyFrameFollowSourceTRUE
INFO: videoEncodingParams FALSE
14134.276 kB / 100.48 sec
Caught signal: 2, cleaning up, just a second...
14219.419 kB / 101.00 sec
Download may be incomplete (downloaded about 0.00%), try resuming

```

Some calculations: 14219 kB \* 8 / 101 = **1126 kbps**.

It might be the ffmpeg/rtmpdump issue, but this is what the access log has:

```auto
date: 2013-05-12
time: 04:38:45
tz: NOVT      
x-event: stop
x-category: stream
x-severity: INFO
x-status: 200
x-ctx: camera-origin.stream_512k
x-comment: -
x-vhost: _defaultVHost_
x-app: orig
x-appinst: _definst_
x-duration: 68.89
s-ip: [any]
s-port: 1935
s-uri: rtmp://x.x.x.x/orig
c-ip: y.y.y.y
c-proto: rtmp
c-referrer: -
c-user-agent: unknown
c-client-id: 832776896
cs-bytes: 3644
sc-bytes: 9811669
x-stream-id: 1
x-spos: 67976
cs-stream-bytes: 0
sc-stream-bytes: 9770610
x-sname: camera-origin.stream_512k
x-sname-query: -
x-file-name: -
x-file-ext: -
x-file-size: -
x-file-lengt: -
x-suri: rtmp://x.x.x.x/orig/camera-origin.stream_512k
x-suri-stem: rtmp://x.x.x.x/orig/camera-origin.stream_512k
x-suri-query: -
cs-uri-ste m: rtmp://x.x.x.x/orig/
cs-uri-query: -

```

Some calculations:

x-duration: 68.89

sc-bytes: 9811669

Bitrate = (9811669 \* 8)/68.89 = 1139401 bps = **1.08 Mbps**. Similar to what ffmpeg reported above. As I understand this is what the server sent in reality.

So this does look like the transcoder module works incorrectly. Can you please advice how to limit the bitrate? I am expecting a lot of connections and would like to save some bandwidth.

Best Regards,

Maxim

---

<div class="post-metadata">

**Author:** ![Maxim\_Makarenko](https://avatars.discourse-cdn.com/v4/letter/m/87869e/32.png) [@Maxim\_Makarenko](https://community.wowza.com/u/Maxim_Makarenko)\
**Post date:** [May 12, 2013, 6:41am UTC](https://community.wowza.com/t/how-to-force-bitrate-of-the-transcoded-stream/490/2 "2013-05-12T06:41:34Z")

</div>

UPD: I logged encoding parameters and changed bit\_rate\_scale from 0 to 1:

```auto
# long: external setting of bit_rate_scale (avoids recalculation of bitrate)
mainconcept.bit_rate_scale: 1

```

No effect ☹

Some other settings from the log:

```auto
# long: bit rate stuff: avg bitrate; if 0, use above quantization parameters
mainconcept.bit_rate: 512000
# long: bit rate stuff: H264_CBR, H264_CQT, H264_VBR or H264_TQM
mainconcept.bit_rate_mode: 2
# long: bit rate stuff: vbv buffer size
mainconcept.bit_rate_buffer_size: 574992
# long: bit rate stuff: max bitrate, used in VBR mode
mainconcept.max_bit_rate: 563200
# long: external setting of cpb_size_scale (avoids recalculation of bitrate)
mainconcept.cpb_size_scale: 2

```

And the result:

```auto
{name:"512k", bitrate:512000, codec:H264, profile:Baseline, level:2.1, frameSize:430x288, displaySize:430x288, frameRate:12.5}

```

Everything looks to be correct, but the stream is still 1 Mbps. I even reduced size of the video (in assumption that you do not touch bitrate if the video has the same width and height), but got no effect either.

---

<div class="post-metadata">

**Author:** ![Maxim\_Makarenko](https://avatars.discourse-cdn.com/v4/letter/m/87869e/32.png) [@Maxim\_Makarenko](https://community.wowza.com/u/Maxim_Makarenko)\
**Post date:** [May 13, 2013, 12:36am UTC](https://community.wowza.com/t/how-to-force-bitrate-of-the-transcoded-stream/490/3 "2013-05-13T00:36:59Z")

</div>

It looks like I found something. I changed the bitrate in transcoder settings from 512k to 256k and got the stream 512k. So the setting affects the bitrate of the transcoded stream!

This drives us to the question why the stream has double bitrate. I think the answer is in wrong framerate reported. Note that the original feed (from the IP camera) has 25 FPS, but camera-origin.stream reports only 12.5 FPS. This 2 times difference makes the 2 times difference in bitrate I think.

Please put your attention on that.

---

<div class="post-metadata">

**Author:** ![Maxim\_Makarenko](https://avatars.discourse-cdn.com/v4/letter/m/87869e/32.png) [@Maxim\_Makarenko](https://community.wowza.com/u/Maxim_Makarenko)\
**Post date:** [May 13, 2013, 10:43am UTC](https://community.wowza.com/t/how-to-force-bitrate-of-the-transcoded-stream/490/4 "2013-05-13T10:43:14Z")

</div>

My fault, I should have reported it from the beginning. The version is already latest. The ticket was created.

```auto
Wowza Media Server 3 Developer Edition (Expires: Oct 05, 2013) 3.5.2.07 build4736

```

---

<div class="post-metadata">

**Author:** ![Maxim\_Makarenko](https://avatars.discourse-cdn.com/v4/letter/m/87869e/32.png) [@Maxim\_Makarenko](https://community.wowza.com/u/Maxim_Makarenko)\
**Post date:** [May 14, 2013, 3:26am UTC](https://community.wowza.com/t/how-to-force-bitrate-of-the-transcoded-stream/490/5 "2013-05-14T03:26:38Z")

</div>

Thank you Andrew. Setting bitrate to 256k works and produces 512k stream.

I sent the bug report to D-Link support. JFI this is D-Link DCS-5605 model.

---

<div class="post-metadata">

**Author:** ![Andrew\_Kennedy1](https://avatars.discourse-cdn.com/v4/letter/a/278dde/32.png) [@Andrew\_Kennedy1](https://community.wowza.com/u/Andrew_Kennedy1)\
**Post date:** [May 13, 2013, 1:24pm UTC](https://community.wowza.com/t/how-to-force-bitrate-of-the-transcoded-stream/490/6 "2013-05-13T13:24:10Z")

</div>

We have been through a few things, in support, however it appears the camera is reporting 1/2 frame rate so when the transcoder is producing a new stream with the data it is being given the resulting bitrate out is twice the bitrate configured.

The only solution, which has already been outlined, is to set the bitrate 1/2 of what is needed and then the resulting output is the bitrate required.

Unfortunately in this case it is a camera manufacturer problem but there is a solution to create the required bitrate.

Andrew.

---

<div class="post-metadata">

**Author:** ![Roger\_Littin1](https://avatars.discourse-cdn.com/v4/letter/r/c89c15/32.png) [@Roger\_Littin1](https://community.wowza.com/u/Roger_Littin1)\
**Post date:** [May 13, 2013, 9:09am UTC](https://community.wowza.com/t/how-to-force-bitrate-of-the-transcoded-stream/490/7 "2013-05-13T09:09:26Z")

</div>

Hi Wotan,

Can you please try updating to the latest patch version here, [https://www.wowza.com/docs/wowza-streaming-engine-software-updates](https://www.wowza.com/docs/wowza-streaming-engine-software-updates), to see if that fixes your problem.

If not then can you please open a ticket at support@wowza.com.

Please include a reference to this forum post.

Regards,

Roger.
