HLS Target Duration
A common issue when playing live HLS is the value of target duration
(EXT-X-TARGETDURATION
).
The target duration is an integral number of seconds that correspond
to the longest segment in the stream. Depending on HLS version, this
value must either be higher than the longest duration, or can be rounded
to the closest integer, but many players desire a lower value
in order to work best. This is due to that the target-duration value influences
how often the client can ask for a playlist update.
Because live ingest node (ESB3003) generates segments with a precise average segment duration, adjusted segmentation boundaries due to SCTE-35 ad markers number may result in a single segment duration being 1.5 times the average duration. These singular values then effect the target-duration to become high.
To be able to fine-tune the target duration, the ew-manip
service has
an option to change the #EXT-X-TARGET-DURATON
value by using
the special query-string trigger target-duration=
once ew-manip
has
been triggered with the general ewm=1
trigger.
An example of a request that includes the target-duration=5
query parameter
to set #EXT-X-TARGET-DURATON
to 5seconds could look like this:
http://repack-host/__cl/cg:live/__c/program/__op/default/__f/index.m3u8?ewm=1&target-duration=5
This will only apply to “live-like” playlists from the repackager.
With “live-like” playlists, we mean playlists which come from a live channel
including an interval in the past. Such playlists can be
detected by searching for the part __cl/cg:
in the URL that indicates
that the URL is part of a live channel group. Media playlists with the stopTime
in the past are technically VoD playlists, but since there is a transition
from EVENT
to VOD
type of playlist as the stopTime
is passed, they
should be treated as live playlists.
For pure VoD assets, the target-duration can simply be calculated from the longest segment in the playlist, and there is in general no limit on how fast the segments can be requested, so there is no need for target duration modifications.