From c8120b6bad1194cc2e5814e6ca1686491491c519 Mon Sep 17 00:00:00 2001 From: srgooglo Date: Tue, 24 Jun 2025 20:31:34 +0200 Subject: [PATCH] Remove Shaka decoder and related exports --- .../src/pages/tv/live/[id]/decoders/index.js | 1 - .../src/pages/tv/live/[id]/decoders/shaka.js | 100 ------------------ 2 files changed, 101 deletions(-) delete mode 100644 packages/app/src/pages/tv/live/[id]/decoders/shaka.js diff --git a/packages/app/src/pages/tv/live/[id]/decoders/index.js b/packages/app/src/pages/tv/live/[id]/decoders/index.js index fd2669a3..ab7b4888 100644 --- a/packages/app/src/pages/tv/live/[id]/decoders/index.js +++ b/packages/app/src/pages/tv/live/[id]/decoders/index.js @@ -1,2 +1 @@ export { default as hls } from "./hls" -export { default as shaka } from "./shaka" diff --git a/packages/app/src/pages/tv/live/[id]/decoders/shaka.js b/packages/app/src/pages/tv/live/[id]/decoders/shaka.js deleted file mode 100644 index 9d5e79dd..00000000 --- a/packages/app/src/pages/tv/live/[id]/decoders/shaka.js +++ /dev/null @@ -1,100 +0,0 @@ -import shaka from "shaka-player" - -export default async (player, sources = {}, options = {}) => { - if (!player) { - console.error("[Shaka] player is not defined") - return false - } - - if (!sources.hls) { - console.error("[Shaka] an hls source is not provided") - return false - } - - let source = sources.hls - - // Initialize shaka player - const shakaInstance = new shaka.Player(player) - - // Helper function to sync to live edge - const syncToLive = () => { - if (shakaInstance.isLive()) { - const end = shakaInstance.seekRange().end - player.currentTime = end - } - } - - // Configure for low-latency HLS - shakaInstance.configure({ - streaming: { - lowLatencyMode: true, - inaccurateManifestTolerance: 0, - rebufferingGoal: 0.01, - bufferingGoal: 0.1, - bufferBehind: 30, - startAtSegmentBoundary: false, - durationBackoff: 0.2, - }, - }) - - // Add request filter for authentication if token is provided - if (options.authToken) { - shakaInstance - .getNetworkingEngine() - .registerRequestFilter((type, request) => { - request.headers = { - ...request.headers, - Authorization: `Bearer ${options.authToken}`, - } - }) - source += `?token=${options.authToken}` - } - - console.log("[Shaka] Instance options >", options) - console.log(`[Shaka] Loading source [${source}]`) - - // Error handling - shakaInstance.addEventListener("error", (error) => { - console.error("[Shaka] Error", error) - }) - - // Buffer state monitoring - player.addEventListener("waiting", () => { - console.log("[Shaka] Buffer underrun") - }) - - // Handle stream end - player.addEventListener("ended", () => { - console.log("[Shaka] Stream ended") - if (typeof options.onSourceEnd === "function") { - options.onSourceEnd() - } - }) - - try { - await shakaInstance.load(source) - console.log("[Shaka] Stream loaded successfully") - - const tracks = shakaInstance.getVariantTracks() - console.log("[Shaka] Available qualities >", tracks) - } catch (error) { - console.error("[Shaka] Error loading stream:", error) - } - - player.addEventListener("play", () => { - console.log("[SHAKA] Syncing to last position") - syncToLive() - }) - - // Add destroy method for cleanup - shakaInstance._destroy = () => { - try { - shakaInstance.unload() - shakaInstance.destroy() - } catch (error) { - console.error("[Shaka] Error during cleanup:", error) - } - } - - return shakaInstance -}