The Low Latency Live Streaming Landscape in 2019
mux.com
mux.com
The latency for a typical satellite broadcast is about 10 seconds, so several gambling syndicates operate their own drones to provide a private low-latency stream, thereby gaining a huge advantage on in-play betting. The drones are being flown legally in uncontrolled airspace, so there racetracks are at a loss as to how to respond.
https://www.theguardian.com/sport/blog/2019/jan/16/talking-h...
https://www.racingpost.com/news/open-skies-authority-says-no...
You can still bet when the game has already started or what? Because otherwise, I don't quite understand why lattery would matter in this case.
We had pretty good low latency video a decade ago with Flash but of course with HTML5 you don't need Flash </sarcasm>
Appear.in is also WebRTC based and seems to work better, but screen sharing is not as good as Skype either.
* Limelight's solution is only really accessible through their low latency streaming products provided by Red5.
* Fastly and Akamai are both chasing Ultra low latency through chunked CMAF delivery.
On a slightly smaller scale, Cloudflare supports websockets, so you could use a protocol like the one Wowza are using (WOWZ). https://blog.cloudflare.com/cloudflare-now-supports-websocke...
If you're interested in a toolkit to build out a webRTC style CDN edge, I think the best place to start would probably be with Gstreamer's new WebRTC tooling https://opensource.com/article/19/1/gstreamer
There’s a live music example here: http://audiostream.fanoutapp.com (code: https://github.com/fanout/audiostream). It plays a song in a loop using GStreamer.
Gear in this space has to hit sub-frame latency (best in market at the moment is around 0.02 milliseconds), maintain extremely high signal quality (4K60 4:4:4 or 4:2:0) and provide perfect sync across all decode endpoints.
Due to the these constraints it’s a world that lives exclusively in the dedicated hardware space. Some main players that are worth checking out are SDVoE and their associated implementers, Crestron NVX, SVSI, Atlona Omnistream and Lightware UBEX. Dante have also just released their new board that handles all the sync and transmission but let’s inplementers pick there codec of choice too which should be interesting.
Most gear shipping at the moment uses either JPEG2000 or VC-2 based codecs or hand wavey “proprietary” ones that chip vendors refuse to give info on. There some interesting work being done in the form of the JPEG XS codec too. It provides low latency, but also super low quality loss over multiple encode / decode steps too.
Given some of the engineering constraints, it’s a super interesting area to watch.
The MPEG-DASH part 6 spec starts going in this direction, and we tried to run with these ideas in Puffer (https://puffer.stanford.edu). Empirically you can get quick channel changes and better first-chunk quality with this approach; we haven't tried to minimize end-to-end latency below standard levels. And there's probably nothing fundamental that you can do with a WebSocket that you can't do with a sufficiently smart chunked HTTP response.
For really low latency, you want to couple the video codec parameters with the transport's capacity estimate in a way that the WebRTC.org/Chromium codebase is not really capable of doing. See https://snr.stanford.edu/salsify .
One standard in HFT is the FAST Protocol[1], an adaptation of the FIX Protocol. One of FIX's newer developments is Simple Binary Encoding[2], which is designed for minimal latency. There's many differences between FIX and "normal" protocols that are really interesting when you realize how much thought went into shaving off as much latency as possible with FIX. Unfortunately, FIX is one of the few solutions in HFT that is publicly available as many firms make money from being the fastest in a particular area.
I doubt many HFT developments could be adapted for use in video streaming, as bandwidth is rarely an issue and hardware can cost much more. However, I would not be surprised if at some point in the future an HFT firm creates a general solution applicable for video.
[1] https://www.fixtrading.org/standards/fast/
[2] https://en.wikipedia.org/wiki/Financial_Information_eXchange...
Edit: Grammar
How large are the payloads in general for HFT?
It is probably important to mention that some firms communicate with exchanges/ brokers via a direct connection rather than the internet.
[1] https://btobits.com/fixopaedia/fixdic44/block_Standard_Messa...
It works by repackaging an RTMP stream into GOP chunks and pushes them via Websockets to the browser where they're piped to a video player using MSE (Media Source Extension).
On iPhones, where there is (was) no MSE available it used something like very short, chunked HLS segments. Not sure I fully understood that part but somehow they tricked the m3u8 playlist into loading short segments very very often.
The beauty of it was that it was a drop-in plugin for your existing RTMP-based infrastructure. You just add an instance of their server software and you would use their JS player to your pull your RTMP stream, repackaged on-the-fly.
let player = new NanoPlayer({
server: 'wss://nano_server_url',
rtmp: 'rtmp://rtmp_server_url/app/stream.mp4'
});It's standard to refer to esports as "esports" or "Esports" rather than "eSports".
(see: https://www.dexerto.com/news/esports-esports-associated-pres...)
I'm trying to get video from a raspi + webcam attached to a drone car that's controlled from a web app. Eventually, I'd like to use it to enable visitors from around the world drive around in my apartment and maybe play treasure hunt/escape room kind of games.
In order for internet-folk to operate the drone without frustration I need the lowest latency video streaming I can get. Currently using an mJPEG stream but it has no audio and doesn't take advantage of the on-board h.264 encoding of the webcam (logitech c920). Car operation and the web app is already done.
lowlatencystreaming@protonmail.com
There's also the Video Dev slack: https://video-dev.org.
From a technical perspective, traditional CDNs are struggling to grasp what it means to be a CDN in the peer-to-peer space, their networks have been built to support traditional HTTP traffic, and they've been fairly successful delivering that. Adapting to cacheable peer-to-peer objects would mean large architectural changes.
From a business perspective I suspect they also see a challenge where encouraging people to chase peer-to-peer oriented solutions may increase adoption, and start to reduce the amount of traffic they're serving from their private edge as more viewers start to peer between each other.
Despite this logic, they were capable of very impressive P2P offloads during the world cup. Their datasheet linked at the bottom of this blog post is worth a read for more details: https://blog.peer5.com/what-a-world-cup/ (email address needed)
I'm curious on how well that works in practice.
I'd imagine there's more failures modes versus a regular CDN even after the initial decision of P2P or CDN. For example, you're downloading from another user who suddenly closes their app or whose network connection degrades. You can handle that but you'll need a larger buffer, on average, which increases latency.
https://arstechnica.com/information-technology/2014/04/netfl...
P2P doesn't need "always on" boxes in large scale live stream scenarios, which is one of the use cases where it works best. I think we'll see a lot of growth in hybrid P2P/traditional CDN in the next couple of years.
He had been listening to the local public radio station in the car, and by comparing the TV to the stereo's FM receiver I was surprised to find that the youtube stream was about a full minute behind the radio. I had expected that YouTube would lag behind traditional media that tend to be using things like dedicated satellite relay capacity to spread live events to broadcasters, but I was very surprised at how large the difference was - one that seems to notice in today's world of people commenting on public events on real-time media like Twitter.
Indeed, watching Twitter I could see responses to parts of the speech that I hadn't seen yet. Must really be interesting for sporting events where a social media post about play could "spoil" the game.
In this case, though, it's not YouTube pulling streams from the source, it's C-SPAN pushing them. I wonder what kind of setup is in place there.
It gets even better: Every WorldCup game I've watched in the last 2 decades served as a survey for who had the lowest latency in the neighbourhood (because the neighbours cheers would arrive quicker than the image of the actual goal).
but nba game streams seem to be about 15 seconds behind, which is the perfect amount of time to be able to see replays by just looking down at my ipad (that's streaming the same game as the tv). =)
Been working like magic since the dawn of times. One downside, if you are not an ISP - bad luck...
The BBC actually did some really interesting work last year on using MPEG-DASH with Multicast with a demo at IBC, the research can be found here: https://www.bbc.co.uk/rd/projects/dynamic-adaptive-streaming...
Only downside is that multicast sucks over wifi when many devices (like in a corporate env) are all trying to view a multicast stream. The time slice allotted to multicast is way too small to handle it. I really wish there was a spec created for wifi simplex connections where a channel could be reserved for broadcast with one signal to be consumed by many receiver devices.
What is difficult is audio quality issues. I wish voice and video software had a way to prioritize quality at the expense of latency (i.e. never compromise on delivering quality voice, but pause input or fast forward through quiet segments as needed to stay roughly in synch)
A lot of the folks I talk to that think they desperately need sub 5 second latency would most likely be completely fine with ~15 seconds with a few minor UX/UI considerations. Since true low latency is fraught with scaling issues or is obscenely expensive, I think that leads to a lot of folks never actually getting ideas off the ground when they could have just hacked something together (cheaply) using off the shelf technology with "normal" latency in a few hours.
That being said there definitely are use cases for low latency and a lot of products/projects would benefit from it, but I don't think it's the hard, upfront requirement a lot of folks see it as.
Edit: For the sake of disclosure, I'm one of the Mux founders and we're currently working on low latency, but haven't released anything yet.
It is a UX problem. One that can be solved by lowering the latency.
Many examples of latency being a problem have been mentioned in the comments here, not to mention the article: sporting events ruined because your neighbor cheered too early, reading tweets about the State of the Union before it appears on your feed, etc etc.
How do you improve this without actually decreasing latency?
A HAM radio operator is very aware of the technical process going on, the proper etiquette, etc. It's pretty easy to adapt in that situation.
A random Twitch viewer has likely never thought about broadcast latency before, and has no real reason to. It's just an unintuitive experience when chat reacts to things that happened many seconds ago.
Voice chat is probably the worst because the network and software is notoriously unreliable. Is it latency, is something broken, did they just not hear me? Are we talking over each other, something that can easily happen in casual conversation vs. a radio transmission? That mental overhead is constantly there. Imagine trying to explain to your mother that she should end all her statements with "over" and confirm whenever she hears something. Are you really not sure why people find this difficult, or are you just so proud of your own technical knowledge that you've lost any kind of reasonable perspective on the issue?
Lower latency is an unambiguous improvement in every regard; of course people care about it.
>I’m not sure why people find high latency to be so difficult.
Phrasing it that way makes it likely you will be interpreted as believing you're effortlessly better than everyone else at the subject at hand.