Skip to main content

Interface: PlaybackStats

Delivery telemetry for the source currently loaded, from the adaptive-streaming engine. Returned by EvePlayer.getPlaybackStats.

Read the three bitrate figures carefully, because two of them are commonly misused:

  • peakBitrate is the manifest's BANDWIDTH, which HLS defines as the PEAK segment bitrate. It runs above what the stream costs on average, so a throughput-over-peakBitrate ratio invents a shortfall on healthy streams.
  • measuredBandwidth is the engine's estimate from the LAST segment only, time-to-first-byte included, so it is noisy and understates short segments.
  • contentBitrate is measured from the bytes actually delivered, and is the one to compare against.

Better still, prefer fetchRate, which needs no bitrate at all.

Properties​

averageBitrate​

averageBitrate: number | undefined

AVERAGE-BANDWIDTH of the active rendition, in bits/s, when declared.


bytesTransferred​

bytesTransferred: number

Total bytes of media segments downloaded for this source.


contentBitrate​

contentBitrate: number | undefined

What the stream really costs, measured from delivered bytes, in bits/s.


fetchRate​

fetchRate: number | undefined

Seconds of media fetched per second spent downloading. Above 1x the player is gaining on playback, which is all it needs to do.

This is the figure to judge a connection by. It ignores the idle gaps a player leaves between segments once its buffer is full, so unlike a throughput-over-bitrate ratio it does not collapse towards 1x on a fast line, and it depends on no declared bitrate. undefined before the first segment lands.


measuredBandwidth​

measuredBandwidth: number | undefined

The engine's throughput estimate from the last segment, in bits/s.


peakBitrate​

peakBitrate: number | undefined

BANDWIDTH of the active rendition: the declared PEAK, in bits/s.


requestsErrored​

requestsErrored: number

Segment requests that failed outright.


requestsTimedout​

requestsTimedout: number

Segment requests that timed out.


secondsLoaded​

secondsLoaded: number

Seconds of media those bytes represent, counted once even when the audio is a separate rendition fetched by its own loader (the engine's own counter adds both up, which would double this).


transferDuration​

transferDuration: number

Total time spent inside segment requests, in ms (round trip, so TTFB included).