Collection of solutions for streaming via DASH, Dynamic Adaptive Streaming over HTTP, as of November 2014.
Recommended client: Chrome 38
Tool used for encoding live streams: FFmpeg
A popular video for testing is the Sintel Trailer.
Look at the examples.
On Windows 7:
-
Create an application in Wowza: “live”
-
Stream:
> ffmpeg.exe -re -i sintel_trailer-480p.mp4 -c copy ^ -f flv rtmp://192.168.56.1/live/myStream
-
Check if stream is incoming in Incoming Streams.
-
Watch with the MPEG DASH test player.
Here:
-
Linux
-
Home dir:
/home/felix
-
Server domain:
felix-xubuntu.test
Untested. Default Nginx seems to have support for VOD streaming. Maybe all that’s needed is:
-
FLV files at different qualities. MP4 should also be possible.
-
DASH manifest, which should could be created manually.
-
Download the source code for Nginx and for nginx-rtmp-module.
-
Optionally, to avoid possible conflicts, remove any existing installation of Nginx from your system.
-
Build and install Nginx with RTMP streaming support according to the instructions in
README.md
included innginx-rtmp-module
. -
Install ffmpeg, possibly from source. If you later also want to stream to Icecast, build as follows:
$ ./configure --enable-libtheora --enable-libvpx --enable-libvorbis \ --enable-libx264 --enable-avresample --enable-gpl --enable-libfaac \ --enable-nonfree
-
Start Nginx:
$ sudo /usr/local/nginx/sbin/nginx
To stop Nginx:
$ sudo /usr/local/nginx/sbin/nginx -s stop
-
Make DASH configuration (see example file) available at:
/usr/local/nginx/conf/nginx.conf
Then reload configuration:
$ sudo /usr/local/nginx/sbin/nginx -s reload
-
Make client available at
~/www/live.html
(see example file). -
Install arut’s fork of dash.js that can do live streaming into:
$ git clone https://github.com/arut/dash.js.git dash.js-live $ cd dash.js-live $ git checkout live
-
Live recode and stream to Nginx:
$ ffmpeg -re -i sintel_trailer-480p.mp4 -c:v libx264 -profile:v \ baseline -c:a libfaac -ar 44100 -ac 2 -f flv \ rtmp://felix-xubuntu.test/myapp/my-stream
-
While the stream is playing, load in Chrome:
<http://felix-xubuntu.test/live.html>
Note, the DASH manifest describes the available streams. While streaming, it is available at:
http://felix-xubuntu.test/dash/my-stream.mpd
Good for live streaming of Ogg or WebM, but doesn’t create DASH streams.
Hi, I was familiar with each of tools (ffmpeg, nginx-rtmp, streaming), except dash.js and MPEG-DASH.
So far I got working live stream to nginx-rtmp and I can play it out on arut version of dash.js. Except, it works only when I start everything sequentially. If I restart page, it does not play anymore. If I restart ffmpeg, it starts playing (even without second page restart). So, I believe, it has problems to play when mpeg-dash playlist is loaded not from the begining.
In the setup is nothing fancy. Tried even multiple inputs
LiveHLS.m3u8 -> ffmpeg -> rtmp-nginx -> dash.js
andfile.ts -> ffmpeg -> rtmp-nginx -> dash.js
Config:
ffmpeg -i "http://live.test/live.m3u8" -vcodec copy -acodec aac -strict -2 -ab 192k -ar 44100 -f flv "rtmp://server.test/live"