mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
support choosing optimal video version
This commit is contained in:
parent
02a810cf1e
commit
0f37c36d24
3 changed files with 33 additions and 10 deletions
|
@ -587,14 +587,14 @@
|
||||||
// Just use the first audio stream
|
// Just use the first audio stream
|
||||||
return audioStreams.length ? audioStreams[0].Index : null;
|
return audioStreams.length ? audioStreams[0].Index : null;
|
||||||
};
|
};
|
||||||
|
|
||||||
function getVideoQualityOptions(mediaStreams) {
|
function getVideoQualityOptions(mediaStreams) {
|
||||||
|
|
||||||
var videoStream = mediaStreams.filter(function (stream) {
|
var videoStream = mediaStreams.filter(function (stream) {
|
||||||
return stream.Type == "Video";
|
return stream.Type == "Video";
|
||||||
})[0];
|
})[0];
|
||||||
|
|
||||||
var bitrateSetting = parseInt(localStorage.getItem('preferredVideoBitrate') || '') || 1500000;
|
var bitrateSetting = self.getBitrateSetting();
|
||||||
|
|
||||||
var maxAllowedWidth = Math.max(screen.height, screen.width);
|
var maxAllowedWidth = Math.max(screen.height, screen.width);
|
||||||
|
|
||||||
|
|
|
@ -399,12 +399,37 @@
|
||||||
self.playlist = items;
|
self.playlist = items;
|
||||||
currentPlaylistIndex = 0;
|
currentPlaylistIndex = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
function getOptimalMediaVersion(versions) {
|
|
||||||
|
|
||||||
// TODO: Implement
|
self.getBitrateSetting = function() {
|
||||||
|
return parseInt(localStorage.getItem('preferredVideoBitrate') || '') || 1500000;
|
||||||
|
};
|
||||||
|
|
||||||
return versions[0];
|
function getOptimalMediaVersion(mediaType, versions) {
|
||||||
|
|
||||||
|
var optimalVersion;
|
||||||
|
|
||||||
|
if (mediaType == 'Video') {
|
||||||
|
|
||||||
|
var bitrateSetting = self.getBitrateSetting();
|
||||||
|
|
||||||
|
var maxAllowedWidth = Math.max(screen.height, screen.width);
|
||||||
|
|
||||||
|
optimalVersion = versions.filter(function (v) {
|
||||||
|
|
||||||
|
var videoStream = v.MediaStreams.filter(function (s) {
|
||||||
|
return s.Type == 'Video';
|
||||||
|
})[0];
|
||||||
|
|
||||||
|
var audioStream = v.MediaStreams.filter(function (s) {
|
||||||
|
return s.Type == 'Audio';
|
||||||
|
})[0];
|
||||||
|
|
||||||
|
return self.canPlayVideoDirect(v, videoStream, audioStream, null, maxAllowedWidth, bitrateSetting);
|
||||||
|
|
||||||
|
})[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
return optimalVersion || versions[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
self.playInternal = function (item, startPosition, user) {
|
self.playInternal = function (item, startPosition, user) {
|
||||||
|
@ -424,7 +449,7 @@
|
||||||
if (item.MediaType === "Video") {
|
if (item.MediaType === "Video") {
|
||||||
|
|
||||||
currentItem = item;
|
currentItem = item;
|
||||||
currentMediaVersion = getOptimalMediaVersion(item.MediaVersions);
|
currentMediaVersion = getOptimalMediaVersion(item.MediaType, item.MediaVersions);
|
||||||
|
|
||||||
videoPlayer(self, item, currentMediaVersion, startPosition, user);
|
videoPlayer(self, item, currentMediaVersion, startPosition, user);
|
||||||
mediaElement = self.initVideoPlayer();
|
mediaElement = self.initVideoPlayer();
|
||||||
|
@ -435,7 +460,7 @@
|
||||||
} else if (item.MediaType === "Audio") {
|
} else if (item.MediaType === "Audio") {
|
||||||
|
|
||||||
currentItem = item;
|
currentItem = item;
|
||||||
currentMediaVersion = getOptimalMediaVersion(item.MediaVersions);
|
currentMediaVersion = getOptimalMediaVersion(item.MediaType, item.MediaVersions);
|
||||||
|
|
||||||
mediaElement = playAudio(item, currentMediaVersion, startPosition);
|
mediaElement = playAudio(item, currentMediaVersion, startPosition);
|
||||||
mediaControls.show();
|
mediaControls.show();
|
||||||
|
|
|
@ -162,8 +162,6 @@ var Dashboard = {
|
||||||
|
|
||||||
updateSystemInfo: function (info) {
|
updateSystemInfo: function (info) {
|
||||||
|
|
||||||
var isFirstLoad = !Dashboard.lastSystemInfo;
|
|
||||||
|
|
||||||
Dashboard.lastSystemInfo = info;
|
Dashboard.lastSystemInfo = info;
|
||||||
Dashboard.ensureWebSocket(info);
|
Dashboard.ensureWebSocket(info);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue