
onMeta question
When using onMeta with a live RTMP stream, I'm seeing two properties I was curious about: bufferfill and bandwidth.
How are these calculated ? Is the bufferfill client side ? What exactly does this parameter mean?
When using onMeta with a live RTMP stream, I'm seeing two properties I was curious about: bufferfill and bandwidth.
How are these calculated ? Is the bufferfill client side ? What exactly does this parameter mean?
So lets say I have I'm seeing a bufferfill of 1.5 and over time it increases to 3. What exactly does this mean ? I see a larger bufferfill number when I decrease the RTMP bufferLength parameter to say 0.1.
Anybody ???
Sorry for the delayed response. We do not get many RTMP and Flash questions any more, so we will have to check in with our engineers on this one.
The only configuration option I see for RTMP over at https://developer.jwplayer.com/jw-player/docs/developer-guide/customization/configuration-reference/ is
bufferlength: This option controls how much buffer, in seconds, to load before playing back. A small buffer means faster starts/seeks, but a higher chance of re-buffering.
Here is the response from our engineers:
Both are configured from the client side inside the RTMP media provider.
private function positionInterval():void {
var pos:Number = _stream.time;
var bfr:Number = Math.round(_stream.bufferLength * 10 / _stream.bufferTime) / 10;
// Toggle between buffering and playback states
if (bfr < 0.6 && isVOD(_item.duration) && pos < _item.duration - 5 && state != PlayerState.BUFFERING) {
setState(PlayerState.BUFFERING);
if (_auto) {
swapLevel(autoLevel());
}
} else if (bfr > 0.8 && state != PlayerState.PLAYING) {
setState(PlayerState.PLAYING);
}
// Send time ticks when playing
if (state == PlayerState.PLAYING) {
_position = pos;
sendMediaEvent(MediaEvent.JWPLAYER_MEDIA_TIME, {position: pos, duration: _item.duration});
}
// Track bandwidth if buffer is neither depleted nor filled.
if (bfr > 0.2 && bfr < 2) {
_bandwidth = Math.round(_stream.info.maxBytesPerSecond * 8 / 1024);
}
// Send out event to notify swap.
sendMediaEvent(MediaEvent.JWPLAYER_MEDIA_META, {
metadata: {
bandwidth: _bandwidth.toString(),
qualitylevel: _level,
screenwidth: _config.width,
transitioning: _transition.toString(),
bufferfill: bfr
}
});
}