Multibitrate VOD app with JW player - can't get running on mobile

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.

Hi,

The jwplayer.smil suffix indicates to JWPlayer that this is a dynamic RTMP ABR stream. So this is basically for being able to play ABR streams in a Flash player, e.g. on Windows browsers. The playlist.m3u78 suffix will only work on compatible browsers/OS’s such as OS X + Safari, or mobile (Android/iOS) browsers.

The manifest.f4m suffix is for HDS streams which JWPlayer does not support, and manifest.mpd is for MPEG-DASH streams, which is available for more recent JWPlayer releases/licenses.

More details regarding how jwplayer.smil is interpreted can be found here.

We do provide the following example scripts for JWPlayer which allows you to provide an HLS (playlist.m3u8) or RTMP (jwplayer.smil) ABR stream within the same player so should be compatible for the vast majority of browsers/OS’s.