diff --git a/dashboard-ui/css/images/media/language.png b/dashboard-ui/css/images/media/language.png new file mode 100644 index 0000000000..7a44d41cee Binary files /dev/null and b/dashboard-ui/css/images/media/language.png differ diff --git a/dashboard-ui/css/images/media/quality.png b/dashboard-ui/css/images/media/quality.png index b52641fcb6..6312637ec8 100644 Binary files a/dashboard-ui/css/images/media/quality.png and b/dashboard-ui/css/images/media/quality.png differ diff --git a/dashboard-ui/css/site.css b/dashboard-ui/css/site.css index e4e97fe8f2..34af51eebd 100644 --- a/dashboard-ui/css/site.css +++ b/dashboard-ui/css/site.css @@ -838,8 +838,10 @@ progress { width: auto !important; } -.vjs-quality-button div { - background: red !important; +.vjs-default-skin .vjs-menu-button.vjs-quality-button div { + background: url("images/media/quality.png"); + height: 16px; + width: 16px; } .vjs-chapter-button div { @@ -873,7 +875,7 @@ progress { } .vjs-subtitle-button div { - background: green !important; + background-position: -25px -75px !important; } .vjs-subtitle-button.vjs-menu-button ul { @@ -889,8 +891,10 @@ progress { padding-right: 10px; } -.vjs-language-button div { - background: yellow !important; +.vjs-default-skin .vjs-menu-button.vjs-language-button div { + background: url("images/media/language.png") !important; + height: 16px; + width: 16px; } .vjs-language-button.vjs-menu-button ul { diff --git a/dashboard-ui/scripts/mediaplayer.js b/dashboard-ui/scripts/mediaplayer.js index f05ba46d1a..c03afad628 100644 --- a/dashboard-ui/scripts/mediaplayer.js +++ b/dashboard-ui/scripts/mediaplayer.js @@ -179,6 +179,37 @@ var screenHeight = Math.min(screen.height, screen.width); var volume = localStorage.getItem("volume") || 0.5; + var user = Dashboard.getCurrentUser(); + var defaults = {languageIndex: null, subtitleIndex: null}; + + var user_config = user.Configuration || {}; + if (item.MediaStreams && item.MediaStreams.length) { + $.each(item.MediaStreams, function (i, stream) { + //get default subtitle stream + if (stream.Type == "Subtitle") { + if (user_config.UseForcedSubtitlesOnly == true && user_config.SubtitleLanguagePreference && !defaults.subtitleIndex) { + if (stream.Language == user_config.SubtitleLanguagePreference && stream.IsForced == true) { + defaults.subtitleIndex = i; + } + }else if (user_config.SubtitleLanguagePreference && !defaults.subtitleIndex) { + if (stream.Language == user_config.SubtitleLanguagePreference) { + defaults.subtitleIndex = i; + } + }else if (user_config.UseForcedSubtitlesOnly == true && !defaults.subtitleIndex) { + if (stream.IsForced == true) { + defaults.subtitleIndex = i; + } + } + }else if (stream.Type == "Audio") { + //get default language stream + if (user_config.AudioLanguagePreference && !defaults.languageIndex) { + if (stream.Language == user_config.AudioLanguagePreference) { + defaults.languageIndex = i; + } + } + } + }); + } var baseParams = { audioChannels: 2, @@ -186,7 +217,9 @@ videoBitrate: 1500000, maxWidth: screenWidth, maxHeight: screenHeight, - StartTimeTicks: 0 + StartTimeTicks: 0, + SubtitleStreamIndex: null, + AudioStreamIndex: null }; if (typeof (startPosition) != "undefined") { @@ -235,7 +268,7 @@ { type: "video/ogg", src: ogvVideoUrl }] ).volume(volume); - videoJSextension.setup_video($('#videoWindow'), item); + videoJSextension.setup_video($('#videoWindow'), item, defaults); (this).addEvent("loadstart", function () { $(".vjs-remaining-time-display").hide(); @@ -276,7 +309,7 @@ ApiClient.reportPlaybackStopped(Dashboard.getCurrentUserId(), item_id, positionTicks); - clearTimeout(progressInterval); + clearTimeout(MediaPlayer.progressInterval); if (player.techName == "html5") { player.tag.src = ""; @@ -302,7 +335,7 @@ }, updateProgress: function () { - progressInterval = setInterval(function () { + MediaPlayer.progressInterval = setInterval(function () { var player = _V_("videoWindow"); var startTimeTicks = player.tag.src.match(new RegExp("StartTimeTicks=[0-9]+", "g")); diff --git a/dashboard-ui/scripts/videojsextensions.js b/dashboard-ui/scripts/videojsextensions.js index 2c0437590c..314c16dab3 100644 --- a/dashboard-ui/scripts/videojsextensions.js +++ b/dashboard-ui/scripts/videojsextensions.js @@ -6,7 +6,7 @@ var videoJSextension = { a mandatory jQuery object of the