diff options
| -rw-r--r-- | assets/js/player.js | 21 | ||||
| -rw-r--r-- | src/invidious/views/preferences.ecr | 2 |
2 files changed, 20 insertions, 3 deletions
diff --git a/assets/js/player.js b/assets/js/player.js index 930680d6..fcba43d8 100644 --- a/assets/js/player.js +++ b/assets/js/player.js @@ -159,9 +159,26 @@ if (!video_data.params.listen && video_data.params.quality === 'dash') { player.ready(() => { player.on("loadedmetadata", () => { const qualityLevels = Array.from(player.qualityLevels()).sort((a, b) => a.height - b.height); - const targetQualityLevel = video_data.params.quality_dash == "best" ? qualityLevels.length - 1 : 0; + let targetQualityLevel; + switch (video_data.params.quality_dash) { + case "best": + targetQualityLevel = qualityLevels.length - 1; + break; + case "worst": + targetQualityLevel = 0; + break; + default: + const targetHeight = Number.parseInt(video_data.params.quality_dash, 10); + for (let i = 0; i < qualityLevels.length; i++) { + if (qualityLevels[i].height <= targetHeight) { + targetQualityLevel = i; + } else { + break; + } + } + } for (let i = 0; i < qualityLevels.length; i++) { - qualityLevels[i].enabled = (i == targetQualityLevel) + qualityLevels[i].enabled = (i == targetQualityLevel); } }); }); diff --git a/src/invidious/views/preferences.ecr b/src/invidious/views/preferences.ecr index 46aa714c..9eac10a7 100644 --- a/src/invidious/views/preferences.ecr +++ b/src/invidious/views/preferences.ecr @@ -61,7 +61,7 @@ <div class="pure-control-group"> <label for="quality_dash"><%= translate(locale, "Preferred dash video quality: ") %></label> <select name="quality_dash" id="quality_dash"> - <% {"auto", "best", "worst"}.each do |option| %> + <% {"auto", "best", "4320p", "2160p", "1440p", "1080p", "720p", "480p", "360p", "240p", "144p", "worst"}.each do |option| %> <option value="<%= option %>" <% if preferences.quality_dash == option %> selected <% end %>><%= translate(locale, option) %></option> <% end %> </select> |
