On this page

Monitoring Live Streams

Introduction

Stream Health is a built-in monitoring feature that gives a continuous visibility into the quality of a live input stream. As soon as the stream goes live, Qencode starts collecting key performance metrics every 10 seconds — including video and audio bitrate, framerate, and resolution — and makes them available in both a visual dashboard and API.

Use Stream Health to:

  • Catch quality problems early, before they affect your viewers
  • Investigate past incidents by reviewing historical metric data

Summary Panel

At the top of the Stream Health page, a summary panel shows the most recent values recorded during the last active session.

MetricWhat it shows
Video BitrateMeasured ingest video bitrate (Kbps)
Audio BitrateMeasured ingest audio bitrate (Kbps)
FramerateFrames per second being received (fps)
ResolutionInput stream resolution

Video Bitrate

The Video Bitrate tab displays a time-series area chart of the measured input video bitrate over the selected time range.

Use this chart to identify drops or spikes in video quality. A stable stream should hold a relatively flat line near your target bitrate. Sudden drops may indicate network congestion or encoder instability on the sender side. Spikes above your expected bitrate can indicate a misconfigured encoder.

Audio Bitrate

The Audio Bitrate tab displays a time-series area chart of the measured input audio bitrate over the selected time range.

The curve here often mirrors the video bitrate chart. A sudden drop in audio bitrate — especially if the video bitrate remains stable — usually points to an issue with audio encoding on the sender side.

Framerate

The Framerate tab displays a time-series area chart of the measured input frames per second over the selected time range.

A healthy stream holds a steady line close to your target FPS (for example, 30 fps). Dips below the target suggest the encoder is struggling to maintain output — typically due to CPU load, insufficient upload bandwidth, or an unstable source.

Resolutions

The Resolutions tab displays a proportional bar showing the distribution of input resolutions detected during the selected period.

Session Timeline

The Session Timeline tab displays a paginated table of raw metric samples, sorted by timestamp from newest to oldest. Each row represents one 10-second health snapshot and includes the following columns:

ColumnDescription
TimestampUTC time the sample was recorded
Video BitrateMeasured video bitrate for that interval (kbps)
Audio BitrateMeasured audio bitrate for that interval (kbps)
FPSMeasured framerate - highlighted in red if below expected
ResolutionInput resolution at that moment (e.g. 1920x1080)

Use the Session Timeline when you need to pinpoint exactly when a quality issue occurred and correlate it with events in your encoder or network logs.

API Reference

Stream health metrics are available via the API for programmatic access, automation, or integration with external monitoring systems.

Endpoint

GET /v1/live-streams/{stream_id}/health

Query Parameters

ParameterTypeDefaultDescription
time_fromdatetime stringStart of current or last live sessionStart of the query window
time_todatetime string(none)End of the query window
time_bucketstring'absent' — raw modeEnables aggregation. When set to 'auto', the interval is calculated automatically to return up to 50 buckets. Set to none to explicitly disable aggregation and return raw samples. Possible values: 'auto', '1m', '5m', '1h', '1d', '1w', '1M', 'none'
limitinteger1000Maximum number of rows returned
no_time_filterbooleanfalseWhen 'true', disables the default time window and returns all records for the stream regardless of timestamp. Applies in raw mode only.

Response Example

{
  "metrics": [...],
  "count": 42,
  "aggregated": false,
  "time_bucket": null,
  "interval": null,
  "summary": { ... },
  "time_from": "2026-03-13 16:00:00",
  "time_to": "2026-03-13 17:00:00"
}

Response Fields

FieldTypeDescription
metricsarrayArray of metric samples — fields depend on raw vs. aggregated mode (see below)
countintegerNumber of items in the metrics array
aggregatedboolean'true' when time_bucket aggregation is active, 'false' for raw mode
time_bucketstringThe bucket interval used (e.g. 5m), or null in raw mode
intervalintegerSeconds per bucket when time_bucket='auto'; null otherwise
summaryobjectStatistical summary across the queried range (see Summary Object below); null when the stream has no data
time_fromstringStart of the queried window
time_tostringEnd of the queried window

Raw Mode Response (aggregated: false)

Returned when time_bucket is absent or set to none. Rows are ordered newest first.

{
  "stream_id": "abc123",
  "timestamp": "2026-03-13 17:00:00",
  "video_bitrate": 5824,
  "audio_bitrate": 192,
  "framerate": "29.97",
  "time_connected": 3720,
  "encoder": "RTMP Client",
  "video_codec": "H264",
  "video_data_rate": 5000,
  "resolution": "1920x1080",
  "input_frame_rate": "29.97",
  "audio_codec": "AAC",
  "audio_data_rate": 192,
  "audio_channels": 2,
  "audio_sample_rate": 44100,
  "audio_sample_size": 16
}
FieldTypeDescription
stream_idstringUnique stream identifier
timestampstringUTC timestamp of the sample
video_bitrateintegerMeasured input video bitrate (kbps)
audio_bitrateintegerMeasured input audio bitrate (kbps)
video_data_rateintegerVideo track bitrate (Kbps) — user-configured value if set, otherwise measured
audio_data_rateintegerAudio track bitrate (Kbps)
frameratestringMeasured input framerate (fps)
input_frame_ratestringVideo track framerate - user-configured value if set, otherwise measured
time_connectedstringSeconds elapsed since stream input was created
resolutionstringInput resolution (e.g. 1920x1080)
encoderstringSource type (e.g. RTMP Client, WebRTC Client, SRT Client)
video_codecstringInput video codec (e.g. H264)
audio_codecstringInput audio codec (e.g. AAC)
audio_channelsintegerNumber of audio channels
audio_sample_rateintegerAudio sample rate (Hz)
audio_sample_sizeintegerAudio sample size (bits)

Aggregated Mode Response (aggregated: true)

Returned when time_bucket is set to any value other than none. Rows are ordered oldest first.

{
  "time_bucket": "2026-03-13 17:00:00",
  "sample_count": 6,
  "avg_video_bitrate": 5600,
  "min_video_bitrate": 4800,
  "max_video_bitrate": 5824,
  "avg_audio_bitrate": 192,
  "min_audio_bitrate": 190,
  "max_audio_bitrate": 194,
  "avg_framerate": 29.95,
  "min_framerate": 29.80,
  "max_framerate": 29.97,
  "avg_input_frame_rate": 29.97,
  "avg_video_data_rate": 5000,
  "avg_audio_data_rate": 192,
  "max_time_connected": 3720,
  "resolution": "1920x1080",
  "video_codec": "H264",
  "audio_codec": "AAC",
  "encoder": "RTMP Client"
}
FieldTypeDescription
time_bucketstringStart timestamp of this bucket
sample_countintegerNumber of raw samples aggregated into this bucket
avg/min/max_video_bitrateintegerVideo bitrate statistics for the bucket (Kbps)
avg/min/max_audio_bitrateintegerAudio bitrate statistics for the bucket (Kbps)
avg/min/max_framerateintegerFramerate statistics for the bucket
avg_input_frame_rateintegerAverage video track framerate for the bucket
avg_input_frame_rateintegerAverage video track framerate for the bucket
avg_video_data_rateintegerAverage video track bitrate for the bucket (Kbps)
avg_audio_data_rateintegerAverage audio track bitrate for the bucket (Kbps)
max_time_connectedintegerMaximum time connected value seen in this bucket (seconds)
resolutionstringInput resolution during this bucket
video_codecstringVideo codec during this bucket
audio_codecstringAudio codec during this bucket
encoderstringSource type during this bucket

Summary Object

The summary field is always present in the response and provides statistical aggregates across the entire queried time range.

"summary": {
  "total_samples": 360,
  "video_bitrate": { "avg": 5600, "median": 5700, "min": 4800, "max": 5824, "p10": 5000, "p90": 5800 },
  "audio_bitrate": { "avg": 192, "median": 192, "min": 188, "max": 196, "p10": 190, "p90": 194 },
  "framerate":     { "avg": 29.95, "median": 29.97, "min": 28.50, "max": 29.97, "p10": 29.80, "p90": 29.97 },
  "resolution": "1920x1080"
}
FieldTypeDescription
total_samplesintegerTotal number of 10-second samples in the queried range
video_bitrateobjectavg, median, min, max, p10, p90 of video bitrate across all samples (bps)
audio_bitrateobjectavg, median, min, max, p10, p90 of audio bitrate across all samples (bps)
framerateobjectavg, median, min, max, p10, p90 of framerate across all samples
resolutionobjectMost common resolution during the queried range

Need More Help?

For additional information, tutorials, or support, visit the Qencode Documentation pageLink or contact Qencode Support at support@qencode.com.