Live Timeshifting
Let viewers pause, rewind and rejoin a live stream, and the requirements for doing so.
Live Timeshifting
Contact your account manager to enable the Live Timeshifting capability on your account.
The Live Timeshifting capability for HLS allows viewers to fast forward, rewind, or pause/resume for up to one hour from the time they join a live event or a live channel's stream. This capability expands the playback window up to 60 minutes.
Our implementation uses the HLS Playlist Delta Updates standard, which serves historical segments on the media player's initial request and recent changes on subsequent requests. This minimizes the time required to load and maintain a larger playback window for your viewers.
Key information
-
Historical segments exclude ads. Any ads that occurred before the media player joined the stream will be unavailable for playback. However, ads played after the media player joined the stream should be available for replay.
-
If the Live Timeshifting capability is enabled and the hlsver parameter is set to a version lower than 9, then it will be overridden by version 9.
Requirements
The Live Timeshifting capability requires:
-
A media player that supports HLS 9 or higher.
-
A playback URL for a live event or a live channel whose query string includes the hist parameter set to the desired historical playback time in minutes.
Example: hist=50
Sample playback URL:
https://content.uplynk.com/event/abc580a0080e4d438a09c97a54cc7ab1.m3u8?hist=50
Initial and Subsequent Playlist Responses
The initial playlist response for a playback request that meets the above requirements includes:
- The
CAN-SKIP-UNTILtag, which advertises Delta Updates availability and tells the player how old a segment must be to be skipped. - The
MEDIA-SEQUENCEtag set to 0, since this is the first response. - The full playlist including requested historical playback segments.
Initial Playlist Response Example:
#EXTM3U
#EXT-X-VERSION:9
#EXT-X-PLAYLIST-TYPE:EVENT
#EXT-X-TARGETDURATION:4
#EXT-X-SERVER-CONTROL:CAN-SKIP-UNTIL=36.0
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:4.00,
fileSequence0.ts
#EXTINF:4.00,
fileSequence1.ts
#EXTINF:4.00,
fileSequence2.ts
#EXTINF:4.00,
fileSequence3.ts
#EXTINF:4.00,
fileSequence4.ts
...The player decides whether to request a Delta Update by appending the _HLS_SKIP=YES directive to the stream request. When a Delta Update is requested, the server skips old segments and only includes the most recent segments in the manifest. As playback progresses, the server notifies the media player of:
- The number of segments skipped through the
#EXT-X-SKIPtag. This tag replaces all segment URL lines added to the playlist before the skip limit. - The number of segments rolled off through the
#EXT-X-MEDIA-SEQUENCEtag. - Delta Updates availability through the
CAN-SKIP-UNTILtag.
Subsequent Playlist Response Example:
#EXTM3U
#EXT-X-VERSION:9
#EXT-X-PLAYLIST-TYPE:EVENT
#EXT-X-TARGETDURATION:4
#EXT-X-SERVER-CONTROL:CAN-SKIP-UNTIL=36.0
#EXT-X-MEDIA-SEQUENCE:266
#EXT-X-SKIP:SKIPPED-SEGMENTS=527
#EXTINF:4.00,
fileSequence793.ts
#EXTINF:4.00,
fileSequence794.ts
#EXTINF:4.00,
fileSequence795.ts
#EXTINF:4.00,
fileSequence796.ts
...Updated about 1 hour ago