diff --git a/src/backend/extension/messaging.ts b/src/backend/extension/messaging.ts index c280f9bd..bf0e3253 100644 --- a/src/backend/extension/messaging.ts +++ b/src/backend/extension/messaging.ts @@ -9,6 +9,7 @@ import { ExtensionMakeRequestResponse } from "@/backend/extension/plasmo"; export const RULE_IDS = { PREPARE_STREAM: 1, SET_DOMAINS_HLS: 2, + SET_DOMAINS_HLS_AUDIO: 3, }; // for some reason, about 500 ms is needed after diff --git a/src/components/player/display/base.ts b/src/components/player/display/base.ts index 8e155f69..8322b82b 100644 --- a/src/components/player/display/base.ts +++ b/src/components/player/display/base.ts @@ -191,6 +191,21 @@ export function makeVideoElementDisplayInterface(): DisplayInterface { }, }); }); + hls.on(Hls.Events.AUDIO_TRACK_LOADED, async (_, data) => { + const chunkUrlsDomains = data.details.fragments.map( + (v) => new URL(v.url).hostname, + ); + const chunkUrls = [...new Set(chunkUrlsDomains)]; + + await setDomainRule({ + ruleId: RULE_IDS.SET_DOMAINS_HLS_AUDIO, + targetDomains: chunkUrls, + requestHeaders: { + ...src.preferredHeaders, + ...src.headers, + }, + }); + }); } }); hls.on(Hls.Events.LEVEL_SWITCHED, () => {