From 9c2e442d4689e1ff16dba6de42d5cd35c1bbd825 Mon Sep 17 00:00:00 2001 From: Techywarrior Date: Thu, 4 Apr 2013 19:09:05 -0700 Subject: [PATCH] subtitle and language selector in video player, respect audio and subtitle preference selections --- dashboard-ui/css/images/media/language.png | Bin 0 -> 738 bytes dashboard-ui/css/images/media/quality.png | Bin 857 -> 651 bytes dashboard-ui/css/site.css | 14 ++- dashboard-ui/scripts/mediaplayer.js | 41 +++++- dashboard-ui/scripts/videojsextensions.js | 139 +++++++++++++-------- 5 files changed, 131 insertions(+), 63 deletions(-) create mode 100644 dashboard-ui/css/images/media/language.png diff --git a/dashboard-ui/css/images/media/language.png b/dashboard-ui/css/images/media/language.png new file mode 100644 index 0000000000000000000000000000000000000000..7a44d41cee3bff1a0a0c1086a902d83c1c5c6e6f GIT binary patch literal 738 zcmV<80v-K{P)TNp82BqR}YzdOhBo1}*|Y zzySzA1^5PR13x)P5Cq!a-zPblOj0Bgp}D!av#nNZ9hO#cIK$RBh!?*zL{V(vGllmJ zJa=-r9Elu+gKLAqAXhGz@3q_QnP#&|!{Lx>wHjfM`u+YXL8VerPfku&@y(gsKD7`E zg}lql%P)_QkAEK?9)_$|tJdjsT6VkrCiW7e(dY{3XS(;kDt@BtaEL+vdr*g(2fC=?#S(rcg3_pn$jzVUj!CbQYh4irJtw1uUm zrB4=%r39i&AW*>m6~qrvpCtCOP+vqwKTzb4IJ;pq8lNhPawU~Y-4f#QIN@L|kw`qT z*=!;L22hj1-Uo)P0&w+5AW}i3qnJ`YpWoQD;J}BVb71EdN>E2U zbCCh0#%i@H?C$OsVDCPxJq7`B4TvwqVzKw|cNK@{5flTlhKyXAz<3&Er_)J1ID310 z#3{joz{7&?yQumzw2?}s68-zrjfn(SW<{R7ze_-{2*n{QjMe_Pm|U3jcm5;502IP# U(|8e-tN;K207*qoM6N<$f_sorSO5S3 literal 0 HcmV?d00001 diff --git a/dashboard-ui/css/images/media/quality.png b/dashboard-ui/css/images/media/quality.png index b52641fcb6796fb2fa2fa12778efc405205afddf..6312637ec87edb99d509153656f93c5dd4b3acdb 100644 GIT binary patch literal 651 zcmV;60(AX}P)!(Q544K&fL6=d5}m7 zu?SI;LV~a&TUgm_Bcu{+?d|*zwh?SBbt^5mw^D4=2(Af%EP)LR;>Li<|93 ztxdGVkmtqY@w%SPW;d(V>LG?}i^XD^N~Q9{;jos;WcJYQNFEBX=n%MM!$i?w@VjzK5?Uz)6fWlQ@}H%fnAH{3#Nk{BAH9 zd;z=%bi0jxBfcOxXe1I$upsHa<2aw#?GfFd5Okg6?j{B&C?L&)0!}mFe}mNbn4A!^9T$&u~_UaYn;H34xhMaIdM*FL z4Dh}&Qj&rWNk2#s{S)69-;!w@rgY%L1*Dq6$N{l7c3a6VToeZ7GtTqBjw=QqEO`h$ l{{;D(My|T*@BCYU0RRWj2^OLb4JH5p002ovPDHLkV1l&lFbV(w literal 857 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qt-3{3AlT^vIy;@;l1FS_g?bF|QV`GS_dzB>#r zGlD@F7$ggkJs;X->0tj;$3-@mpd{8!)ATA+sIAO>KhYlS_2M;74H$+vE}r^{!pL43@f9*?(Hjl zb8E)wgFnjOFhQJtXAvLM@+FV^YSt&-SI%({l;8iw^I>s_?b)vi0k!kYV*TCs|1K@r zZXOoRu=lw0wMX-#zV%D&UtC!&Z(=*`*N%%~4+2AMeRr~6sM(vn@z?u3Tcan7?PPtR zaN&*&bHOr2`}O-RGEy^h7d6Il@$GKdzX8SN+rJw(T3!0PBW&fpbq;f4z8%D??R! zGxrJc6ERKsNiU@WJ>5` zn4!$@428LKFS|ngyEWT9G-F*a=YA4*-uBW)w8v~4nlkK~A)>|AK^g!4-CMn)>{8MG z%nJFd2fyr!Ur}-SO4qg0*!_KlNXZb$Y>W=jrO_vd$@?2>{-! BWSRf~ 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