diff --git a/app/assets/src/app/components/player-container.js b/app/assets/src/app/components/player-container.js index 06dcdf8f..978b29d2 100644 --- a/app/assets/src/app/components/player-container.js +++ b/app/assets/src/app/components/player-container.js @@ -12,8 +12,8 @@ require("./player-container.css"); // registerWatchingUri and registerLikeUri may be null to disable these features // bottom bar mode can be "full", "compact" or "none" -var PlayerContainer = function(playerInfoUri, registerWatchingUri, registerLikeUri, recommendationsUri, enableAdminOverride, loginRequiredMsg, embedded, autoPlayVod, autoPlayStream, vodPlayStartTime, ignoreExternalStreamUrl, bottomBarMode, initialVodQualityId, initialStreamQualityId, disableFullScreen, placeQualitySelectionComponentInPlayer, showTitleInPlayer, disablePlayerControls, enableSmartAutoPlay) { - +var PlayerContainer = function(playerInfoUri, registerWatchingUri, registerLikeUri, recommendationsUri, enableAdminOverride, loginRequiredMsg, embedded, autoPlayVod, autoPlayStream, vodPlayStartTime, ignoreExternalStreamUrl, bottomBarMode, initialVodQualityId, initialStreamQualityId, disableFullScreen, placeQualitySelectionComponentInPlayer, showTitleInPlayer, disablePlayerControls, enableSmartAutoPlay, muted) { + muted = !!muted; var self = this; this.getEl = function() { @@ -122,7 +122,7 @@ var PlayerContainer = function(playerInfoUri, registerWatchingUri, registerLikeU $qualitySelectionItemContainer.append(qualitySelectionComponent.getEl()); - var playerController = new PlayerController(playerInfoUri, registerWatchingUri, registerLikeUri, qualitySelectionComponent, autoPlayVod, autoPlayStream, vodPlayStartTime, ignoreExternalStreamUrl, initialVodQualityId, initialStreamQualityId, disableFullScreen, placeQualitySelectionComponentInPlayer, showTitleInPlayer, disablePlayerControls, enableSmartAutoPlay, embedded); + var playerController = new PlayerController(playerInfoUri, registerWatchingUri, registerLikeUri, qualitySelectionComponent, autoPlayVod, autoPlayStream, vodPlayStartTime, ignoreExternalStreamUrl, initialVodQualityId, initialStreamQualityId, disableFullScreen, placeQualitySelectionComponentInPlayer, showTitleInPlayer, disablePlayerControls, enableSmartAutoPlay, embedded, muted); $(playerController).on("playerComponentElAvailable", function() { $playerComponent = playerController.getPlayerComponentEl(); $playerWrapper.append($playerComponent); diff --git a/app/assets/src/app/components/player.js b/app/assets/src/app/components/player.js index 0e7bf00f..7334c095 100644 --- a/app/assets/src/app/components/player.js +++ b/app/assets/src/app/components/player.js @@ -15,7 +15,7 @@ var logger = require("app/logger"); require("imports?jQuery=lib/jquery!lib/jquery.dateFormat"); require("./player.css"); -var PlayerComponent = function(coverUri, qualitySelectionComponent) { +var PlayerComponent = function(coverUri, qualitySelectionComponent, initialVolume) { qualitySelectionComponent = qualitySelectionComponent || null; var self = this; @@ -300,7 +300,7 @@ var PlayerComponent = function(coverUri, qualitySelectionComponent) { // id of timer that repeatedly calls updateAd() in order for countdown to work var updateAdTimerId = null; var wasFullScreen = null; - var previousVolume = null; + var previousVolume = typeof initialVolume !== 'undefined' ? initialVolume : null; var $container = $("
").addClass("player-component"); @@ -1059,4 +1059,4 @@ var PlayerComponent = function(coverUri, qualitySelectionComponent) { }; -module.exports = PlayerComponent; \ No newline at end of file +module.exports = PlayerComponent; diff --git a/app/assets/src/app/pages/embed/player-page.js b/app/assets/src/app/pages/embed/player-page.js index 9ab05007..29d47a47 100644 --- a/app/assets/src/app/pages/embed/player-page.js +++ b/app/assets/src/app/pages/embed/player-page.js @@ -61,6 +61,7 @@ $(document).ready(function() { var autoPlayVod = $(this).attr("data-auto-play-vod") === "1"; var autoPlayStream = $(this).attr("data-auto-play-stream") === "1"; var vodPlayStartTime = $(this).attr("data-vod-play-start-time") === "" ? null : parseInt($(this).attr("data-vod-play-start-time")); + var muted = $(this).attr("data-muted") === "1"; var ignoreExternalStreamUrl = $(this).attr("data-ignore-external-stream-url") === "1"; var bottomBarMode = $(this).attr("data-hide-bottom-bar") === "1" ? "none" : "full"; var initialVodQualityId = $(this).attr("data-initial-vod-quality-id") === "" ? null : parseInt($(this).attr("data-initial-vod-quality-id")); @@ -75,7 +76,7 @@ $(document).ready(function() { require(["app/components/player-container"], function(PlayerContainer) { // replace the player-container on the dom with the PlayerContainerComponent element when the component has loaded. - playerContainer = new PlayerContainer(playerInfoUri, registerWatchingUri, registerLikeUri, recommendationsUri, enableAdminOverride, loginRequiredMsg, embedded, autoPlayVod, autoPlayStream, vodPlayStartTime, ignoreExternalStreamUrl, bottomBarMode, initialVodQualityId, initialStreamQualityId, disableFullScreen, placeQualitySelectionComponentInPlayer, showTitleInPlayer, disablePlayerControls, enableSmartAutoPlay); + playerContainer = new PlayerContainer(playerInfoUri, registerWatchingUri, registerLikeUri, recommendationsUri, enableAdminOverride, loginRequiredMsg, embedded, autoPlayVod, autoPlayStream, vodPlayStartTime, ignoreExternalStreamUrl, bottomBarMode, initialVodQualityId, initialStreamQualityId, disableFullScreen, placeQualitySelectionComponentInPlayer, showTitleInPlayer, disablePlayerControls, enableSmartAutoPlay, muted); playerContainer.onLoaded(function() { @@ -178,4 +179,4 @@ $(document).ready(function() { }); }); -}); \ No newline at end of file +}); diff --git a/app/assets/src/app/player-controller.js b/app/assets/src/app/player-controller.js index 63708f06..32070beb 100644 --- a/app/assets/src/app/player-controller.js +++ b/app/assets/src/app/player-controller.js @@ -28,8 +28,8 @@ define([ // however whenever either of the 2 is paused by the user both autoPlay settings will be flipped to false // unless enableSmartAutoPlay is false // registerWatchingUri and registerLikeUri can be null to disable these features - PlayerController = function(playerInfoUri, registerWatchingUri, registerLikeUri, qualitiesHandler, autoPlayVod, autoPlayStream, vodPlayStartTime, ignoreExternalStreamUrl, initialVodQualityId, initialStreamQualityId, disableFullScreen, placeQualitySelectionComponentInPlayer, showTitleInPlayer, disablePlayerControls, enableSmartAutoPlay, openLinksInNewWindow) { - + PlayerController = function(playerInfoUri, registerWatchingUri, registerLikeUri, qualitiesHandler, autoPlayVod, autoPlayStream, vodPlayStartTime, ignoreExternalStreamUrl, initialVodQualityId, initialStreamQualityId, disableFullScreen, placeQualitySelectionComponentInPlayer, showTitleInPlayer, disablePlayerControls, enableSmartAutoPlay, openLinksInNewWindow, muted) { + muted = !!muted; var self = this; // callback that will always be called after all the initial data has @@ -435,7 +435,7 @@ define([ var firstLoad = false; if (playerComponent === null) { firstLoad = true; - playerComponent = new PlayerComponent(data.coverUri, placeQualitySelectionComponentInPlayer ? qualitiesHandler : null); + playerComponent = new PlayerComponent(data.coverUri, placeQualitySelectionComponentInPlayer ? qualitiesHandler : null, muted ? 0 : 100); $(self).triggerHandler("playerComponentElAvailable"); $(playerComponent).on("play", function() { // content is playing (again) diff --git a/app/controllers/embed/EmbedController.php b/app/controllers/embed/EmbedController.php index ae4d25b8..b7028c5a 100644 --- a/app/controllers/embed/EmbedController.php +++ b/app/controllers/embed/EmbedController.php @@ -100,6 +100,7 @@ private function doResponse($title, $playerInfoUri, $registerWatchingUri, $regis $showHeading = !$flushMode && (!isset($_GET['showHeading']) || $_GET['showHeading'] === "1"); $hideBottomBar = $flushMode; $ignoreExternalStreamUrl = $kioskMode || (isset($_GET['ignoreExternalStreamUrl']) && $_GET['ignoreExternalStreamUrl'] === "1"); + $muted = isset($_GET['muted']) && $_GET['muted'] === "1"; $disableFullScreen = $kioskMode || (isset($_GET['disableFullScreen']) && $_GET['disableFullScreen'] === "1"); $showTitleInPlayer = !$kioskMode && $flushMode; $enableSmartAutoPlay = !$kioskMode; @@ -114,6 +115,7 @@ private function doResponse($title, $playerInfoUri, $registerWatchingUri, $regis $view->autoPlayVod = $autoPlayVod; $view->autoPlayStream = $autoPlayStream; $view->vodPlayStartTime = is_null($vodPlayStartTime) ? "" : $vodPlayStartTime; + $view->muted = $muted; $view->disableFullScreen = $disableFullScreen; $view->showTitleInPlayer = $showTitleInPlayer; $view->initialVodQualityId = $initialVodQualityId; diff --git a/app/views/embed/player.php b/app/views/embed/player.php index 222c66e3..533102b3 100644 --- a/app/views/embed/player.php +++ b/app/views/embed/player.php @@ -9,7 +9,7 @@
-
" data-found-media-item="1" data-info-uri="" data-recommendations-uri="" data-register-watching-uri="" data-login-required-msg="" data-enable-admin-override="" data-register-like-uri="" data-ignore-external-stream-url="" data-hide-bottom-bar="" data-auto-play-vod="" data-auto-play-stream="" data-vod-play-start-time="" data-disable-full-screen="" data-show-title-in-player="" data-disable-player-controls="" data-enable-smart-auto-play="" data-initial-vod-quality-id="" data-initial-stream-quality-id=""> +
" data-found-media-item="1" data-info-uri="" data-recommendations-uri="" data-register-watching-uri="" data-login-required-msg="" data-enable-admin-override="" data-register-like-uri="" data-ignore-external-stream-url="" data-hide-bottom-bar="" data-auto-play-vod="" data-auto-play-stream="" data-vod-play-start-time="" data-muted="" data-disable-full-screen="" data-show-title-in-player="" data-disable-player-controls="" data-enable-smart-auto-play="" data-initial-vod-quality-id="" data-initial-stream-quality-id="">
" data-found-media-item="0"> @@ -22,4 +22,4 @@
-
\ No newline at end of file + diff --git a/docs/Embeddable Player.md b/docs/Embeddable Player.md index affcea2c..cda407ac 100644 --- a/docs/Embeddable Player.md +++ b/docs/Embeddable Player.md @@ -14,6 +14,7 @@ There are quite a few url paramaters that can be provided to contol it's behavio - **autoPlayVod**: Defaults to "0". Set to "1" to cause vod to automatically play. - **autoPlayStream**: Defaults to "0". Set to "1" to automatically start live streams. - **autoPlay (or autoplay)**: Set to "1" to automatically play vod and start live streams. If set this overrides "autoPlayVod" and "autoPlayStream". +- **muted**: Set to "1" to enable mute on the player initially. - **vodPlayStartTime**: Defaults to "". Set to "XmYs" to start vod playback from a specific point. - **flush**: Defaults to "1". Enables flush mode which means the player fills the frame without any margins. If "0" the bottom bar will be available which contains the like button and view count, along with quality selection. - **showHeading**: Defaults to "0". Show the title of the media item above the player. Only valid when "flush" is "0".