ChandimaPrabath
commited on
Commit
•
d0c3311
1
Parent(s):
e787e40
player test
Browse files
frontend/package-lock.json
CHANGED
@@ -17,7 +17,8 @@
|
|
17 |
"next": "14.2.5",
|
18 |
"react": "^18",
|
19 |
"react-dom": "^18",
|
20 |
-
"sharp": "^0.33.5"
|
|
|
21 |
},
|
22 |
"devDependencies": {
|
23 |
"eslint": "^8",
|
@@ -38,6 +39,17 @@
|
|
38 |
"url": "https://github.com/sponsors/sindresorhus"
|
39 |
}
|
40 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
"node_modules/@emnapi/runtime": {
|
42 |
"version": "1.2.0",
|
43 |
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz",
|
@@ -986,6 +998,85 @@
|
|
986 |
"integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
|
987 |
"dev": true
|
988 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
989 |
"node_modules/acorn": {
|
990 |
"version": "8.12.1",
|
991 |
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
|
@@ -1007,6 +1098,30 @@
|
|
1007 |
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
|
1008 |
}
|
1009 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1010 |
"node_modules/ajv": {
|
1011 |
"version": "6.12.6",
|
1012 |
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
|
@@ -1751,6 +1866,11 @@
|
|
1751 |
"node": ">=6.0.0"
|
1752 |
}
|
1753 |
},
|
|
|
|
|
|
|
|
|
|
|
1754 |
"node_modules/eastasianwidth": {
|
1755 |
"version": "0.2.0",
|
1756 |
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
|
@@ -2712,6 +2832,15 @@
|
|
2712 |
"url": "https://github.com/sponsors/isaacs"
|
2713 |
}
|
2714 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2715 |
"node_modules/globals": {
|
2716 |
"version": "13.24.0",
|
2717 |
"resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
|
@@ -3111,6 +3240,11 @@
|
|
3111 |
"node": ">=8"
|
3112 |
}
|
3113 |
},
|
|
|
|
|
|
|
|
|
|
|
3114 |
"node_modules/is-generator-function": {
|
3115 |
"version": "1.0.10",
|
3116 |
"resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
|
@@ -3530,6 +3664,29 @@
|
|
3530 |
"integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
|
3531 |
"dev": true
|
3532 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3533 |
"node_modules/merge2": {
|
3534 |
"version": "1.4.1",
|
3535 |
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
|
@@ -3571,6 +3728,14 @@
|
|
3571 |
"node": ">= 0.6"
|
3572 |
}
|
3573 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3574 |
"node_modules/minimatch": {
|
3575 |
"version": "3.1.2",
|
3576 |
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
@@ -3601,12 +3766,42 @@
|
|
3601 |
"node": ">=16 || 14 >=14.17"
|
3602 |
}
|
3603 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3604 |
"node_modules/ms": {
|
3605 |
"version": "2.1.2",
|
3606 |
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
3607 |
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
|
3608 |
"dev": true
|
3609 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3610 |
"node_modules/mz": {
|
3611 |
"version": "2.7.0",
|
3612 |
"resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
|
@@ -4022,6 +4217,17 @@
|
|
4022 |
"node": ">= 6"
|
4023 |
}
|
4024 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4025 |
"node_modules/possible-typed-array-names": {
|
4026 |
"version": "1.0.0",
|
4027 |
"resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
|
@@ -4195,6 +4401,14 @@
|
|
4195 |
"node": ">= 0.8.0"
|
4196 |
}
|
4197 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4198 |
"node_modules/prop-types": {
|
4199 |
"version": "15.8.1",
|
4200 |
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
|
@@ -4309,6 +4523,11 @@
|
|
4309 |
"url": "https://github.com/sponsors/ljharb"
|
4310 |
}
|
4311 |
},
|
|
|
|
|
|
|
|
|
|
|
4312 |
"node_modules/regexp.prototype.flags": {
|
4313 |
"version": "1.5.2",
|
4314 |
"resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz",
|
@@ -5181,12 +5400,64 @@
|
|
5181 |
"punycode": "^2.1.0"
|
5182 |
}
|
5183 |
},
|
|
|
|
|
|
|
|
|
|
|
5184 |
"node_modules/util-deprecate": {
|
5185 |
"version": "1.0.2",
|
5186 |
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
5187 |
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
|
5188 |
"dev": true
|
5189 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5190 |
"node_modules/which": {
|
5191 |
"version": "2.0.2",
|
5192 |
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
|
|
17 |
"next": "14.2.5",
|
18 |
"react": "^18",
|
19 |
"react-dom": "^18",
|
20 |
+
"sharp": "^0.33.5",
|
21 |
+
"video.js": "^8.17.4"
|
22 |
},
|
23 |
"devDependencies": {
|
24 |
"eslint": "^8",
|
|
|
39 |
"url": "https://github.com/sponsors/sindresorhus"
|
40 |
}
|
41 |
},
|
42 |
+
"node_modules/@babel/runtime": {
|
43 |
+
"version": "7.25.6",
|
44 |
+
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz",
|
45 |
+
"integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==",
|
46 |
+
"dependencies": {
|
47 |
+
"regenerator-runtime": "^0.14.0"
|
48 |
+
},
|
49 |
+
"engines": {
|
50 |
+
"node": ">=6.9.0"
|
51 |
+
}
|
52 |
+
},
|
53 |
"node_modules/@emnapi/runtime": {
|
54 |
"version": "1.2.0",
|
55 |
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz",
|
|
|
998 |
"integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
|
999 |
"dev": true
|
1000 |
},
|
1001 |
+
"node_modules/@videojs/http-streaming": {
|
1002 |
+
"version": "3.13.3",
|
1003 |
+
"resolved": "https://registry.npmjs.org/@videojs/http-streaming/-/http-streaming-3.13.3.tgz",
|
1004 |
+
"integrity": "sha512-L7H+iTeqHeZ5PylzOx+pT3CVyzn4TALWYTJKkIc1pDaV/cTVfNGtG+9/vXPAydD+wR/xH1M9/t2JH8tn/DCT4w==",
|
1005 |
+
"dependencies": {
|
1006 |
+
"@babel/runtime": "^7.12.5",
|
1007 |
+
"@videojs/vhs-utils": "4.0.0",
|
1008 |
+
"aes-decrypter": "4.0.1",
|
1009 |
+
"global": "^4.4.0",
|
1010 |
+
"m3u8-parser": "^7.1.0",
|
1011 |
+
"mpd-parser": "^1.3.0",
|
1012 |
+
"mux.js": "7.0.3",
|
1013 |
+
"video.js": "^7 || ^8"
|
1014 |
+
},
|
1015 |
+
"engines": {
|
1016 |
+
"node": ">=8",
|
1017 |
+
"npm": ">=5"
|
1018 |
+
},
|
1019 |
+
"peerDependencies": {
|
1020 |
+
"video.js": "^8.14.0"
|
1021 |
+
}
|
1022 |
+
},
|
1023 |
+
"node_modules/@videojs/http-streaming/node_modules/aes-decrypter": {
|
1024 |
+
"version": "4.0.1",
|
1025 |
+
"resolved": "https://registry.npmjs.org/aes-decrypter/-/aes-decrypter-4.0.1.tgz",
|
1026 |
+
"integrity": "sha512-H1nh/P9VZXUf17AA5NQfJML88CFjVBDuGkp5zDHa7oEhYN9TTpNLJknRY1ie0iSKWlDf6JRnJKaZVDSQdPy6Cg==",
|
1027 |
+
"dependencies": {
|
1028 |
+
"@babel/runtime": "^7.12.5",
|
1029 |
+
"@videojs/vhs-utils": "^3.0.5",
|
1030 |
+
"global": "^4.4.0",
|
1031 |
+
"pkcs7": "^1.0.4"
|
1032 |
+
}
|
1033 |
+
},
|
1034 |
+
"node_modules/@videojs/http-streaming/node_modules/aes-decrypter/node_modules/@videojs/vhs-utils": {
|
1035 |
+
"version": "3.0.5",
|
1036 |
+
"resolved": "https://registry.npmjs.org/@videojs/vhs-utils/-/vhs-utils-3.0.5.tgz",
|
1037 |
+
"integrity": "sha512-PKVgdo8/GReqdx512F+ombhS+Bzogiofy1LgAj4tN8PfdBx3HSS7V5WfJotKTqtOWGwVfSWsrYN/t09/DSryrw==",
|
1038 |
+
"dependencies": {
|
1039 |
+
"@babel/runtime": "^7.12.5",
|
1040 |
+
"global": "^4.4.0",
|
1041 |
+
"url-toolkit": "^2.2.1"
|
1042 |
+
},
|
1043 |
+
"engines": {
|
1044 |
+
"node": ">=8",
|
1045 |
+
"npm": ">=5"
|
1046 |
+
}
|
1047 |
+
},
|
1048 |
+
"node_modules/@videojs/vhs-utils": {
|
1049 |
+
"version": "4.0.0",
|
1050 |
+
"resolved": "https://registry.npmjs.org/@videojs/vhs-utils/-/vhs-utils-4.0.0.tgz",
|
1051 |
+
"integrity": "sha512-xJp7Yd4jMLwje2vHCUmi8MOUU76nxiwII3z4Eg3Ucb+6rrkFVGosrXlMgGnaLjq724j3wzNElRZ71D/CKrTtxg==",
|
1052 |
+
"dependencies": {
|
1053 |
+
"@babel/runtime": "^7.12.5",
|
1054 |
+
"global": "^4.4.0",
|
1055 |
+
"url-toolkit": "^2.2.1"
|
1056 |
+
},
|
1057 |
+
"engines": {
|
1058 |
+
"node": ">=8",
|
1059 |
+
"npm": ">=5"
|
1060 |
+
}
|
1061 |
+
},
|
1062 |
+
"node_modules/@videojs/xhr": {
|
1063 |
+
"version": "2.7.0",
|
1064 |
+
"resolved": "https://registry.npmjs.org/@videojs/xhr/-/xhr-2.7.0.tgz",
|
1065 |
+
"integrity": "sha512-giab+EVRanChIupZK7gXjHy90y3nncA2phIOyG3Ne5fvpiMJzvqYwiTOnEVW2S4CoYcuKJkomat7bMXA/UoUZQ==",
|
1066 |
+
"dependencies": {
|
1067 |
+
"@babel/runtime": "^7.5.5",
|
1068 |
+
"global": "~4.4.0",
|
1069 |
+
"is-function": "^1.0.1"
|
1070 |
+
}
|
1071 |
+
},
|
1072 |
+
"node_modules/@xmldom/xmldom": {
|
1073 |
+
"version": "0.8.10",
|
1074 |
+
"resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz",
|
1075 |
+
"integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==",
|
1076 |
+
"engines": {
|
1077 |
+
"node": ">=10.0.0"
|
1078 |
+
}
|
1079 |
+
},
|
1080 |
"node_modules/acorn": {
|
1081 |
"version": "8.12.1",
|
1082 |
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
|
|
|
1098 |
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
|
1099 |
}
|
1100 |
},
|
1101 |
+
"node_modules/aes-decrypter": {
|
1102 |
+
"version": "4.0.2",
|
1103 |
+
"resolved": "https://registry.npmjs.org/aes-decrypter/-/aes-decrypter-4.0.2.tgz",
|
1104 |
+
"integrity": "sha512-lc+/9s6iJvuaRe5qDlMTpCFjnwpkeOXp8qP3oiZ5jsj1MRg+SBVUmmICrhxHvc8OELSmc+fEyyxAuppY6hrWzw==",
|
1105 |
+
"dependencies": {
|
1106 |
+
"@babel/runtime": "^7.12.5",
|
1107 |
+
"@videojs/vhs-utils": "^4.1.1",
|
1108 |
+
"global": "^4.4.0",
|
1109 |
+
"pkcs7": "^1.0.4"
|
1110 |
+
}
|
1111 |
+
},
|
1112 |
+
"node_modules/aes-decrypter/node_modules/@videojs/vhs-utils": {
|
1113 |
+
"version": "4.1.1",
|
1114 |
+
"resolved": "https://registry.npmjs.org/@videojs/vhs-utils/-/vhs-utils-4.1.1.tgz",
|
1115 |
+
"integrity": "sha512-5iLX6sR2ownbv4Mtejw6Ax+naosGvoT9kY+gcuHzANyUZZ+4NpeNdKMUhb6ag0acYej1Y7cmr/F2+4PrggMiVA==",
|
1116 |
+
"dependencies": {
|
1117 |
+
"@babel/runtime": "^7.12.5",
|
1118 |
+
"global": "^4.4.0"
|
1119 |
+
},
|
1120 |
+
"engines": {
|
1121 |
+
"node": ">=8",
|
1122 |
+
"npm": ">=5"
|
1123 |
+
}
|
1124 |
+
},
|
1125 |
"node_modules/ajv": {
|
1126 |
"version": "6.12.6",
|
1127 |
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
|
|
|
1866 |
"node": ">=6.0.0"
|
1867 |
}
|
1868 |
},
|
1869 |
+
"node_modules/dom-walk": {
|
1870 |
+
"version": "0.1.2",
|
1871 |
+
"resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz",
|
1872 |
+
"integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="
|
1873 |
+
},
|
1874 |
"node_modules/eastasianwidth": {
|
1875 |
"version": "0.2.0",
|
1876 |
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
|
|
|
2832 |
"url": "https://github.com/sponsors/isaacs"
|
2833 |
}
|
2834 |
},
|
2835 |
+
"node_modules/global": {
|
2836 |
+
"version": "4.4.0",
|
2837 |
+
"resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
|
2838 |
+
"integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
|
2839 |
+
"dependencies": {
|
2840 |
+
"min-document": "^2.19.0",
|
2841 |
+
"process": "^0.11.10"
|
2842 |
+
}
|
2843 |
+
},
|
2844 |
"node_modules/globals": {
|
2845 |
"version": "13.24.0",
|
2846 |
"resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
|
|
|
3240 |
"node": ">=8"
|
3241 |
}
|
3242 |
},
|
3243 |
+
"node_modules/is-function": {
|
3244 |
+
"version": "1.0.2",
|
3245 |
+
"resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz",
|
3246 |
+
"integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ=="
|
3247 |
+
},
|
3248 |
"node_modules/is-generator-function": {
|
3249 |
"version": "1.0.10",
|
3250 |
"resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz",
|
|
|
3664 |
"integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
|
3665 |
"dev": true
|
3666 |
},
|
3667 |
+
"node_modules/m3u8-parser": {
|
3668 |
+
"version": "7.2.0",
|
3669 |
+
"resolved": "https://registry.npmjs.org/m3u8-parser/-/m3u8-parser-7.2.0.tgz",
|
3670 |
+
"integrity": "sha512-CRatFqpjVtMiMaKXxNvuI3I++vUumIXVVT/JpCpdU/FynV/ceVw1qpPyyBNindL+JlPMSesx+WX1QJaZEJSaMQ==",
|
3671 |
+
"dependencies": {
|
3672 |
+
"@babel/runtime": "^7.12.5",
|
3673 |
+
"@videojs/vhs-utils": "^4.1.1",
|
3674 |
+
"global": "^4.4.0"
|
3675 |
+
}
|
3676 |
+
},
|
3677 |
+
"node_modules/m3u8-parser/node_modules/@videojs/vhs-utils": {
|
3678 |
+
"version": "4.1.1",
|
3679 |
+
"resolved": "https://registry.npmjs.org/@videojs/vhs-utils/-/vhs-utils-4.1.1.tgz",
|
3680 |
+
"integrity": "sha512-5iLX6sR2ownbv4Mtejw6Ax+naosGvoT9kY+gcuHzANyUZZ+4NpeNdKMUhb6ag0acYej1Y7cmr/F2+4PrggMiVA==",
|
3681 |
+
"dependencies": {
|
3682 |
+
"@babel/runtime": "^7.12.5",
|
3683 |
+
"global": "^4.4.0"
|
3684 |
+
},
|
3685 |
+
"engines": {
|
3686 |
+
"node": ">=8",
|
3687 |
+
"npm": ">=5"
|
3688 |
+
}
|
3689 |
+
},
|
3690 |
"node_modules/merge2": {
|
3691 |
"version": "1.4.1",
|
3692 |
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
|
|
|
3728 |
"node": ">= 0.6"
|
3729 |
}
|
3730 |
},
|
3731 |
+
"node_modules/min-document": {
|
3732 |
+
"version": "2.19.0",
|
3733 |
+
"resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
|
3734 |
+
"integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==",
|
3735 |
+
"dependencies": {
|
3736 |
+
"dom-walk": "^0.1.0"
|
3737 |
+
}
|
3738 |
+
},
|
3739 |
"node_modules/minimatch": {
|
3740 |
"version": "3.1.2",
|
3741 |
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
|
|
|
3766 |
"node": ">=16 || 14 >=14.17"
|
3767 |
}
|
3768 |
},
|
3769 |
+
"node_modules/mpd-parser": {
|
3770 |
+
"version": "1.3.0",
|
3771 |
+
"resolved": "https://registry.npmjs.org/mpd-parser/-/mpd-parser-1.3.0.tgz",
|
3772 |
+
"integrity": "sha512-WgeIwxAqkmb9uTn4ClicXpEQYCEduDqRKfmUdp4X8vmghKfBNXZLYpREn9eqrDx/Tf5LhzRcJLSpi4ohfV742Q==",
|
3773 |
+
"dependencies": {
|
3774 |
+
"@babel/runtime": "^7.12.5",
|
3775 |
+
"@videojs/vhs-utils": "^4.0.0",
|
3776 |
+
"@xmldom/xmldom": "^0.8.3",
|
3777 |
+
"global": "^4.4.0"
|
3778 |
+
},
|
3779 |
+
"bin": {
|
3780 |
+
"mpd-to-m3u8-json": "bin/parse.js"
|
3781 |
+
}
|
3782 |
+
},
|
3783 |
"node_modules/ms": {
|
3784 |
"version": "2.1.2",
|
3785 |
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
3786 |
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
|
3787 |
"dev": true
|
3788 |
},
|
3789 |
+
"node_modules/mux.js": {
|
3790 |
+
"version": "7.0.3",
|
3791 |
+
"resolved": "https://registry.npmjs.org/mux.js/-/mux.js-7.0.3.tgz",
|
3792 |
+
"integrity": "sha512-gzlzJVEGFYPtl2vvEiJneSWAWD4nfYRHD5XgxmB2gWvXraMPOYk+sxfvexmNfjQUFpmk6hwLR5C6iSFmuwCHdQ==",
|
3793 |
+
"dependencies": {
|
3794 |
+
"@babel/runtime": "^7.11.2",
|
3795 |
+
"global": "^4.4.0"
|
3796 |
+
},
|
3797 |
+
"bin": {
|
3798 |
+
"muxjs-transmux": "bin/transmux.js"
|
3799 |
+
},
|
3800 |
+
"engines": {
|
3801 |
+
"node": ">=8",
|
3802 |
+
"npm": ">=5"
|
3803 |
+
}
|
3804 |
+
},
|
3805 |
"node_modules/mz": {
|
3806 |
"version": "2.7.0",
|
3807 |
"resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
|
|
|
4217 |
"node": ">= 6"
|
4218 |
}
|
4219 |
},
|
4220 |
+
"node_modules/pkcs7": {
|
4221 |
+
"version": "1.0.4",
|
4222 |
+
"resolved": "https://registry.npmjs.org/pkcs7/-/pkcs7-1.0.4.tgz",
|
4223 |
+
"integrity": "sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ==",
|
4224 |
+
"dependencies": {
|
4225 |
+
"@babel/runtime": "^7.5.5"
|
4226 |
+
},
|
4227 |
+
"bin": {
|
4228 |
+
"pkcs7": "bin/cli.js"
|
4229 |
+
}
|
4230 |
+
},
|
4231 |
"node_modules/possible-typed-array-names": {
|
4232 |
"version": "1.0.0",
|
4233 |
"resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz",
|
|
|
4401 |
"node": ">= 0.8.0"
|
4402 |
}
|
4403 |
},
|
4404 |
+
"node_modules/process": {
|
4405 |
+
"version": "0.11.10",
|
4406 |
+
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
|
4407 |
+
"integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
|
4408 |
+
"engines": {
|
4409 |
+
"node": ">= 0.6.0"
|
4410 |
+
}
|
4411 |
+
},
|
4412 |
"node_modules/prop-types": {
|
4413 |
"version": "15.8.1",
|
4414 |
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
|
|
|
4523 |
"url": "https://github.com/sponsors/ljharb"
|
4524 |
}
|
4525 |
},
|
4526 |
+
"node_modules/regenerator-runtime": {
|
4527 |
+
"version": "0.14.1",
|
4528 |
+
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
|
4529 |
+
"integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
|
4530 |
+
},
|
4531 |
"node_modules/regexp.prototype.flags": {
|
4532 |
"version": "1.5.2",
|
4533 |
"resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz",
|
|
|
5400 |
"punycode": "^2.1.0"
|
5401 |
}
|
5402 |
},
|
5403 |
+
"node_modules/url-toolkit": {
|
5404 |
+
"version": "2.2.5",
|
5405 |
+
"resolved": "https://registry.npmjs.org/url-toolkit/-/url-toolkit-2.2.5.tgz",
|
5406 |
+
"integrity": "sha512-mtN6xk+Nac+oyJ/PrI7tzfmomRVNFIWKUbG8jdYFt52hxbiReFAXIjYskvu64/dvuW71IcB7lV8l0HvZMac6Jg=="
|
5407 |
+
},
|
5408 |
"node_modules/util-deprecate": {
|
5409 |
"version": "1.0.2",
|
5410 |
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
5411 |
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
|
5412 |
"dev": true
|
5413 |
},
|
5414 |
+
"node_modules/video.js": {
|
5415 |
+
"version": "8.17.4",
|
5416 |
+
"resolved": "https://registry.npmjs.org/video.js/-/video.js-8.17.4.tgz",
|
5417 |
+
"integrity": "sha512-AECieAxKMKB/QgYK36ci50phfpWys6bFT6+pGMpSafeFYSoZaQ2Vpl83T9Qqcesv4TO7oNtiycnVeaBnrva2oA==",
|
5418 |
+
"dependencies": {
|
5419 |
+
"@babel/runtime": "^7.12.5",
|
5420 |
+
"@videojs/http-streaming": "3.13.3",
|
5421 |
+
"@videojs/vhs-utils": "^4.0.0",
|
5422 |
+
"@videojs/xhr": "2.7.0",
|
5423 |
+
"aes-decrypter": "^4.0.1",
|
5424 |
+
"global": "4.4.0",
|
5425 |
+
"m3u8-parser": "^7.1.0",
|
5426 |
+
"mpd-parser": "^1.2.2",
|
5427 |
+
"mux.js": "^7.0.1",
|
5428 |
+
"videojs-contrib-quality-levels": "4.1.0",
|
5429 |
+
"videojs-font": "4.2.0",
|
5430 |
+
"videojs-vtt.js": "0.15.5"
|
5431 |
+
}
|
5432 |
+
},
|
5433 |
+
"node_modules/videojs-contrib-quality-levels": {
|
5434 |
+
"version": "4.1.0",
|
5435 |
+
"resolved": "https://registry.npmjs.org/videojs-contrib-quality-levels/-/videojs-contrib-quality-levels-4.1.0.tgz",
|
5436 |
+
"integrity": "sha512-TfrXJJg1Bv4t6TOCMEVMwF/CoS8iENYsWNKip8zfhB5kTcegiFYezEA0eHAJPU64ZC8NQbxQgOwAsYU8VXbOWA==",
|
5437 |
+
"dependencies": {
|
5438 |
+
"global": "^4.4.0"
|
5439 |
+
},
|
5440 |
+
"engines": {
|
5441 |
+
"node": ">=16",
|
5442 |
+
"npm": ">=8"
|
5443 |
+
},
|
5444 |
+
"peerDependencies": {
|
5445 |
+
"video.js": "^8"
|
5446 |
+
}
|
5447 |
+
},
|
5448 |
+
"node_modules/videojs-font": {
|
5449 |
+
"version": "4.2.0",
|
5450 |
+
"resolved": "https://registry.npmjs.org/videojs-font/-/videojs-font-4.2.0.tgz",
|
5451 |
+
"integrity": "sha512-YPq+wiKoGy2/M7ccjmlvwi58z2xsykkkfNMyIg4xb7EZQQNwB71hcSsB3o75CqQV7/y5lXkXhI/rsGAS7jfEmQ=="
|
5452 |
+
},
|
5453 |
+
"node_modules/videojs-vtt.js": {
|
5454 |
+
"version": "0.15.5",
|
5455 |
+
"resolved": "https://registry.npmjs.org/videojs-vtt.js/-/videojs-vtt.js-0.15.5.tgz",
|
5456 |
+
"integrity": "sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==",
|
5457 |
+
"dependencies": {
|
5458 |
+
"global": "^4.3.1"
|
5459 |
+
}
|
5460 |
+
},
|
5461 |
"node_modules/which": {
|
5462 |
"version": "2.0.2",
|
5463 |
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
frontend/package.json
CHANGED
@@ -18,7 +18,8 @@
|
|
18 |
"next": "14.2.5",
|
19 |
"react": "^18",
|
20 |
"react-dom": "^18",
|
21 |
-
"sharp": "^0.33.5"
|
|
|
22 |
},
|
23 |
"devDependencies": {
|
24 |
"eslint": "^8",
|
|
|
18 |
"next": "14.2.5",
|
19 |
"react": "^18",
|
20 |
"react-dom": "^18",
|
21 |
+
"sharp": "^0.33.5",
|
22 |
+
"video.js": "^8.17.4"
|
23 |
},
|
24 |
"devDependencies": {
|
25 |
"eslint": "^8",
|
frontend/src/app/player/movie/[title]/page.js
CHANGED
@@ -1,6 +1,7 @@
|
|
1 |
"use client";
|
2 |
import apiClient from "@/api/apiClient";
|
3 |
import { useEffect, useState } from "react";
|
|
|
4 |
|
5 |
export default function FilmPlayer({ params }) {
|
6 |
const title = decodeURIComponent(params.title);
|
@@ -117,12 +118,7 @@ export default function FilmPlayer({ params }) {
|
|
117 |
</div>
|
118 |
) : (
|
119 |
videoUrl && (
|
120 |
-
|
121 |
-
<video controls>
|
122 |
-
<source src={videoUrl} type="video/mp4" />
|
123 |
-
Your browser does not support the video tag.
|
124 |
-
</video>
|
125 |
-
</div>
|
126 |
)
|
127 |
)}
|
128 |
<style jsx>{`
|
|
|
1 |
"use client";
|
2 |
import apiClient from "@/api/apiClient";
|
3 |
import { useEffect, useState } from "react";
|
4 |
+
import MoviePlayer from "@/components/moviePlayer";
|
5 |
|
6 |
export default function FilmPlayer({ params }) {
|
7 |
const title = decodeURIComponent(params.title);
|
|
|
118 |
</div>
|
119 |
) : (
|
120 |
videoUrl && (
|
121 |
+
<MoviePlayer videoUrl={videoUrl} title={metadata.title}/>
|
|
|
|
|
|
|
|
|
|
|
122 |
)
|
123 |
)}
|
124 |
<style jsx>{`
|
frontend/src/components/MoviePlayer.css
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.video-player-container {
|
2 |
+
max-width: 900px;
|
3 |
+
margin: auto;
|
4 |
+
background: rgba(0, 0, 0, 0.8);
|
5 |
+
padding: 20px;
|
6 |
+
border-radius: 12px;
|
7 |
+
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.5);
|
8 |
+
}
|
9 |
+
.video-title {
|
10 |
+
color: white;
|
11 |
+
margin-bottom: 15px;
|
12 |
+
font-size: 24px;
|
13 |
+
}
|
14 |
+
.controls {
|
15 |
+
display: flex;
|
16 |
+
justify-content: space-between;
|
17 |
+
margin-top: 10px;
|
18 |
+
}
|
19 |
+
.play-pause-btn, .control-btn {
|
20 |
+
padding: 10px 15px;
|
21 |
+
cursor: pointer;
|
22 |
+
background: #e50914;
|
23 |
+
color: white;
|
24 |
+
border: none;
|
25 |
+
border-radius: 5px;
|
26 |
+
font-size: 16px;
|
27 |
+
transition: background 0.3s;
|
28 |
+
}
|
29 |
+
.play-pause-btn:hover, .control-btn:hover {
|
30 |
+
background: #f40612;
|
31 |
+
}
|
32 |
+
.video-element {
|
33 |
+
width: 100%;
|
34 |
+
height: auto;
|
35 |
+
border-radius: 8px;
|
36 |
+
outline: none;
|
37 |
+
}
|
frontend/src/components/MoviePlayer.js
ADDED
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"use client";
|
2 |
+
import { useEffect, useRef, useState } from "react";
|
3 |
+
import './MoviePlayer.css';
|
4 |
+
|
5 |
+
export default function MoviePlayer({ videoUrl, title }) {
|
6 |
+
const videoRef = useRef(null);
|
7 |
+
const [isPlaying, setIsPlaying] = useState(false);
|
8 |
+
|
9 |
+
useEffect(() => {
|
10 |
+
const videoElement = videoRef.current;
|
11 |
+
|
12 |
+
const handlePlay = () => setIsPlaying(true);
|
13 |
+
const handlePause = () => setIsPlaying(false);
|
14 |
+
|
15 |
+
videoElement.addEventListener("play", handlePlay);
|
16 |
+
videoElement.addEventListener("pause", handlePause);
|
17 |
+
|
18 |
+
return () => {
|
19 |
+
videoElement.removeEventListener("play", handlePlay);
|
20 |
+
videoElement.removeEventListener("pause", handlePause);
|
21 |
+
};
|
22 |
+
}, []);
|
23 |
+
|
24 |
+
const handleFastForward = () => {
|
25 |
+
if (videoRef.current) {
|
26 |
+
videoRef.current.currentTime = Math.min(videoRef.current.duration, videoRef.current.currentTime + 10);
|
27 |
+
}
|
28 |
+
};
|
29 |
+
|
30 |
+
const handleRewind = () => {
|
31 |
+
if (videoRef.current) {
|
32 |
+
videoRef.current.currentTime = Math.max(0, videoRef.current.currentTime - 10);
|
33 |
+
}
|
34 |
+
};
|
35 |
+
|
36 |
+
const togglePlayPause = () => {
|
37 |
+
if (isPlaying) {
|
38 |
+
videoRef.current.pause();
|
39 |
+
} else {
|
40 |
+
videoRef.current.play();
|
41 |
+
}
|
42 |
+
};
|
43 |
+
|
44 |
+
return (
|
45 |
+
<div className="video-player-container">
|
46 |
+
<h2 className="video-title">{title}</h2>
|
47 |
+
<video
|
48 |
+
ref={videoRef}
|
49 |
+
className="video-element"
|
50 |
+
controls={false}
|
51 |
+
preload="auto"
|
52 |
+
src={videoUrl}
|
53 |
+
>
|
54 |
+
<track
|
55 |
+
kind="subtitles"
|
56 |
+
label="English"
|
57 |
+
srLang="en"
|
58 |
+
src="path/to/your/subtitles.vtt" // Replace with actual subtitles URL
|
59 |
+
/>
|
60 |
+
Your browser does not support the video tag.
|
61 |
+
</video>
|
62 |
+
<div className="controls">
|
63 |
+
<button onClick={togglePlayPause} className="play-pause-btn">
|
64 |
+
{isPlaying ? '❚❚ Pause' : '► Play'}
|
65 |
+
</button>
|
66 |
+
<button onClick={handleRewind} className="control-btn" disabled={!isPlaying}>⏪ 10s</button>
|
67 |
+
<button onClick={handleFastForward} className="control-btn" disabled={!isPlaying}>⏩ 10s</button>
|
68 |
+
</div>
|
69 |
+
</div>
|
70 |
+
);
|
71 |
+
}
|