What is latency ?
The latency is the time elapsed between capturing and playing the video. In other words, for live video, latency is a delay in comparison to real-time. Standard latency values are between 30s and 60s.
Thanks to Low-Latency HLS we can achieve a latency of 2 seconds or less.
Advantages of Low Latency
In LL-HLS, the aim is to have a latency of about two seconds. It is really close to real time. This is a necessity for many use cases.
Let’s say you are watching a sport or any other entertainment event, you do not want your neighbour to spoil the outcome, which will be the case with a higher latency.
Another example, if you are watching a video and there is a live chat, you need low latency, otherwise the reply might not make sense.
Low latency is also necessary for :
- live auctions
How to achieve Low Latency with LL-HLS
Low-Latency HLS introduces new tags.
Functionalities supported by server
First of all, the server will be able to indicate which low-latency features it supports:
EXT-X-SERVER-CONTROLis mandatory in Low-Latency. It allows the server to indicate which of LL-HLS functionalities it is compatible with.
CAN-BLOCK-RELOAD=YESmeans the server can block a playlist reload until a specified resource is available. It is mandatory in Low-Latency. The client specifies this resource with query parameters
CAN-SKIP-UNTILmeans that the server can skip a part of the playlist if it is requested by the client. It reduces the size of the playlist. This one is optional.
PART-HOLD-BACKis the minimum distance from the end of the playlist. A client can play a segment if it is at this distance. It is mandatory if the playlist contains partial segments, which is the case in low latency.
Next, in Low-Latency HLS, there are partial segments. Those are much shorter than regular media segments. Hence, they are added earlier in the playlist. The tags for partial segments are :
EXT-X-PART-INFgives info on partial segments. It is mandatory if any are present in the playlist.
EXT-X-PARTidentifies a partial segment
Moreover, the server can inform the client that a segment is available for request and soon for delivery. So, the client can request this segment earlier. The tag used by server is :
EXT-X-PRELOAD-HINTgives information about next available resource. The client can ask for this resource, and the server will provide it once it is available.
Also, the client can ask for a playlist delta update. This allows to get only last part of the playlist. This can be used by the client if it already has the playlist and only wants to get new segments. The older segments are replaced by a new tag :
EXT-X-SKIPis there to replace ignored segments in case of delta updates. Only if client asked playlist delta update. In other words, reload playlist with query parameter
Finally, there is a new tag to switch renditions faster :
EXT-X-RENDITION-REPORTgives info about other renditions.
You’ll probably also like:
- Performance Testing Low Latency Dash servers with UbikLoadPack
- Performance Testing Low Latency HLS servers
- Load testing MPEG-DASH Video Streaming with Apache JMeter and UbikLoadPack
- Video Streaming: CMAF and Low-Latency
- Cases studies