mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
commit
0cf2e231fc
1 changed files with 41 additions and 2 deletions
|
@ -14,6 +14,9 @@ define(['events', 'browser', 'pluginManager', 'apphost', 'appSettings'], functio
|
||||||
|
|
||||||
var mediaElement;
|
var mediaElement;
|
||||||
var currentSrc;
|
var currentSrc;
|
||||||
|
var currentPlayOptions;
|
||||||
|
var started;
|
||||||
|
var _currentTime;
|
||||||
|
|
||||||
function getSavedVolume() {
|
function getSavedVolume() {
|
||||||
return appSettings.get("volume") || 1;
|
return appSettings.get("volume") || 1;
|
||||||
|
@ -50,10 +53,16 @@ define(['events', 'browser', 'pluginManager', 'apphost', 'appSettings'], functio
|
||||||
self.play = function (options) {
|
self.play = function (options) {
|
||||||
|
|
||||||
_currentTime = null;
|
_currentTime = null;
|
||||||
|
started = false;
|
||||||
var elem = createMediaElement();
|
var elem = createMediaElement();
|
||||||
|
|
||||||
var val = options.url;
|
var val = options.url;
|
||||||
|
|
||||||
|
var seconds = (options.playerStartPositionTicks || 0) / 10000000;
|
||||||
|
if (seconds) {
|
||||||
|
val += '#t=' + seconds;
|
||||||
|
}
|
||||||
|
|
||||||
elem.crossOrigin = getCrossOriginValue(options.mediaSource);
|
elem.crossOrigin = getCrossOriginValue(options.mediaSource);
|
||||||
elem.title = options.title;
|
elem.title = options.title;
|
||||||
|
|
||||||
|
@ -72,6 +81,7 @@ define(['events', 'browser', 'pluginManager', 'apphost', 'appSettings'], functio
|
||||||
}
|
}
|
||||||
|
|
||||||
currentSrc = val;
|
currentSrc = val;
|
||||||
|
currentPlayOptions = options;
|
||||||
|
|
||||||
return playWithPromise(elem);
|
return playWithPromise(elem);
|
||||||
};
|
};
|
||||||
|
@ -108,7 +118,6 @@ define(['events', 'browser', 'pluginManager', 'apphost', 'appSettings'], functio
|
||||||
}
|
}
|
||||||
|
|
||||||
// Save this for when playback stops, because querying the time at that point might return 0
|
// Save this for when playback stops, because querying the time at that point might return 0
|
||||||
var _currentTime;
|
|
||||||
self.currentTime = function (val) {
|
self.currentTime = function (val) {
|
||||||
|
|
||||||
if (mediaElement) {
|
if (mediaElement) {
|
||||||
|
@ -295,6 +304,7 @@ define(['events', 'browser', 'pluginManager', 'apphost', 'appSettings'], functio
|
||||||
|
|
||||||
_currentTime = null;
|
_currentTime = null;
|
||||||
currentSrc = null;
|
currentSrc = null;
|
||||||
|
currentPlayOptions = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
function onTimeUpdate() {
|
function onTimeUpdate() {
|
||||||
|
@ -313,11 +323,40 @@ define(['events', 'browser', 'pluginManager', 'apphost', 'appSettings'], functio
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function onPlaying() {
|
function onPlaying(e) {
|
||||||
|
|
||||||
|
if (!started) {
|
||||||
|
started = true;
|
||||||
|
this.removeAttribute('controls');
|
||||||
|
|
||||||
|
seekOnPlaybackStart(e.target);
|
||||||
|
}
|
||||||
events.trigger(self, 'playing');
|
events.trigger(self, 'playing');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function seekOnPlaybackStart(element) {
|
||||||
|
|
||||||
|
var seconds = (currentPlayOptions.playerStartPositionTicks || 0) / 10000000;
|
||||||
|
|
||||||
|
if (seconds) {
|
||||||
|
var src = (self.currentSrc() || '').toLowerCase();
|
||||||
|
|
||||||
|
// Appending #t=xxx to the query string doesn't seem to work with HLS
|
||||||
|
// For plain video files, not all browsers support it either
|
||||||
|
if (!browser.chrome || src.indexOf('.m3u8') !== -1) {
|
||||||
|
|
||||||
|
var delay = browser.safari ? 2500 : 0;
|
||||||
|
if (delay) {
|
||||||
|
setTimeout(function () {
|
||||||
|
element.currentTime = seconds;
|
||||||
|
}, delay);
|
||||||
|
} else {
|
||||||
|
element.currentTime = seconds;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function onPause() {
|
function onPause() {
|
||||||
events.trigger(self, 'pause');
|
events.trigger(self, 'pause');
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue