From cb4dd834d0268e64ea109b5037d1644cdcbef39d Mon Sep 17 00:00:00 2001
From: dragongoose <19649813+dragongoose@users.noreply.github.com>
Date: Fri, 17 Mar 2023 21:20:51 -0400
Subject: [PATCH] Prepare for own video.js
---
frontend/package.json | 6 ++-
frontend/src/assets/qualitySelector.ts | 27 +++++++++++++
frontend/src/components/VideoPlayer.vue | 51 +++++++++++++++++++++++++
frontend/src/views/UserView.vue | 28 +++++++++++---
4 files changed, 105 insertions(+), 7 deletions(-)
create mode 100644 frontend/src/assets/qualitySelector.ts
create mode 100644 frontend/src/components/VideoPlayer.vue
diff --git a/frontend/package.json b/frontend/package.json
index dce6f66..9d61b64 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -13,9 +13,10 @@
},
"dependencies": {
"@dragongoose/streamlink": "^1.0.2",
- "@videojs-player/vue": "^1.0.0",
"oh-vue-icons": "^1.0.0-rc3",
"video.js": "^8.0.4",
+ "videojs-contrib-quality-levels": "^3.0.0",
+ "videojs-hls-quality-selector": "^1.1.4",
"vue": "^3.2.47",
"vue-router": "^4.1.6"
},
@@ -24,6 +25,9 @@
"@rushstack/eslint-patch": "^1.2.0",
"@tailwindcss/typography": "^0.5.9",
"@types/node": "^18.14.2",
+ "@types/videojs-contrib-quality-levels": "^2.0.1",
+ "@types/videojs-hls-quality-selector": "^1.1.0",
+ "@types/video.js": "^7.3.51",
"@vitejs/plugin-vue": "^4.0.0",
"@vue/eslint-config-prettier": "^7.1.0",
"@vue/eslint-config-typescript": "^11.0.2",
diff --git a/frontend/src/assets/qualitySelector.ts b/frontend/src/assets/qualitySelector.ts
new file mode 100644
index 0000000..c2f316f
--- /dev/null
+++ b/frontend/src/assets/qualitySelector.ts
@@ -0,0 +1,27 @@
+import type { VideoJsPlayer } from "video.js";
+import "videojs-contrib-quality-levels";
+import type { QualityLevelList } from "videojs-contrib-quality-levels";
+
+export const createQualitySelector = (player: VideoJsPlayer) => {
+ const qualityLevels: QualityLevelList = player.qualityLevels()
+ let currentIndex = 0
+
+ player.hlsQualitySelector()
+ var myButton = player.controlBar.addChild("button");
+ var myButtonDom = myButton.el();
+ myButtonDom.innerHTML = "Hello";
+
+ myButtonDom.addEventListener('click', () => {
+
+ })
+
+ qualityLevels.on('change', function() {
+ console.log('Quality Level changed!');
+ console.log('New level:', qualityLevels[qualityLevels.selectedIndex]);
+ console.log(qualityLevels)
+
+ const qualityLabel = qualityLevels[qualityLevels.selectedIndex].height?.toString() + 'p'
+
+ myButtonDom.textContent = qualityLabel ?? ''
+ });
+}
\ No newline at end of file
diff --git a/frontend/src/components/VideoPlayer.vue b/frontend/src/components/VideoPlayer.vue
new file mode 100644
index 0000000..eaccb13
--- /dev/null
+++ b/frontend/src/components/VideoPlayer.vue
@@ -0,0 +1,51 @@
+
+