mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
refactor of MediaPlayer.js
This commit is contained in:
parent
31bd531453
commit
6d7d473fcf
1 changed files with 317 additions and 313 deletions
|
@ -1,13 +1,16 @@
|
||||||
var MediaPlayer = {
|
var MediaPlayer = (function (document) {
|
||||||
|
|
||||||
testableAudioElement: document.createElement('audio'),
|
var testableAudioElement = document.createElement('audio');
|
||||||
testableVideoElement: document.createElement('video'),
|
var testableVideoElement = document.createElement('video');
|
||||||
|
var currentMediaElement;
|
||||||
|
|
||||||
|
return {
|
||||||
|
|
||||||
canPlay: function (item) {
|
canPlay: function (item) {
|
||||||
|
|
||||||
if (item.MediaType === "Video") {
|
if (item.MediaType === "Video") {
|
||||||
|
|
||||||
var media = MediaPlayer.testableVideoElement;
|
var media = testableVideoElement;
|
||||||
|
|
||||||
if (media.canPlayType) {
|
if (media.canPlayType) {
|
||||||
|
|
||||||
|
@ -19,7 +22,7 @@
|
||||||
|
|
||||||
if (item.MediaType === "Audio") {
|
if (item.MediaType === "Audio") {
|
||||||
|
|
||||||
var media = MediaPlayer.testableAudioElement;
|
var media = testableAudioElement;
|
||||||
|
|
||||||
if (media.canPlayType) {
|
if (media.canPlayType) {
|
||||||
|
|
||||||
|
@ -56,7 +59,7 @@
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
MediaPlayer.mediaElement = mediaElement;
|
currentMediaElement = mediaElement;
|
||||||
|
|
||||||
var nowPlayingBar = $('#nowPlayingBar').show();
|
var nowPlayingBar = $('#nowPlayingBar').show();
|
||||||
|
|
||||||
|
@ -170,7 +173,7 @@
|
||||||
|
|
||||||
playVideo: function (items, startPosition) {
|
playVideo: function (items, startPosition) {
|
||||||
//stop/kill videoJS
|
//stop/kill videoJS
|
||||||
if (MediaPlayer.mediaElement) MediaPlayer.stop();
|
if (currentMediaElement) MediaPlayer.stop();
|
||||||
|
|
||||||
var item = items[0];
|
var item = items[0];
|
||||||
|
|
||||||
|
@ -180,7 +183,7 @@
|
||||||
|
|
||||||
var volume = localStorage.getItem("volume") || 0.5;
|
var volume = localStorage.getItem("volume") || 0.5;
|
||||||
var user = Dashboard.getCurrentUser();
|
var user = Dashboard.getCurrentUser();
|
||||||
var defaults = {languageIndex: null, subtitleIndex: null};
|
var defaults = { languageIndex: null, subtitleIndex: null };
|
||||||
|
|
||||||
var user_config = user.Configuration || {};
|
var user_config = user.Configuration || {};
|
||||||
if (item.MediaStreams && item.MediaStreams.length) {
|
if (item.MediaStreams && item.MediaStreams.length) {
|
||||||
|
@ -191,16 +194,16 @@
|
||||||
if (stream.Language == user_config.SubtitleLanguagePreference && stream.IsForced == true) {
|
if (stream.Language == user_config.SubtitleLanguagePreference && stream.IsForced == true) {
|
||||||
defaults.subtitleIndex = i;
|
defaults.subtitleIndex = i;
|
||||||
}
|
}
|
||||||
}else if (user_config.SubtitleLanguagePreference && !defaults.subtitleIndex) {
|
} else if (user_config.SubtitleLanguagePreference && !defaults.subtitleIndex) {
|
||||||
if (stream.Language == user_config.SubtitleLanguagePreference) {
|
if (stream.Language == user_config.SubtitleLanguagePreference) {
|
||||||
defaults.subtitleIndex = i;
|
defaults.subtitleIndex = i;
|
||||||
}
|
}
|
||||||
}else if (user_config.UseForcedSubtitlesOnly == true && !defaults.subtitleIndex) {
|
} else if (user_config.UseForcedSubtitlesOnly == true && !defaults.subtitleIndex) {
|
||||||
if (stream.IsForced == true) {
|
if (stream.IsForced == true) {
|
||||||
defaults.subtitleIndex = i;
|
defaults.subtitleIndex = i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else if (stream.Type == "Audio") {
|
} else if (stream.Type == "Audio") {
|
||||||
//get default language stream
|
//get default language stream
|
||||||
if (user_config.AudioLanguagePreference && !defaults.languageIndex) {
|
if (user_config.AudioLanguagePreference && !defaults.languageIndex) {
|
||||||
if (stream.Language == user_config.AudioLanguagePreference) {
|
if (stream.Language == user_config.AudioLanguagePreference) {
|
||||||
|
@ -294,7 +297,7 @@
|
||||||
|
|
||||||
stop: function () {
|
stop: function () {
|
||||||
|
|
||||||
var elem = MediaPlayer.mediaElement;
|
var elem = currentMediaElement;
|
||||||
|
|
||||||
//check if it's a video using VideoJS
|
//check if it's a video using VideoJS
|
||||||
if ($(elem).hasClass("vjs-tech")) {
|
if ($(elem).hasClass("vjs-tech")) {
|
||||||
|
@ -335,11 +338,11 @@
|
||||||
|
|
||||||
$('#nowPlayingBar').hide();
|
$('#nowPlayingBar').hide();
|
||||||
|
|
||||||
MediaPlayer.mediaElement = null;
|
currentMediaElement = null;
|
||||||
},
|
},
|
||||||
|
|
||||||
isPlaying: function () {
|
isPlaying: function () {
|
||||||
return MediaPlayer.mediaElement;
|
return currentMediaElement;
|
||||||
},
|
},
|
||||||
|
|
||||||
updateProgress: function () {
|
updateProgress: function () {
|
||||||
|
@ -357,5 +360,6 @@
|
||||||
ApiClient.reportPlaybackProgress(Dashboard.getCurrentUserId(), item_id, positionTicks);
|
ApiClient.reportPlaybackProgress(Dashboard.getCurrentUserId(), item_id, positionTicks);
|
||||||
}, 30000);
|
}, 30000);
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
};
|
})(document);
|
Loading…
Add table
Add a link
Reference in a new issue