diff options
author | Anton Schubert | 2017-12-28 12:27:51 +0100 |
---|---|---|
committer | MaZderMind | 2018-01-24 23:37:34 +0100 |
commit | 870bacae02c922c795b2af4e39839c279168768b (patch) | |
tree | a5c00c247df0d718ad5f0135f5702575bdc996f6 /template | |
parent | d29fa327630533e31a0b7bdea3c8bc25ef19e5ac (diff) |
serve simple webm as fallback for multiquality player
Diffstat (limited to '')
-rw-r--r-- | template/assemblies/player/dash.phtml | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/template/assemblies/player/dash.phtml b/template/assemblies/player/dash.phtml index ddfc48a..f447c09 100644 --- a/template/assemblies/player/dash.phtml +++ b/template/assemblies/player/dash.phtml @@ -36,9 +36,9 @@ }); } - var createPlayer = function(url) { - var player = new Clappr.Player({ - source: url, + var createPlayer = function(sources) { + return new Clappr.Player({ + sources: sources, width: "100%", plugins: [DashShakaPlayback, LevelSelector, AudioSelector], shakaConfiguration: { @@ -74,12 +74,24 @@ }); } - // Detect WebM capability, Select relay, Create player - var hasWebM = document.createElement('video').canPlayType('video/webm') != ""; - var cdnUrl = hasWebM ? '<?=h($room->getDashManifestUrl())?>' : '<?=h($room->getHLSPlaylistUrl())?>'; - selectRelay(cdnUrl, function(relayUrl) { - createPlayer(relayUrl); - }); + var hasMSE = 'MediaSource' in window, + hasWebM = document.createElement('video').canPlayType('video/webm') != "", + nativeHLS = document.createElement('video').canPlayType('application/vnd.apple.mpegURL') != ""; + + // Play Multiquality only if supported + if (hasMSE || nativeHLS) { + // Detect WebM capability, Select relay, Create player + var cdnUrl = hasWebM ? '<?=h($room->getDashManifestUrl())?>' : '<?=h($room->getHLSPlaylistUrl())?>'; + selectRelay(cdnUrl, function(relayUrl) { + createPlayer([{source: relayUrl}]); + }); + } else { + // Default to simple WebM playback + var player = createPlayer([{ + source: "<?=h($stream->getVideoUrl('webm', 'hd'))?>", + mimeType: "video/webm" + }]); + } }()); </script> |