Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How Bandwidth is calculated and written in Manifest file #158

Closed
Natarajan92 opened this issue Jun 28, 2017 · 2 comments
Closed

How Bandwidth is calculated and written in Manifest file #158

Natarajan92 opened this issue Jun 28, 2017 · 2 comments

Comments

@Natarajan92
Copy link

Natarajan92 commented Jun 28, 2017

Hi,

We have created ABR Mpeg-Dash stream in four profiles (650Kbps, 1200Kbps, 2400Kbps and 4800Kbps). After packaging the manifest file video adaptation set looks like below and sample manifest file is attached

"AdaptationSet

maxHeight="720" maxWidth="1280" mimeType="video/mp4" minHeight="288" minWidth="512" segmentAlignment="true" startWithSAP="1"><Representation bandwidth="5425530" codecs="avc1.4D401F" frameRate="24000/1001" height="720" id="video/4" scanType="progressive"

width="1280"/>"

In Manifest file the Representation bandwidth value is higher than what we mention while encoding. The Mediainfo and FFmpeg gives the bitrate value as 4489kb/s after encoding.

So, How the bandwidth of the encoded file is calculated and being represented in manifest file for playback ?

Due to higher bandwidth value mentioned in manifest file, The client player will get playback problem over internet ?

For testing purpose we have created manifest file with single bit-rate representations too which will be played by restricting the bandwidth as high 5000kbps.

When it comes to 4800kbps single profile playback test with bandwidth restriction of 5000kbps, the manifest file has representation higher than 5000kbps. Will it cause playback problem ?

Support_Issue_Mpd.txt

@barbibulle
Copy link
Contributor

The reason you are seeing a different value for the bandwidth in the MPD and from ffmpeg/mediainfo is because the MPD value is computed in a different way, in order to comply with the specification. The bandwidth reported by ffmpeg or mediainfo is the average bandwidth for the stream (number of bytes divided by duration), whereas for the MPD the calculation is done by segment, and also based on the buffer model, that takes the minBufferTime into account. To be more specific, the value is an indication to the player that if it starts playing after having buffered 'minBufferTime', and if the network bandwidth is exactly the value in the MPD, then the buffer will never completely empty. So if your encoder creates segments for which the average bitrate for the segment is higher, or if within a segment you have a higher bitrate at some point of the the segment than other points, you will see the MPD bandwidth value be somewhat different from the stream's average bandwidth.

@qchroman
Copy link

I'm sorry, I came across this value within my work which involves content download and I was also wondering about the calculation as the size of the chunk you download can't be really calculated based on the stream length and the bandwidth because the bandwidth is higher. You are saying

in order to comply with the specification

What do you mean by that if you don't mind me asking? Do you happen to have a link to the specification?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants