The latency of a video is the amount of delay that is incurred from reality to visible video playback. For example, you are watching yourself on a security camera feed. You wave your hand. The latency of the video is how long it takes for you to see yourself wave that hand in the video.
Many factors contribute to the latency of a video:
- The time it takes to create the video in the first place and encode it
- The time it takes the video to be put onto the network (TCP and IP network buffers)
- The time it takes the video to be read, translated, and put back on the network for consumption (EvoStream Media Server role)
- The time it takes to receive the video, potentially buffer it, decode it and display it to the screen (the player)
Each of these latency factors may be influenced to have either higher or lower latency. Some items that may influence each latency factor include:
- The amount of loss on the network
- The frame-rate of the video
- The configured receive or send buffer
EvoStream has run extensive tests to identify the latency not only of the EvoStream Media Server but also of common video sources and players. Understanding the latency of all of these components is critical to the design of any low-latency live-streaming platform.
Latency Results
Through testing the various combinations of stream sources and players EvoStream has been able to identify the typical (average) latencies of the various tools. For all of the various players and stream sources EvoStream has used the default settings and configurations. This has been done to reflect the most common user experience while also reducing the number of variables at play in these latency tests. The only exception is Flowplayer, where the inbound buffer was set to zero (0).
The latency results, by component, are as follows:
Component | Added Time (Seconds) | |
Media Server | ||
EvoStream Media Server | 0.1 | |
Sources | ||
Axis Security Camera | 0.44 | |
Open Broadcaster (OBS) | 1.4 | |
Wirecast | 3.1 | |
Players | ||
Flowplayer (0 buffer) | 0.2 | |
JWPlayer | 2.1 | |
VLC playing RTSP | 0.73 | |
VLC playing RTMP | 9.47 | |
Android (MX Player) | 3.45 | |
EvoStream HTML 5 Player | 0.8 |
There are a few values that immediately come into focus in the above chart:
- The extremely low amout of time added to the workflow by the EvoStream Media Server. The EMS processes a single frame at a time allowing it to remain highly efficient in its processing.
- VLC, when playing an RTMP stream, uses an enormous buffer, resulting in huge delays in both the playback of the stream and the initial startup of playback.
- The stock android player buffers RTSP and so creates a large amount of latency.
- The source of the stream matters and can greatly effect the overall latency of a workflow.
These results can also be viewed by comparing the calculated total latency of a streaming workflow with the actual observed latency of such a work flow. This comparison can be found on the next page.
Source | Source Latency | EMS Latency | Player | Player Latency | Total Calculated Avg Latency | Observed Latency | Delta of Observed to Calculated |
Axis Camera | 0.44 | 0.1 | Flowplayer (0 buffer) | 0.2 | 0.74 | 0.32 | -0.42 |
OBS | 1.4 | 0.1 | Flowplayer (0 buffer) | 0.2 | 1.7 | 1.53 | -0.17 |
Wirecast | 3.1 | 0.1 | Flowplayer (0 buffer) | 0.2 | 3.4 | 3.76 | 0.36 |
Axis Camera | 0.44 | 0.1 | JWPlayer | 2.1 | 2.64 | 2.25 | -0.39 |
OBS | 1.4 | 0.1 | JWPlayer | 2.1 | 3.6 | 3.26 | -0.34 |
Wirecast | 3.1 | 0.1 | JWPlayer | 2.1 | 5.3 | 5.5 | 0.2 |
Axis Camera | 0.44 | 0.1 | VLC – RTSP | 0.73 | 1.27 | 1.13 | -0.14 |
OBS | 1.4 | 0.1 | VLC – RTSP | 0.73 | 2.23 | 2.15 | -0.08 |
Wirecast | 3.1 | 0.1 | VLC – RTSP | 0.73 | 3.93 | 3.87 | -0.06 |
Axis Camera | 0.44 | 0.1 | VLC – RTMP | 9.47 | 10.01 | 10.39 | 0.38 |
OBS | 1.4 | 0.1 | VLC – RTMP | 9.47 | 10.97 | 11.24 | 0.27 |
Wirecast | 3.1 | 0.1 | VLC – RTMP | 9.47 | 12.67 | 12.26 | -0.41 |
Axis Camera | 0.44 | 0.1 | Android (MX Player) | 3.45 | 3.99 | 4.1 | 0.11 |
OBS | 1.4 | 0.1 | Android (MX Player) | 3.45 | 4.95 | 5.07 | 0.12 |
Wirecast | 3.1 | 0.1 | Android (MX Player) | 3.45 | 6.65 | 6.39 | -0.26 |
Axis Camera | 0.44 | 0.1 | EvoStream HTML 5 | 0.8 | 1.34 | 1.25 | -0.09 |
OBS | 1.4 | 0.1 | EvoStream HTML 5 | 0.8 | 2.3 | 2.47 | 0.17 |
Wirecast | 3.1 | 0.1 | EvoStream HTML 5 | 0.8 | 4 | 3.72 | -0.28 |
*All times in seconds.
Test Parameters
The tests were performed with the following settings:
Axis Camera | OBS | Wirecast | |
GOP Size | 32 | Auto | 240 |
BitRate (kb/s) | Variable | 1000 | 2025 |
1280 | 1366 | 1280 | |
Height | 720 | 768 | 720 |
Frame rate | Variable | 30 | 30 |
Flowplayer buffer = 0
EMS maxRtmpOutBuffer = 524288
Raw Test Results
The following are the raw results from the various work flow tests.
Inbound | Outbound | Visual Playback Latency | |||||
Protocol | Source | Protocol | Player | Test #1 | Test #2 | Test #3 | Average |
RTSP | Axis Cam Live | RTMP | Flowplayer (0 buffer) | 0.298 | 0.339 | 0.314 | 0.32 |
RTMP | OBS | RTMP | Flowplayer (0 buffer) | 1.263 | 1.546 | 1.778 | 1.53 |
RTMP | Wirecast | RTMP | Flowplayer (0 buffer) | 3.746 | 3.78 | 3.744 | 3.76 |
RTSP | Axis Cam Live | RTMP | JWPlayer | 2.179 | 2.246 | 2.328 | 2.25 |
RTMP | OBS | RTMP | JWPlayer | 3.275 | 3.228 | 3.276 | 3.26 |
RTMP | Wirecast | RTMP | JWPlayer | 5.381 | 5.522 | 5.585 | 5.50 |
RTSP | Axis Cam Live | RTMP | VLC | 10.452 | 10.341 | 10.39 | 10.39 |
RTMP | OBS | RTMP | VLC | 11.328 | 11.263 | 11.139 | 11.24 |
RTMP | Wirecast | RTMP | VLC | 12.534 | 12.067 | 12.182 | 12.26 |
RTSP | Axis Cam Live | RTSP | Android (MX Player) | 4 | 3.8 | 4.5 | 4.10 |
RTMP | OBS | RTSP | Android (MX Player) | 4.82 | 5.194 | 5.195 | 5.07 |
RTMP | Wirecast | RTSP | Android (MX Player) | 6.969 | 5.428 | 6.772 | 6.39 |
RTSP | Axis Cam Live | RTSP | FFPlay | 1.856 | 2.648 | 2.21 | 2.24 |
RTMP | OBS | RTSP | FFPlay | 2.346 | 1.54 | 1.455 | 1.78 |
RTMP | Wirecast | RTSP | FFPlay | 4.118 | 6.458 | 7.112 | 5.90 |
RTSP | Axis Cam Live | RTSP | VLC | 1.106 | 1.143 | 1.153 | 1.13 |
RTMP | OBS | RTSP | VLC | 2.2 | 2.105 | 2.159 | 2.15 |
RTMP | Wirecast | RTSP | VLC | 4.445 | 3.697 | 3.459 | 3.87 |
This table is the results of testing direct playback from the Axis Security Camera.
Inbound | Outbound | Visual Playback Latency | |||||
Protocol | Source | Protocol | Player | Test #1 | Test #2 | Test #3 | Average |
RTSP | Axis Cam Live | RTSP | VLC | 1.123 | 1.171 | 1.17 | 1.15 |
RTSP | Axis Cam Live | RTSP | FFPlay | 0.374 | 0.608 | 0.844 | 0.61 |
RTSP | Axis Cam Live | RTSP | Android (MX Player) | 4.446 | 4.351 | 4.4 | 4.40 |
Copyright © 2016 EvoStream Corporation all rights reserved.
All product names and brands are property of their respective owners. All company, product and service names used are for identification purposes only. Use of these names, and brands does not imply endorsement.