Question: I'm researching for a week to find a simple and platform independent method to stream a mp4 file to any browser. In case of browser incompatibility progressive stream(direct download) method will be used. My scenario is like this:

* single mp4 file (not segmented and multiplexed(Audio+Video) )
* HTTP Byte-Range serving supported
* progressive stream (direct file download) supported in case of browser incompatibility

After studying Apple HLS, Adobe Flash Stream, Microsoft Smooth, RTSP and MPEG-DASH it seems that **MPEG-DASH** is the proper solution. But the problem is MPEG-DASH forcing me to split mp4 file to separate segmented files which leads to **duplicate** consuming space to store the mp4 file because I have to support progressive stream in case of browser incompatibility. Then storing single mp4 file with segmented mp4 files is unavoidable. 

**The question is**: is there any way to serve a **single** mp4 file as *http stream* & *progressive stream* in any browser ?

MPEG-DASH protocols says it supports multiplexed files but the problem is [dash.js](https://github.com/Dash-Industry-Forum/dash.js) does not support it. Is there any other javascript player which supports multiplexed and single mp4 files with byte-range requests ?

Any other solution which commits my scenario conditions is welcomed.
Thanks.

REFERENCES: 
[BitCodin.com 1](https://www.bitcodin.com/blog/2015/03/mpeg-dash-vs-apple-hls-vs-microsoft-smooth-streaming-vs-adobe-hds/)
[BitCodin.com 2](https://www.bitcodin.com/blog/2015/04/mpeg-dash/)

Answer: 
I think all major browser support mp4. <http://caniuse.com/#feat=mpeg4>. You can stream it using just a good old http server. `MPEG-DASH` is required only if you require fancy stuff like adaptive bitrate streaming, multi language, drm and so.

If you insist on using `MPEG-DASH` you can simply segment your mp4 files using a [mp4box](https://gpac.wp.mines-telecom.fr/mp4box/) on the server side (you have to do it only once). The result is not mulitple mp4 files but rather a single mp4 files that is organized in a more suitable for streaming way.
You could serve dash player with single mp4 file. However you need to put index information in sidx box in this mp4 file. you could bento4 to do it. Actually for ondemand case, it's normally to use one single file to stream. You could also download this file locally.
Dash streaming will not require more storage size if you only have one bitrate. and there are many javascript player are supporting dash like shakashaka player, dashif player ...