How to Analyze the Channel / Movie Start Delay
When the subscriber switches on a TV channel or starts watching a movie, there is some delay between the moment of pressing a key on the remote control and the start of playback. Sometimes this delay can become too large and uncomfortable for subscribers. SmartCARE allows you to analyze the reasons that led to such situations.
What does SmartCARE have to offer?
You can get information about such problems in various ways:
- by receiving reports from subscribers,
- analyzing Abnormal clusters,
- noticing a drop in session quality,
- and others.
Regardless of the way above, the analysis of the playback start delay is performed on a specific device. By going to the SmartCARE Console > Sessions > Device info, you can find the problematic device by its UID or MAC:
Having found the device, you can see what happened with streaming on it. The most essential data are located in the Events and sessions section:

Each line of this graph represents an event of a certain type. These events are passed to the SmartCARE by client applications upon the occurrence of certain conditions.
Here you can find Join time events, which show the time between a subscriber pressing a button on the remote control (not releasing the button) and the start of playback, in msec. This way you can find sessions when the subscriber has suffered from too long waiting time for the channel or movie to start.
After you find abnormal Join time on the graph you can also look at additional parameters passed with this event. Remember the time of such event, switch to the Table tab and find it by time:

The jointime event can pass the following additional parameters:
The time between a subscriber pressing a button on the remote control (not releasing the button) and the start of playback.
API Request Parameter |
Type |
Description |
Player |
||||
Shaka |
HLSJS |
Cobalt + ExoPlayer |
iOS |
Android |
|||
e=JOIN_TIME |
String |
Event type |
+ |
+ |
+ |
+ |
+ |
values |
Integer |
The time between a subscriber pressing a button on the remote control (not releasing the button) and the start of playback, in ms. |
+ |
+ |
+ |
+ |
+ |
Parameters that directly affect the start time of the stream |
|||||||
mnft |
Double |
Amount of time it took to download and parse the manifest, in seconds. |
+ |
+ |
+ |
Roadmap |
N/A |
drmt |
Double |
Amount of time it took to download the first DRM key, in seconds. |
+ |
N/A |
Roadmap |
N/A |
+ |
lct |
Double |
Time spent on license requests during this session, in seconds. |
+ |
N/A |
Roadmap |
N/A |
+ |
ldl |
Double |
Time it took for the video element to have enough data to begin playback, in seconds. This is measured from the time the player’s load() function is called to the time the ‘loadeddata’ event is fired by the media element. |
+ |
+ |
N/A |
N/A |
+ |
Reference parameters |
|||||||
dt |
String |
Device type |
+ |
+ |
+ |
+ |
+ |
bfu |
Integer |
Loading buffer occupancy (%). The ratio of the time of viewing the content by the subscriber to the time of its buffering. For the JOIN_TIME event, this parameter should be equal to 100%, since playback has not started yet. |
+ |
+ |
+ |
N/A |
Roadmap |
ibr |
Integer |
NOT USED: Not sent by devices. Incoming stream bitrate, in bit/sec. |
– |
– |
– |
– |
– |
msd |
Double |
Presentation’s max segment duration: The duration of the longest segment described in the first loaded MPEG-DASH playlist at the moment of session start. |
+ |
+ |
N/A |
N/A |
+ |
ll |
Double |
Time between the frame display on the screen and its output to the air by the head-end, in seconds. |
+ |
+ |
N/A |
N/A |
Roadmap |
bft |
Double |
Total time spent in a buffering state, in seconds. |
+ |
+ |
+ |
N/A |
+ |
ebw |
Double |
Current estimated network bandwidth, in bit/sec. |
+ |
+ |
+ |
N/A |
+ |
pdc |
Integer |
Number of frames played |
+ |
+ |
+ |
N/A |
+ |
pdec |
Integer |
Number of frames with decoding errors |
+ (non-zero value) |
+ |
+ |
N/A |
Roadmap |
pbr |
Integer |
The bandwidth required for the current streams (total, in bit/sec). It takes into account the playback rate. |
|||||
abr |
Array of integers |
Available bitrates, in bit/sec. |
|||||
bdr |
Integer |
Buffer size, in sec. |
|||||
btr |
Integer |
Average bitrate calculated by the video PES packet, in bit/sec. |
|||||
dbr |
Integer |
Downloading bitrate, in bit/sec. |
|||||
dec |
Integer |
Number of frames with errors |
+ (non-zero value) |
+ |
+ |
N/A |
Roadmap |
ufc |
Integer |
Number of loading buffer underrun events (client application STVID_DATA_UNDERFLOW_EVT event). For the JOIN_TIME event, this parameter should be equal to 1. |
+ |
+ |
+ |
N/A |
+ |
fr |
Integer |
Number of frames (not fields) per second multiplied by 1000. For example, 24 fps is recorded as 24000. |
|||||
url |
String |
URL of the content playlist/manifest |
+ |
+ |
+ |
+ |
+ |
Now, in order to analyze this data for the cause of the large Join time, we need to understand the processes that occur during the stream start.
Process of Starting the TV Channel / Movie Playback
The Join time consists of the following chain of events, each of which can be analyzed using additional parameters:
https://view.genially.com/630c7e8550ebcc001183dc50/guide-stream-playback-starting
Knowing this sequence, you can understand where to look for the cause of a large delay in the playback start.