Hi all -
I haven’t done a lot of media streaming work and I’m trying to close out some details of a VOD project that basically streams video to a website and have run into an issue with enabling the correct stream to go to the correct consumer (ex: android browser, chrome desktop browser, iOS, etc). I’ve cycled through tons of forums, instructions, tutorials, and documentation and haven’t found a consistent way to do this…
Here’s what I have set up:
On Wowza:
I have a VOD application set up
-
content directory: ${com.wowza.wms.context.VHostConfigHome}/content/Weekends
-
playback types: MPEG-DASH, Apple HLS, Adobe RTMP, Adobe HDS, RTSP/RTP all enabled
-
SMIL file: sopweekendsmil.smil (contents below)
SMIL file:
<?xml version="1.0" encoding="UTF-8"?> <smil title=""> <body> <switch> <video height="240" src="SOP_priorities_240p.mp4" width="320"> <param name="videoBitrate" value="1000000" valuetype="data"></param> <param name="audioBitrate" value="48000" valuetype="data"></param> </video> <video height="360" src="SOP_priorities_360p.mp4" width="640"> <param name="videoBitrate" value="2000000" valuetype="data"></param> <param name="audioBitrate" value="48000" valuetype="data"></param> </video> <video height="480" src="SOP_priorities_480p.mp4" width="720"> <param name="videoBitrate" value="2000000" valuetype="data"></param> <param name="audioBitrate" value="48000" valuetype="data"></param> </video> <video height="540" src="SOP_priorities_540p.mp4" width="960"> <param name="videoBitrate" value="2500000" valuetype="data"></param> <param name="audioBitrate" value="48000" valuetype="data"></param> </video> <video height="720" src="SOP_priorities_720p.mp4" width="1280"> <param name="videoBitrate" value="5000000" valuetype="data"></param> <param name="audioBitrate" value="48000" valuetype="data"></param> </video> </switch> </body> </smil>
I have the above videos in the appropriate folder on the wowza server.
In the application webpage:
I’m using JW Player and have the following code to embed JW Player (version 6.9):
<script type="text/javascript"> jwplayer("myElement").setup({ fallback: true, width: 640, height: 480, sources: [{ file: "http://[serverurl]:[port]/Weekends/smil:sopweekendsmil.smil/jwplayer.smil" },{ file: "http://[serverurl]:[port]/Weekends/smil:sopweekendsmil.smil/playlist.m3u8" },{ file: "http://[serverurl]:[port]/Weekends/smil:sopweekendsmil.smil/manifest.f4m" },{ file: "http://[serverurl]:[port]/Weekends/smil:sopweekendsmil.smil/manifest.mpd" }], rtmp: { bufferlength: '10' }, plugins: { 'qualitymonitor-2':{} } }); </script>
(I don’t really know what the qualitymonitor plugin does or if it works at all. Seems to have no influence if I take it out…).
I tried a bunch of variations with the JW Player syntax, but this worked on the desktop browsers (Chrome/Firefox). However, the only file/url that works correctly live seems to be the jwplayer.smil. None of the other ones work on the desktop browsers - I get a “No playable sources found” message if I take out the jwplayer.smil url to test the other ones. Also, this isn’t working in any way on any mobile browsers no matter what I try. I’ve tried just a single file (ex: the .m3u8 smil url) and get the same error.
When I try the Test Players function in the Wowza server interface, the MPEG DASH test works correctly and the Adobe HDS works correctly (in chrome browser) but I can’t seem to get those working outside of the Test Players.
I get the feeling that I’m missing some conceptual piece - do I need to create more actual files for the different consumers? Or is it possibly how I have JW Player set up? Or maybe something is being blocked?
Any help would be greatly appreciated.