summaryrefslogtreecommitdiffstats
path: root/assets/js/player.js
diff options
context:
space:
mode:
Diffstat (limited to 'assets/js/player.js')
-rw-r--r--assets/js/player.js41
1 files changed, 40 insertions, 1 deletions
diff --git a/assets/js/player.js b/assets/js/player.js
index f79fbbf3..fcba43d8 100644
--- a/assets/js/player.js
+++ b/assets/js/player.js
@@ -41,8 +41,16 @@ var shareOptions = {
embedCode: "<iframe id='ivplayer' width='640' height='360' src='" + embed_url + "' style='border:none;'></iframe>"
}
+videojs.Hls.xhr.beforeRequest = function(options) {
+ if (options.uri.indexOf('local=true') === -1) {
+ options.uri = options.uri + '?local=true';
+ }
+ return options;
+};
+
var player = videojs('player', options);
+
if (location.pathname.startsWith('/embed/')) {
player.overlay({
overlays: [{
@@ -146,6 +154,35 @@ if (video_data.params.autoplay) {
if (!video_data.params.listen && video_data.params.quality === 'dash') {
player.httpSourceSelector();
+
+ if (video_data.params.quality_dash != "auto") {
+ player.ready(() => {
+ player.on("loadedmetadata", () => {
+ const qualityLevels = Array.from(player.qualityLevels()).sort((a, b) => a.height - b.height);
+ 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);
+ }
+ });
+ });
+ }
}
player.vttThumbnails({
@@ -502,4 +539,6 @@ window.addEventListener('keydown', e => {
}());
// Since videojs-share can sometimes be blocked, we defer it until last
-player.share(shareOptions);
+if (player.share) {
+ player.share(shareOptions);
+}