Hi everybody,
I’m currently using Wowza to broadcast live stream to Apple App, Android App and a Web Site using ABR (5 variants from 1080 to 45p). The stream is created using Wirecast (x264 main profile with key frame align option). I’m using HLS streaming on IOS and HLS + VITAMIO (an HLS player) on Android. Everything is fine on IOS but the support of ABR on Android with vitamio is … not very good and the project seems to be dead. But it’s working.
My customers wanted a kind of “replay TV” for the live stream so I developed a custom module which record all incoming streams (all 5 variants) in a directory using a filenaming structure UNIQUE-ID_VARIANT.mp4 for example I have :
1f1a44d9-7265-435f-bef2-8dd6bc105ca4_45.mp4
1f1a44d9-7265-435f-bef2-8dd6bc105ca4_180.mp4
1f1a44d9-7265-435f-bef2-8dd6bc105ca4_360.mp4
1f1a44d9-7265-435f-bef2-8dd6bc105ca4_720.mp4
1f1a44d9-7265-435f-bef2-8dd6bc105ca4_1080.mp4
My next goal was to be able to play these files on VOD, so i created a VOD Wowza app that helps me play the files in the directory. I now can access all files individualy like this (but individualy not as an ABR stream) :
h_ttp://mydomain.com/vod/mp4:efe12431-23a3-4c12-9287-dc8f7af26a54_1080.mp4/playlist.m3u8
h_ttp://mydomain.com/vod/mp4:efe12431-23a3-4c12-9287-dc8f7af26a54_720.mp4/playlist.m3u8
h_ttp://mydomain.com/vod/mp4:efe12431-23a3-4c12-9287-dc8f7af26a54_360.mp4/playlist.m3u8
h_ttp://mydomain.com/vod/mp4:efe12431-23a3-4c12-9287-dc8f7af26a54_180.mp4/playlist.m3u8
h_ttp://mydomain.com/vod/mp4:efe12431-23a3-4c12-9287-dc8f7af26a54_45.mp4/playlist.m3u8
To conserve the ABR possibility I created a custom Wowza Module which implements IMediaListProvider to create playlist based on my filename structure, and it seems to work on IOS at least (the support of ABR on Android is… shitty with Vitamio).
So i can access my files using :
h_ttp://mydomain.com/vod/amlst:efe12431-23a3-4c12-9287-dc8f7af26a54/playlist.m3u8 for IOS with HLS
h_ttp://mydomain.com/vod/amlst:efe12431-23a3-4c12-9287-dc8f7af26a54/jwplayer.smil for the Web Site with JWPlayer.
My current problem is to bring to Android the full power of ABR so I decided to get a rid of the Vitamio Library (the project seems dead and the ABR support doesn’t seems to work) + HLS and switch to Exoplayer (https://github.com/google/ExoPlayer) + DASH (I need to switch to DASH because the support of ABR is much better according to the developper).
So I tried to feed my new player with this kind of URL which is supposed to create a DASH manifest :
h_ttp://mydomain.com/vod/amlst:efe12431-23a3-4c12-9287-dc8f7af26a54/manifest.mpd
or h_ttp://mydomain.com/vod/amlst:efe12431-23a3-4c12-9287-dc8f7af26a54/manifest_mpm4sav_mvlist.mpd
etc … (by the way I don’t fully understand the differences between all the kind of manifest file)
but the player gives me 404 errors when it loads the manifest (it seems that only the first chunk is reachable).
I tried to investigate the content of the manifest using this online DASH manisfest validator (http://dashif.org/conformance.html) and it confirms me that chunks are not reachable. (error 404).
Does anybody know why my chunks are not reachable?
Best regards
Richard