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 | |
parent | d29fa327630533e31a0b7bdea3c8bc25ef19e5ac (diff) |
serve simple webm as fallback for multiquality player
Diffstat (limited to '')
-rw-r--r-- | model/Stream.php | 10 | ||||
-rw-r--r-- | template/assemblies/player/dash.phtml | 30 |
2 files changed, 28 insertions, 12 deletions
diff --git a/model/Stream.php b/model/Stream.php index 99abaf1..1c63227 100644 --- a/model/Stream.php +++ b/model/Stream.php @@ -123,15 +123,19 @@ class Stream ]); } - public function getVideoUrl($proto) + public function getVideoUrl($proto, $selection=null) { + if (!$selection) { + $selection = $this->getSelection(); + } + switch($proto) { case 'webm': - return proto().'://cdn.c3voc.de/'.rawurlencode($this->getRoom()->getStream()).'_'.rawurlencode($this->getLanguage()).'_'.rawurlencode($this->getSelection()).'.webm'; + return proto().'://cdn.c3voc.de/'.rawurlencode($this->getRoom()->getStream()).'_'.rawurlencode($this->getLanguage()).'_'.rawurlencode($selection).'.webm'; case 'hls': - return proto().'://cdn.c3voc.de/hls/'.rawurlencode($this->getRoom()->getStream()).'_'.rawurlencode($this->getLanguage()).'_'.rawurlencode($this->getSelection()).'.m3u8'; + return proto().'://cdn.c3voc.de/hls/'.rawurlencode($this->getRoom()->getStream()).'_'.rawurlencode($this->getLanguage()).'_'.rawurlencode($selection).'.m3u8'; } return null; 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> |