From 0fd7535e1f95584a383f0a020e4a53abeef3814d Mon Sep 17 00:00:00 2001 From: PikachuEXE Date: Wed, 17 Sep 2025 09:27:08 +0800 Subject: [PATCH 01/17] Local API: Implement SABR for VODs --- _scripts/webpack.web.config.js | 5 +- package.json | 1 + .../ExperimentalSettings.vue | 26 +- src/renderer/components/FtToast/FtToast.vue | 20 +- .../ft-shaka-video-player.js | 353 +++++--- .../ft-shaka-video-player.vue | 4 +- src/renderer/helpers/api/local.js | 144 ++-- src/renderer/helpers/player/EbmlParser.js | 276 ++++++ .../helpers/player/Mp4SegmentIndexParser.js | 178 ++++ .../helpers/player/SabrManifestParser.js | 712 ++++++++++++++++ .../helpers/player/SabrSchemePlugin.js | 797 ++++++++++++++++++ .../helpers/player/WebmSegmentIndexParser.js | 338 ++++++++ src/renderer/helpers/player/utils.js | 2 +- src/renderer/helpers/utils.js | 2 +- src/renderer/store/modules/settings.js | 1 + src/renderer/views/Watch/Watch.js | 211 ++++- src/renderer/views/Watch/Watch.vue | 3 + yarn.lock | 7 + 18 files changed, 2862 insertions(+), 218 deletions(-) create mode 100644 src/renderer/helpers/player/EbmlParser.js create mode 100644 src/renderer/helpers/player/Mp4SegmentIndexParser.js create mode 100644 src/renderer/helpers/player/SabrManifestParser.js create mode 100644 src/renderer/helpers/player/SabrSchemePlugin.js create mode 100644 src/renderer/helpers/player/WebmSegmentIndexParser.js diff --git a/_scripts/webpack.web.config.js b/_scripts/webpack.web.config.js index 664bc63e446fc..2d98325def716 100644 --- a/_scripts/webpack.web.config.js +++ b/_scripts/webpack.web.config.js @@ -31,7 +31,8 @@ const config = { filename: '[name].js', }, externals: { - 'youtubei.js': '{}' + 'youtubei.js': '{}', + googlevideo: '{}' }, module: { rules: [ @@ -131,7 +132,7 @@ const config = { 'process.env.SWIPER_VERSION': `'${swiperVersion}'` }), new webpack.ProvidePlugin({ - process: 'process/browser' + process: 'process/browser.js' }), new HtmlWebpackPlugin({ excludeChunks: ['processTaskWorker'], diff --git a/package.json b/package.json index 63f77ba95b962..251a56e358e91 100644 --- a/package.json +++ b/package.json @@ -63,6 +63,7 @@ "autolinker": "^4.1.5", "bgutils-js": "^3.2.0", "electron-context-menu": "^4.1.1", + "googlevideo": "^4.0.4", "marked": "^16.3.0", "portal-vue": "^2.1.7", "process": "^0.11.10", diff --git a/src/renderer/components/ExperimentalSettings/ExperimentalSettings.vue b/src/renderer/components/ExperimentalSettings/ExperimentalSettings.vue index 1e6a2bfd73db2..82a98945bf139 100644 --- a/src/renderer/components/ExperimentalSettings/ExperimentalSettings.vue +++ b/src/renderer/components/ExperimentalSettings/ExperimentalSettings.vue @@ -16,6 +16,16 @@ @change="handleRestartPrompt" /> + + +