1
0
Fork 0
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:
Luke Pulverenti 2014-03-21 00:52:46 -04:00
parent 02a810cf1e
commit 0f37c36d24
3 changed files with 33 additions and 10 deletions

View file

@ -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);

View file

@ -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();

View file

@ -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);