Step 1: (strip audio from video, and create single audio file)
ffmpeg -i IMG_0113.mp4 -c:v libvpx -s 160x90 -threads 4 -b:v 25k -tile-columns 4 -frame-parallel 1 -an -keyint_min 30 -g 30 -f webm video_160x90_25k.webm
ffmpeg -i IMG_0113.mp4 -c:v libvpx -s 160x90 -threads 4 -b:v 50k -tile-columns 4 -frame-parallel 1 -an -keyint_min 30 -g 30 -f webm video_160x90_50k.webm
ffmpeg -i IMG_0113.mp4 -vn -acodec libvorbis -ab 128k audio_128k.webm
Step 2: (using sample_muxer from the libwebm project available here, to create the video cue points)
sample_muxer -i video_160x90_25k.webm -o video_160x90_25k_cued.webm
sample_muxer -i video_160x90_50k.webm -o video_160x90_50k_cued.webm
Step 3: (Use ffmpeg to create the audio cue points)
ffmpeg -i audio_128k.webm -vn -acodec libvorbis -ab 128k -dash 1 audio_128k_cued.webm
Step 4: (Use ffmpeg to create the webm dash manifest file .mpd)
ffmpeg -f webm_dash_manifest -i video_160x90_25k_cued.webm -f webm_dash_manifest -i video_160x90_50k_cued.webm -f webm_dash_manifest -i audio_128k_cued.webm -c copy -map 0 -map 1 -map 2 -f webm_dash_manifest -adaptation_sets "id=0,streams=0,1 id=1,streams=2" manifest.mpd
ffmpeg (my version atleast), was not creating the cue points in the video files correctly (when adding the -dash 1) param. I determined this by probing the video files, and by understanding the webm file format (read this, if you'd like to know more).
I then stumbled upon sample_muxer from reading this page, and decided to see if it would better handle the video cue points that ffmpeg wasn't getting right. Whoop Whoop, it did!
I noticed that the cue points in the extracted audio file from ffmpeg (using the -dash 1 param), were being created correctly!
The ffmpeg generation of the webm dash manifest is also working nicely!
For playing back the video, I found shaka-player worked best but I could not use it as I required video playback from a cefpython container and the shaka-player did not work on the latest cef (chromium embedded framework) included in the cefpython release.
This issue of FFMPEG still not got resolved in the latest version at this point .
@StormyKnight, you'll notice that the '-b:v' args have different values. higher bitrate for video (and many more options) will produce larger better looking video. As a VOD service, one would prepare various sized / quality videos (from the same source video) for a 'dynamic' player to load. Players look for a manifest file of videos and their bitrates (poor to best quality), and will decide which to play according to the clients connectivity speed.