I'm working on a website that needs to stream live video to users, and as such I've had to get my head around the sorry state of current browser-based video-streaming technology. The most popular solutions for live streaming at present all have compatibility issues; RTMP requires Flash, HLS is only natively supported on Safari and Chrome for Android, DASH isn't natively supported anywhere, and using dash.js requires Media Source Extensions, which aren't yet widely supported.
This leads to a question that to me seems obvious: is it possible to use simple progressive download as an alternative to protocols like HLS, RTMP and DASH that either require browser support or plugins?
The idea of using progressive download to stream live media isn't unprecedented; people already do it for audio. Tools like liveCaster allow you to stream live MP3 audio through a single progressive HTTP response without needing a pre-recorded MP3 file, and libraries like AmplitudeJS have gone out of their way to add features related to this kind of live audio streaming.
I haven't seen any instances of this technique being used in the wild for video, though, and I can't tell why. It seems like it would remove a layer of messy and difficult browser-side compatibility problems for relatively little tradeoff. (And compatibility is still a huge problem for live streaming, even when the pros do it; if I try to watch live video on BBC's iPlayer in Firefox, it just gives me an error message telling me to install Flash.) Yet nobody is using this technique, and I've never seen anybody even mention the idea besides me.
Why? Is there a fundamental limitation I'm not seeing that would make it impossible just stream a video file like an MP4 via progressive download as it is being generated, and play it in a <video>
element as it downloads?