prismcast 1.9.0 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app.d.ts +1 -1
- package/dist/app.js +27 -9
- package/dist/app.js.map +1 -1
- package/dist/browser/cdp.js +7 -7
- package/dist/browser/cdp.js.map +1 -1
- package/dist/browser/channelSelection.d.ts +41 -11
- package/dist/browser/channelSelection.js +75 -24
- package/dist/browser/channelSelection.js.map +1 -1
- package/dist/browser/display.d.ts +1 -1
- package/dist/browser/index.d.ts +8 -8
- package/dist/browser/index.js +42 -43
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/login.d.ts +2 -2
- package/dist/browser/login.js +1 -1
- package/dist/browser/manifestInterceptor.d.ts +77 -0
- package/dist/browser/manifestInterceptor.js +323 -0
- package/dist/browser/manifestInterceptor.js.map +1 -0
- package/dist/browser/precaching.js +4 -4
- package/dist/browser/tuning/comcastPolymer.d.ts +1 -1
- package/dist/browser/tuning/cox.d.ts +1 -1
- package/dist/browser/tuning/directv.d.ts +1 -1
- package/dist/browser/tuning/directv.js +61 -62
- package/dist/browser/tuning/directv.js.map +1 -1
- package/dist/browser/tuning/fox.d.ts +1 -1
- package/dist/browser/tuning/fox.js +171 -14
- package/dist/browser/tuning/fox.js.map +1 -1
- package/dist/browser/tuning/hbo.d.ts +1 -1
- package/dist/browser/tuning/hbo.js +6 -6
- package/dist/browser/tuning/hbo.js.map +1 -1
- package/dist/browser/tuning/hulu.d.ts +1 -1
- package/dist/browser/tuning/hulu.js +117 -110
- package/dist/browser/tuning/hulu.js.map +1 -1
- package/dist/browser/tuning/shared.d.ts +3 -3
- package/dist/browser/tuning/shared.js +5 -5
- package/dist/browser/tuning/sling.d.ts +1 -1
- package/dist/browser/tuning/sling.js +28 -28
- package/dist/browser/tuning/sling.js.map +1 -1
- package/dist/browser/tuning/spectrum.d.ts +1 -1
- package/dist/browser/tuning/spectrum.js +21 -22
- package/dist/browser/tuning/spectrum.js.map +1 -1
- package/dist/browser/tuning/thumbnailRow.d.ts +1 -1
- package/dist/browser/tuning/thumbnailRow.js +1 -1
- package/dist/browser/tuning/tileClick.d.ts +1 -1
- package/dist/browser/tuning/tileClick.js +5 -5
- package/dist/browser/tuning/xfinity.d.ts +1 -1
- package/dist/browser/tuning/youtubeTv.d.ts +1 -1
- package/dist/browser/tuning/youtubeTv.js +17 -18
- package/dist/browser/tuning/youtubeTv.js.map +1 -1
- package/dist/browser/video.d.ts +20 -6
- package/dist/browser/video.js +30 -38
- package/dist/browser/video.js.map +1 -1
- package/dist/channels/index.d.ts +1 -2
- package/dist/channels/index.js +73 -40
- package/dist/channels/index.js.map +1 -1
- package/dist/config/channelForm.d.ts +58 -0
- package/dist/config/channelForm.js +129 -0
- package/dist/config/channelForm.js.map +1 -0
- package/dist/config/consistencyProbe.d.ts +7 -0
- package/dist/config/consistencyProbe.js +143 -0
- package/dist/config/consistencyProbe.js.map +1 -0
- package/dist/config/health.d.ts +4 -3
- package/dist/config/health.js +75 -62
- package/dist/config/health.js.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.js +19 -12
- package/dist/config/index.js.map +1 -1
- package/dist/config/paths.d.ts +9 -3
- package/dist/config/paths.js +12 -4
- package/dist/config/paths.js.map +1 -1
- package/dist/config/persistence.context.d.ts +8 -0
- package/dist/config/persistence.context.js +30 -0
- package/dist/config/persistence.context.js.map +1 -0
- package/dist/config/persistence.d.ts +110 -12
- package/dist/config/persistence.js +351 -32
- package/dist/config/persistence.js.map +1 -1
- package/dist/config/presets.d.ts +14 -4
- package/dist/config/presets.js +84 -75
- package/dist/config/presets.js.map +1 -1
- package/dist/config/profiles.d.ts +2 -2
- package/dist/config/profiles.js +7 -9
- package/dist/config/profiles.js.map +1 -1
- package/dist/config/servicePacks.d.ts +2 -2
- package/dist/config/servicePacks.js +28 -28
- package/dist/config/servicePacks.js.map +1 -1
- package/dist/config/services.d.ts +62 -36
- package/dist/config/services.js +150 -136
- package/dist/config/services.js.map +1 -1
- package/dist/config/sites.d.ts +3 -3
- package/dist/config/sites.js +16 -16
- package/dist/config/sites.js.map +1 -1
- package/dist/config/userChannels.d.ts +500 -41
- package/dist/config/userChannels.js +1201 -312
- package/dist/config/userChannels.js.map +1 -1
- package/dist/config/userConfig.d.ts +103 -10
- package/dist/config/userConfig.js +277 -117
- package/dist/config/userConfig.js.map +1 -1
- package/dist/config/userProfiles.d.ts +4 -2
- package/dist/config/userProfiles.js +72 -26
- package/dist/config/userProfiles.js.map +1 -1
- package/dist/hdhr/channelMap.js +8 -11
- package/dist/hdhr/channelMap.js.map +1 -1
- package/dist/hdhr/deviceId.js +10 -9
- package/dist/hdhr/deviceId.js.map +1 -1
- package/dist/hdhr/discover.js +4 -5
- package/dist/hdhr/discover.js.map +1 -1
- package/dist/hdhr/index.js +6 -10
- package/dist/hdhr/index.js.map +1 -1
- package/dist/index.js +12 -12
- package/dist/index.js.map +1 -1
- package/dist/native/codecInference.d.ts +44 -0
- package/dist/native/codecInference.js +327 -0
- package/dist/native/codecInference.js.map +1 -0
- package/dist/native/decrypt.d.ts +1 -1
- package/dist/native/index.d.ts +5 -5
- package/dist/native/index.js +42 -64
- package/dist/native/index.js.map +1 -1
- package/dist/native/probe.d.ts +27 -9
- package/dist/native/probe.js +158 -67
- package/dist/native/probe.js.map +1 -1
- package/dist/native/proxy.d.ts +4 -2
- package/dist/native/proxy.js +52 -49
- package/dist/native/proxy.js.map +1 -1
- package/dist/native/tokenExpiry.d.ts +22 -0
- package/dist/native/tokenExpiry.js +153 -0
- package/dist/native/tokenExpiry.js.map +1 -0
- package/dist/routes/auth.js +6 -10
- package/dist/routes/auth.js.map +1 -1
- package/dist/routes/components.js +2 -2
- package/dist/routes/components.js.map +1 -1
- package/dist/routes/config/channels/endpoints/browse.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/browse.js +195 -0
- package/dist/routes/config/channels/endpoints/browse.js.map +1 -0
- package/dist/routes/config/channels/endpoints/bulk.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/bulk.js +128 -0
- package/dist/routes/config/channels/endpoints/bulk.js.map +1 -0
- package/dist/routes/config/channels/endpoints/crud.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/crud.js +504 -0
- package/dist/routes/config/channels/endpoints/crud.js.map +1 -0
- package/dist/routes/config/channels/endpoints/importExport.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/importExport.js +131 -0
- package/dist/routes/config/channels/endpoints/importExport.js.map +1 -0
- package/dist/routes/config/channels/endpoints/predefined.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/predefined.js +78 -0
- package/dist/routes/config/channels/endpoints/predefined.js.map +1 -0
- package/dist/routes/config/channels/endpoints/prefs.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/prefs.js +58 -0
- package/dist/routes/config/channels/endpoints/prefs.js.map +1 -0
- package/dist/routes/config/channels/endpoints/service.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/service.js +149 -0
- package/dist/routes/config/channels/endpoints/service.js.map +1 -0
- package/dist/routes/config/channels/endpoints/tags.d.ts +6 -0
- package/dist/routes/config/channels/endpoints/tags.js +185 -0
- package/dist/routes/config/channels/endpoints/tags.js.map +1 -0
- package/dist/routes/config/channels/http/handler.d.ts +10 -0
- package/dist/routes/config/channels/http/handler.js +20 -0
- package/dist/routes/config/channels/http/handler.js.map +1 -0
- package/dist/routes/config/channels/http/playlistHint.d.ts +25 -0
- package/dist/routes/config/channels/http/playlistHint.js +40 -0
- package/dist/routes/config/channels/http/playlistHint.js.map +1 -0
- package/dist/routes/config/channels/http/serviceWarning.d.ts +10 -0
- package/dist/routes/config/channels/http/serviceWarning.js +28 -0
- package/dist/routes/config/channels/http/serviceWarning.js.map +1 -0
- package/dist/routes/config/channels/index.d.ts +3 -3
- package/dist/routes/config/channels/index.js +1 -1
- package/dist/routes/config/channels/index.js.map +1 -1
- package/dist/routes/config/channels/{routes.d.ts → setup.d.ts} +1 -1
- package/dist/routes/config/channels/setup.js +23 -0
- package/dist/routes/config/channels/setup.js.map +1 -0
- package/dist/routes/config/channels/table.d.ts +9 -9
- package/dist/routes/config/channels/table.js +124 -76
- package/dist/routes/config/channels/table.js.map +1 -1
- package/dist/routes/config/http/envelope.d.ts +111 -0
- package/dist/routes/config/http/envelope.js +103 -0
- package/dist/routes/config/http/envelope.js.map +1 -0
- package/dist/routes/config/index.d.ts +9 -9
- package/dist/routes/config/index.js +2 -2
- package/dist/routes/config/index.js.map +1 -1
- package/dist/routes/config/services.js +69 -68
- package/dist/routes/config/services.js.map +1 -1
- package/dist/routes/config/settings.d.ts +1 -1
- package/dist/routes/config/settings.js +45 -38
- package/dist/routes/config/settings.js.map +1 -1
- package/dist/routes/debug.js +12 -11
- package/dist/routes/debug.js.map +1 -1
- package/dist/routes/icons.js +2 -2
- package/dist/routes/icons.js.map +1 -1
- package/dist/routes/logs.js +19 -30
- package/dist/routes/logs.js.map +1 -1
- package/dist/routes/mpegts.js +1 -1
- package/dist/routes/playlist.d.ts +1 -1
- package/dist/routes/playlist.js +37 -26
- package/dist/routes/playlist.js.map +1 -1
- package/dist/routes/root/content.js +27 -6
- package/dist/routes/root/content.js.map +1 -1
- package/dist/routes/root/index.js +2 -5
- package/dist/routes/root/index.js.map +1 -1
- package/dist/routes/root/scripts/channels.js +16 -16
- package/dist/routes/root/scripts/channels.js.map +1 -1
- package/dist/routes/root/scripts/config.js +59 -59
- package/dist/routes/root/scripts/config.js.map +1 -1
- package/dist/routes/root/scripts/index.d.ts +4 -4
- package/dist/routes/root/scripts/shared.js +24 -10
- package/dist/routes/root/scripts/shared.js.map +1 -1
- package/dist/routes/root/scripts/status.d.ts +4 -0
- package/dist/routes/root/scripts/status.handlers.d.ts +182 -0
- package/dist/routes/root/scripts/status.handlers.js +713 -0
- package/dist/routes/root/scripts/status.handlers.js.map +1 -0
- package/dist/routes/root/scripts/status.js +86 -488
- package/dist/routes/root/scripts/status.js.map +1 -1
- package/dist/routes/root/styles.js +5 -5
- package/dist/routes/services.js +18 -15
- package/dist/routes/services.js.map +1 -1
- package/dist/routes/sse.d.ts +16 -0
- package/dist/routes/sse.js +29 -0
- package/dist/routes/sse.js.map +1 -0
- package/dist/routes/streams.js +10 -23
- package/dist/routes/streams.js.map +1 -1
- package/dist/routes/ui.d.ts +2 -2
- package/dist/routes/upgrade.js +6 -7
- package/dist/routes/upgrade.js.map +1 -1
- package/dist/service/commands.context.d.ts +6 -0
- package/dist/service/commands.context.js +47 -0
- package/dist/service/commands.context.js.map +1 -0
- package/dist/service/commands.d.ts +53 -8
- package/dist/service/commands.js +171 -188
- package/dist/service/commands.js.map +1 -1
- package/dist/service/generators.context.d.ts +6 -0
- package/dist/service/generators.context.js +45 -0
- package/dist/service/generators.context.js.map +1 -0
- package/dist/service/generators.d.ts +56 -16
- package/dist/service/generators.js +499 -383
- package/dist/service/generators.js.map +1 -1
- package/dist/service/index.d.ts +2 -2
- package/dist/streaming/clients.d.ts +2 -2
- package/dist/streaming/clients.js +2 -2
- package/dist/streaming/codec.d.ts +2 -2
- package/dist/streaming/codec.js +0 -1
- package/dist/streaming/codec.js.map +1 -1
- package/dist/streaming/fmp4Segmenter.d.ts +2 -2
- package/dist/streaming/fmp4Segmenter.js +12 -12
- package/dist/streaming/hls.d.ts +3 -3
- package/dist/streaming/hls.js +81 -70
- package/dist/streaming/hls.js.map +1 -1
- package/dist/streaming/hlsResume.d.ts +3 -3
- package/dist/streaming/hlsResume.js +5 -5
- package/dist/streaming/hlsSegments.d.ts +5 -2
- package/dist/streaming/hlsSegments.js +14 -9
- package/dist/streaming/hlsSegments.js.map +1 -1
- package/dist/streaming/monitor.d.ts +12 -12
- package/dist/streaming/monitor.js +80 -54
- package/dist/streaming/monitor.js.map +1 -1
- package/dist/streaming/mp4Parser.d.ts +34 -4
- package/dist/streaming/mp4Parser.js +111 -29
- package/dist/streaming/mp4Parser.js.map +1 -1
- package/dist/streaming/mpegts.d.ts +1 -1
- package/dist/streaming/mpegts.js +13 -10
- package/dist/streaming/mpegts.js.map +1 -1
- package/dist/streaming/playlistBuilder.d.ts +1 -1
- package/dist/streaming/playlistBuilder.js +2 -2
- package/dist/streaming/preroll.d.ts +9 -9
- package/dist/streaming/preroll.js +39 -41
- package/dist/streaming/preroll.js.map +1 -1
- package/dist/streaming/pretune.js +4 -4
- package/dist/streaming/pretune.js.map +1 -1
- package/dist/streaming/recovery.d.ts +3 -3
- package/dist/streaming/recovery.js +4 -4
- package/dist/streaming/registry.d.ts +6 -6
- package/dist/streaming/setup.d.ts +9 -8
- package/dist/streaming/setup.js +97 -49
- package/dist/streaming/setup.js.map +1 -1
- package/dist/streaming/showInfo.d.ts +9 -3
- package/dist/streaming/showInfo.js +26 -18
- package/dist/streaming/showInfo.js.map +1 -1
- package/dist/streaming/statusEmitter.d.ts +4 -4
- package/dist/streaming/statusEmitter.js +2 -2
- package/dist/types/channels.d.ts +133 -34
- package/dist/types/channels.js +39 -1
- package/dist/types/channels.js.map +1 -1
- package/dist/types/config.d.ts +20 -1
- package/dist/types/index.d.ts +9 -8
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/profiles.d.ts +5 -4
- package/dist/types/selection.d.ts +48 -4
- package/dist/types/streaming.d.ts +1 -1
- package/dist/upgrade/commands.context.d.ts +6 -0
- package/dist/upgrade/commands.context.js +29 -0
- package/dist/upgrade/commands.context.js.map +1 -0
- package/dist/upgrade/commands.d.ts +29 -2
- package/dist/upgrade/commands.js +87 -134
- package/dist/upgrade/commands.js.map +1 -1
- package/dist/upgrade/detection.context.d.ts +6 -0
- package/dist/upgrade/detection.context.js +24 -0
- package/dist/upgrade/detection.context.js.map +1 -0
- package/dist/upgrade/detection.d.ts +140 -10
- package/dist/upgrade/detection.js +153 -66
- package/dist/upgrade/detection.js.map +1 -1
- package/dist/upgrade/index.d.ts +2 -2
- package/dist/utils/chromeFetch.d.ts +1 -1
- package/dist/utils/chromeFetch.js +1 -1
- package/dist/utils/clock.d.ts +14 -0
- package/dist/utils/clock.js +28 -0
- package/dist/utils/clock.js.map +1 -0
- package/dist/utils/debugFilter.d.ts +1 -1
- package/dist/utils/debugFilter.js +6 -4
- package/dist/utils/debugFilter.js.map +1 -1
- package/dist/utils/delay.d.ts +2 -3
- package/dist/utils/delay.js +10 -16
- package/dist/utils/delay.js.map +1 -1
- package/dist/utils/evaluate.js +12 -14
- package/dist/utils/evaluate.js.map +1 -1
- package/dist/utils/ffmpeg.context.d.ts +6 -0
- package/dist/utils/ffmpeg.context.js +31 -0
- package/dist/utils/ffmpeg.context.js.map +1 -0
- package/dist/utils/ffmpeg.d.ts +85 -29
- package/dist/utils/ffmpeg.js +126 -129
- package/dist/utils/ffmpeg.js.map +1 -1
- package/dist/utils/fileLogger.d.ts +18 -2
- package/dist/utils/fileLogger.js +58 -30
- package/dist/utils/fileLogger.js.map +1 -1
- package/dist/utils/format.d.ts +1 -1
- package/dist/utils/format.js +2 -2
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/html.js +1 -3
- package/dist/utils/html.js.map +1 -1
- package/dist/utils/index.d.ts +21 -20
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/logger.js +16 -20
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/m3u.d.ts +18 -3
- package/dist/utils/m3u.js +28 -14
- package/dist/utils/m3u.js.map +1 -1
- package/dist/utils/memo.d.ts +19 -0
- package/dist/utils/memo.js +53 -0
- package/dist/utils/memo.js.map +1 -0
- package/dist/utils/morganStream.js +2 -2
- package/dist/utils/morganStream.js.map +1 -1
- package/dist/utils/pid.d.ts +2 -2
- package/dist/utils/pid.js +2 -2
- package/dist/utils/platform.d.ts +1 -1
- package/dist/utils/platform.js +3 -3
- package/dist/utils/platform.js.map +1 -1
- package/dist/utils/retry.d.ts +2 -0
- package/dist/utils/retry.js +9 -7
- package/dist/utils/retry.js.map +1 -1
- package/dist/utils/sanitize.d.ts +2 -2
- package/dist/utils/sanitize.js +4 -4
- package/dist/utils/timing.d.ts +6 -3
- package/dist/utils/timing.js +10 -6
- package/dist/utils/timing.js.map +1 -1
- package/dist/utils/version.d.ts +3 -2
- package/dist/utils/version.js +14 -27
- package/dist/utils/version.js.map +1 -1
- package/package.json +13 -7
- package/dist/native/intercept.d.ts +0 -35
- package/dist/native/intercept.js +0 -181
- package/dist/native/intercept.js.map +0 -1
- package/dist/routes/config/channels/routes.js +0 -1505
- package/dist/routes/config/channels/routes.js.map +0 -1
package/dist/streaming/hls.js
CHANGED
|
@@ -12,7 +12,7 @@ import { emitCurrentSystemStatus, isLoginModeActive, unregisterManagedPage } fro
|
|
|
12
12
|
import { generatePrerollPlaylist, getPrerollCodec, getPrerollSegmentCount, isPrerollReady } from "./preroll.js";
|
|
13
13
|
import { getAllChannels, getChannelLogo, isPredefinedChannelDisabled } from "../config/userChannels.js";
|
|
14
14
|
import { getAudioPlaylist, getAudioSegment, getInitSegment, getPlaylist, getSegment, getVideoPlaylist, waitForPlaylist } from "./hlsSegments.js";
|
|
15
|
-
import { getAuthDomainForChannel, getResolvedChannel, getServiceTagForChannel, resolveServiceKey } from "../config/services.js";
|
|
15
|
+
import { getAuthDomainForChannel, getResolvedChannel, getServiceTagForChannel, isChannelAvailableByService, resolveServiceKey } from "../config/services.js";
|
|
16
16
|
import { getChannelStreamId, isTerminationInitiated, setChannelStreamId, terminateStream } from "./lifecycle.js";
|
|
17
17
|
import { markChannelFailure, markChannelSuccess } from "../config/health.js";
|
|
18
18
|
import { CONFIG } from "../config/index.js";
|
|
@@ -27,16 +27,16 @@ import { triggerShowNameUpdate } from "./showInfo.js";
|
|
|
27
27
|
/* This module handles HLS (HTTP Live Streaming) output using fMP4 (fragmented MP4) segments. HLS mode uses MP4/AAC capture from puppeteer-stream, which is then
|
|
28
28
|
* segmented natively without any external dependencies. The stream initialization flow has three phases:
|
|
29
29
|
*
|
|
30
|
-
* Phase 1
|
|
30
|
+
* Phase 1 - Registration (synchronous, in the request handler):
|
|
31
31
|
* The client requests a playlist. If no stream exists and preroll is available, a pending registry entry is registered immediately with a deferred preroll timer.
|
|
32
|
-
* The client receives a valid, playable playlist on the first request
|
|
32
|
+
* The client receives a valid, playable playlist on the first request - no blocking wait for the real stream. If preroll is unavailable, the request blocks until
|
|
33
33
|
* stream setup completes (fallback path).
|
|
34
34
|
*
|
|
35
|
-
* Phase 2
|
|
35
|
+
* Phase 2 - Browser setup (async, fire-and-forget from the request handler):
|
|
36
36
|
* setupStream() creates the browser page, navigates to the URL, initializes playback, and starts capture. This produces the StreamSetupResult with the capture
|
|
37
37
|
* stream, page, profile, and monitor. The pending registry entry is filled in with these references.
|
|
38
38
|
*
|
|
39
|
-
* Phase 3
|
|
39
|
+
* Phase 3 - Streaming pipeline (async, after browser setup):
|
|
40
40
|
* If the service's manifest is interceptable, native HLS streaming is attempted via startNativeProxy(). If native is viable, the capture pipeline is stopped and
|
|
41
41
|
* the proxy takes over. Otherwise, createCaptureSegmenter() creates the fMP4 segmenter and pipes the capture stream. When the first real playlist arrives
|
|
42
42
|
* (from either the segmenter or native proxy), the preroll timer is cancelled and the client receives live content on the next poll.
|
|
@@ -49,6 +49,37 @@ import { triggerShowNameUpdate } from "./showInfo.js";
|
|
|
49
49
|
// content directly. This ensures fast-tuning services (native HLS at 2-3s, most capture services at 4-7s) never see preroll, while slow services (Xfinity/Cox at
|
|
50
50
|
// 13-15s) get preroll content after the delay to prevent HTTP timeouts.
|
|
51
51
|
const PREROLL_DELAY_MS = 9_000;
|
|
52
|
+
/**
|
|
53
|
+
* Builds the onError/onStop callbacks for createFMP4Segmenter. Both callbacks share the same termination chain (skip-if-already-terminating guard, log error,
|
|
54
|
+
* terminate stream, emit current system status); the only differences between callsites are the log-message and termination-reason suffixes used to mark the
|
|
55
|
+
* post-tab-replacement scenario. Centralizing the shape prevents drift if the termination contract evolves.
|
|
56
|
+
* @param streamId - The numeric stream id.
|
|
57
|
+
* @param channelName - The channel name for log messages.
|
|
58
|
+
* @param options - Optional logSuffix appended to the log message; optional reasonSuffix appended to the termination reason. Both default to no suffix.
|
|
59
|
+
* @returns onError and onStop callbacks ready to spread into createFMP4Segmenter options.
|
|
60
|
+
*/
|
|
61
|
+
function buildSegmenterTerminationHandlers(streamId, channelName, options = {}) {
|
|
62
|
+
const logSfx = options.logSuffix ? " " + options.logSuffix : "";
|
|
63
|
+
const reasonSfx = options.reasonSuffix ? " " + options.reasonSuffix : "";
|
|
64
|
+
return {
|
|
65
|
+
onError: (error) => {
|
|
66
|
+
if (isTerminationInitiated(streamId)) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
LOG.error("Segmenter error" + logSfx + " for %s: %s.", channelName, formatError(error));
|
|
70
|
+
terminateStream(streamId, channelName, "stream processing error" + reasonSfx);
|
|
71
|
+
void emitCurrentSystemStatus();
|
|
72
|
+
},
|
|
73
|
+
onStop: () => {
|
|
74
|
+
if (isTerminationInitiated(streamId)) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
LOG.error("Segmenter stopped unexpectedly" + logSfx + " for %s.", channelName);
|
|
78
|
+
terminateStream(streamId, channelName, "stream ended unexpectedly" + reasonSfx);
|
|
79
|
+
void emitCurrentSystemStatus();
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
}
|
|
52
83
|
// Login mode error body used by both validateChannel() and handlePlayStream() to ensure consistent response format.
|
|
53
84
|
const LOGIN_MODE_BODY = { error: "Login in progress", message: "Please complete authentication before starting new streams." };
|
|
54
85
|
/**
|
|
@@ -77,10 +108,18 @@ export function validateChannel(channelName) {
|
|
|
77
108
|
LOG.warn("Service '%s' not found for channel '%s'. Using default service.", resolvedKey, channelName);
|
|
78
109
|
}
|
|
79
110
|
// Runtime check needed even though TypeScript thinks channel is always defined (Record indexing quirk).
|
|
80
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
81
111
|
if (!effectiveChannel) {
|
|
82
112
|
return { body: "Channel not found.", statusCode: 404, valid: false };
|
|
83
113
|
}
|
|
114
|
+
// Enforce the user's active service filter at the streaming boundary. A channel whose every variant tag is excluded by enabledServices is structurally hidden
|
|
115
|
+
// from the M3U playlist (built from getVisibleChannels), from the HDHomeRun lineup (iterates getAllChannels which filters through the same predicate), and
|
|
116
|
+
// from getAllChannels itself. Letting a stream request through here would diverge from those views: capture a browser tab for a service the user explicitly
|
|
117
|
+
// excluded, increment recovery budget on that service, and surface confusing logs for a channel the user cannot see. The predicate takes the canonical key
|
|
118
|
+
// (channelName here is the URL-supplied canonical, not the post-resolveServiceKey variant) and is the single source of truth for service-filter visibility -
|
|
119
|
+
// the same predicate already used by getVisibleChannels, the channel table renderer, and the bulk-action allowlist builders.
|
|
120
|
+
if (!isChannelAvailableByService(channelName)) {
|
|
121
|
+
return { body: "Channel not available.", statusCode: 404, valid: false };
|
|
122
|
+
}
|
|
84
123
|
// Block new stream requests while login mode is active. This prevents the browser from being disrupted during authentication.
|
|
85
124
|
if (isLoginModeActive()) {
|
|
86
125
|
return { body: LOGIN_MODE_BODY, statusCode: 503, valid: false };
|
|
@@ -124,7 +163,7 @@ export async function ensureChannelStream(channelName, req, res) {
|
|
|
124
163
|
if (streamId !== undefined) {
|
|
125
164
|
return streamId;
|
|
126
165
|
}
|
|
127
|
-
// No existing stream
|
|
166
|
+
// No existing stream - validate the channel and start a new one. Channel validation is only needed for new streams because existing streams were already validated
|
|
128
167
|
// at startup time.
|
|
129
168
|
const validation = validateChannel(channelName);
|
|
130
169
|
if (!validation.valid) {
|
|
@@ -136,7 +175,7 @@ export async function ensureChannelStream(channelName, req, res) {
|
|
|
136
175
|
const prerollCodec = getPrerollCodec();
|
|
137
176
|
if (isPrerollReady(prerollCodec)) {
|
|
138
177
|
// Check capacity before registering the pending entry. The pending entry occupies a registry slot, so registering it at max capacity would cause setupStream's
|
|
139
|
-
// capacity check to reject
|
|
178
|
+
// capacity check to reject - after we've already returned a preroll playlist to the client. By gating here, we can still send a proper 503 error response.
|
|
140
179
|
if (getStreamCount() >= CONFIG.streaming.maxConcurrentStreams) {
|
|
141
180
|
if (!reclaimIdleStream()) {
|
|
142
181
|
res.setHeader("Retry-After", "10");
|
|
@@ -153,7 +192,7 @@ export async function ensureChannelStream(channelName, req, res) {
|
|
|
153
192
|
channelName,
|
|
154
193
|
clientAddress,
|
|
155
194
|
numericStreamId: pending.numericStreamId,
|
|
156
|
-
profileOverride: req.query
|
|
195
|
+
profileOverride: req.query["profile"],
|
|
157
196
|
streamIdStr: pending.streamIdStr,
|
|
158
197
|
url: validation.channel.url
|
|
159
198
|
}).catch((error) => {
|
|
@@ -280,15 +319,15 @@ export function handleHLSVariantPlaylist(req, res) {
|
|
|
280
319
|
* @param res - Express response object.
|
|
281
320
|
*/
|
|
282
321
|
export async function handlePlayStream(req, res) {
|
|
283
|
-
const url = req.query
|
|
322
|
+
const url = req.query["url"]?.trim();
|
|
284
323
|
if (!url) {
|
|
285
324
|
res.status(400).send("The url query parameter is required.");
|
|
286
325
|
return;
|
|
287
326
|
}
|
|
288
|
-
const clickSelector = req.query
|
|
289
|
-
const clickToPlay = req.query
|
|
290
|
-
const profileOverride = req.query
|
|
291
|
-
const selector = req.query
|
|
327
|
+
const clickSelector = req.query["clickSelector"];
|
|
328
|
+
const clickToPlay = req.query["clickToPlay"] === "true";
|
|
329
|
+
const profileOverride = req.query["profile"];
|
|
330
|
+
const selector = req.query["selector"];
|
|
292
331
|
// Generate a deterministic synthetic key from the trimmed URL, profile, selector, clickToPlay, and clickSelector. Including these ensures that the same URL with
|
|
293
332
|
// different options produces separate streams. The newline delimiter is safe since URLs cannot contain literal newlines.
|
|
294
333
|
const channelName = "play-" + createHash("sha256").update(url + "\n" + (profileOverride ?? "") + "\n" + (selector ?? "") + "\n" + (clickToPlay ? "1" : "") + "\n" + (clickSelector ?? "")).digest("hex").slice(0, 8);
|
|
@@ -329,7 +368,7 @@ export async function handlePlayStream(req, res) {
|
|
|
329
368
|
}
|
|
330
369
|
// Response Helpers.
|
|
331
370
|
/**
|
|
332
|
-
* Sends the playlist for a stream. With the deferred preroll timer, the playlist may not be available immediately after stream registration
|
|
371
|
+
* Sends the playlist for a stream. With the deferred preroll timer, the playlist may not be available immediately after stream registration - it arrives when either
|
|
333
372
|
* the timer fires (seeding preroll) or the segmenter produces real content, whichever comes first. This function awaits the playlistReady promise to handle that
|
|
334
373
|
* window. For the blocking fallback path (no FFmpeg / no preroll), the playlist is guaranteed to exist because initializeStream blocks until the segmenter produces
|
|
335
374
|
* it. Returns 404 only if the stream was terminated or the playlist wait timed out.
|
|
@@ -354,7 +393,7 @@ async function sendPlaylistResponse(streamId, clientAddress, res) {
|
|
|
354
393
|
updateLastAccess(streamId);
|
|
355
394
|
registerClient(streamId, clientAddress, "hls");
|
|
356
395
|
// When still serving preroll, regenerate the progressive playlist on each poll so the sliding window advances based on elapsed wall-clock time. This simulates a
|
|
357
|
-
// live stream
|
|
396
|
+
// live stream - the client sees new segments appear on each poll and keeps playing without stalling. Once real content arrives, hasRealPlaylist becomes true and
|
|
358
397
|
// the segmenter's playlist takes over.
|
|
359
398
|
const stream = getStream(streamId);
|
|
360
399
|
if (stream && !stream.hls.hasRealPlaylist) {
|
|
@@ -404,7 +443,7 @@ function cleanupOrphanedSetup(segmenter) {
|
|
|
404
443
|
LOG.debug("streaming:setup", "Stream was terminated during setup. Stopping orphaned segmenter.");
|
|
405
444
|
segmenter.stop();
|
|
406
445
|
}
|
|
407
|
-
// Maps vertical resolution heights to standard display labels. Used by formatNativeQuality() to convert "1920x1080"
|
|
446
|
+
// Maps vertical resolution heights to standard display labels. Used by formatNativeQuality() to convert "1920x1080" -> "1080p".
|
|
408
447
|
const RESOLUTION_LABELS = { "1080": "1080p", "2160": "4K", "360": "360p", "480": "480p", "720": "720p" };
|
|
409
448
|
/**
|
|
410
449
|
* Formats the native HLS quality string for the "Streaming..." log line. Combines codec, bandwidth (as Mbps), and resolution (as standard label like "1080p")
|
|
@@ -425,7 +464,7 @@ function formatNativeQuality(bandwidth, codec, resolution) {
|
|
|
425
464
|
if (resolution) {
|
|
426
465
|
// Map the vertical resolution to a standard label. Parse the height from "WIDTHxHEIGHT" format.
|
|
427
466
|
const height = resolution.split("x")[1];
|
|
428
|
-
parts.push(RESOLUTION_LABELS[height] ?? resolution);
|
|
467
|
+
parts.push((height ? RESOLUTION_LABELS[height] : undefined) ?? resolution);
|
|
429
468
|
}
|
|
430
469
|
if (parts.length === 0) {
|
|
431
470
|
return "";
|
|
@@ -524,22 +563,7 @@ function createTabReplacementHandler(numericStreamId, streamId, channelName, url
|
|
|
524
563
|
// for monotonic baseMediaDecodeTime, and mark the first segment with a discontinuity tag so clients know the stream parameters may have changed.
|
|
525
564
|
const newSegmenter = createFMP4Segmenter({
|
|
526
565
|
initialTrackTimestamps: currentTrackTimestamps,
|
|
527
|
-
|
|
528
|
-
if (isTerminationInitiated(numericStreamId)) {
|
|
529
|
-
return;
|
|
530
|
-
}
|
|
531
|
-
LOG.error("Segmenter error after tab replacement for %s: %s.", channelName, formatError(error));
|
|
532
|
-
terminateStream(numericStreamId, channelName, "stream processing error after recovery");
|
|
533
|
-
void emitCurrentSystemStatus();
|
|
534
|
-
},
|
|
535
|
-
onStop: () => {
|
|
536
|
-
if (isTerminationInitiated(numericStreamId)) {
|
|
537
|
-
return;
|
|
538
|
-
}
|
|
539
|
-
LOG.error("Segmenter stopped unexpectedly after tab replacement for %s.", channelName);
|
|
540
|
-
terminateStream(numericStreamId, channelName, "stream ended unexpectedly after recovery");
|
|
541
|
-
void emitCurrentSystemStatus();
|
|
542
|
-
},
|
|
566
|
+
...buildSegmenterTerminationHandlers(numericStreamId, channelName, { logSuffix: "after tab replacement", reasonSuffix: "after recovery" }),
|
|
543
567
|
pendingDiscontinuity: true,
|
|
544
568
|
previousInitSegment: currentInitSegment,
|
|
545
569
|
priorSessionStats: currentSessionStats,
|
|
@@ -584,14 +608,14 @@ export async function initializeStream(options) {
|
|
|
584
608
|
return await completeStreamSetup({ ...options, numericStreamId, streamIdStr });
|
|
585
609
|
}
|
|
586
610
|
catch (error) {
|
|
587
|
-
// Skip logging
|
|
611
|
+
// Skip logging - callers (startHLSStream, handlePlayStream, handleMpegTsStream) handle the re-thrown error with their own error responses and logging.
|
|
588
612
|
handleSetupFailure(numericStreamId, channelName, channel, error, false);
|
|
589
613
|
throw error;
|
|
590
614
|
}
|
|
591
615
|
}
|
|
592
616
|
/**
|
|
593
617
|
* Registers a pending stream entry in the registry with deferred preroll. This is the synchronous Phase 1 of the two-phase stream initialization used by the HLS
|
|
594
|
-
* playlist handler. The pending entry has a real stream ID but no playlist yet
|
|
618
|
+
* playlist handler. The pending entry has a real stream ID but no playlist yet - the response is held until either the preroll timer fires (after PREROLL_DELAY_MS)
|
|
595
619
|
* or real content arrives from the segmenter/native proxy. This ensures that fast-tuning streams (native, most capture services) skip preroll entirely, while slow
|
|
596
620
|
* streams (Xfinity/Cox at 13-15s) get preroll content after the delay.
|
|
597
621
|
* @param channelName - The channel key for registration and deduplication.
|
|
@@ -607,10 +631,10 @@ function registerPendingStream(channelName, channel, clientAddress, req, codec)
|
|
|
607
631
|
// Derive the base URL from the request for absolute preroll segment URLs.
|
|
608
632
|
const protocol = req.protocol;
|
|
609
633
|
const forwardedHost = req.get("x-forwarded-host");
|
|
610
|
-
const host = forwardedHost ? forwardedHost.split(",")[0].trim() : req.get("host");
|
|
634
|
+
const host = forwardedHost ? (forwardedHost.split(",")[0] ?? "").trim() : req.get("host");
|
|
611
635
|
const fallbackHost = CONFIG.server.host + ":" + String(CONFIG.server.port);
|
|
612
636
|
const baseUrl = protocol + "://" + (host ?? fallbackHost);
|
|
613
|
-
// Create HLS state with a deferred preroll timer. The timer fires after PREROLL_DELAY_MS
|
|
637
|
+
// Create HLS state with a deferred preroll timer. The timer fires after PREROLL_DELAY_MS - if stream setup hasn't completed by then, preroll is seeded and the
|
|
614
638
|
// playlist response is unblocked. For resume streams, the preroll's MEDIA-SEQUENCE is offset by the saved segment index so it continues from the prior session's
|
|
615
639
|
// sequence range. The timer is cancelled by completeStreamSetup() when the segmenter or native proxy is created, preventing races.
|
|
616
640
|
const hls = createHLSState();
|
|
@@ -621,7 +645,7 @@ function registerPendingStream(channelName, channel, clientAddress, req, codec)
|
|
|
621
645
|
const streamStartTime = new Date();
|
|
622
646
|
if (isPrerollReady(codec)) {
|
|
623
647
|
// Set preroll metadata immediately at registration so the segmenter and native proxy can read it regardless of whether the deferred timer has fired. The segment
|
|
624
|
-
// count, codec, and base URL are structural properties of the preroll system
|
|
648
|
+
// count, codec, and base URL are structural properties of the preroll system - they determine segment index offsets, codec-aware URL paths, and composite playlist
|
|
625
649
|
// behavior. The timer controls only the client-facing timing (when the standalone preroll playlist begins serving). Decoupling these ensures correct behavior for
|
|
626
650
|
// fast-tune/slow-proxy scenarios (e.g., Fox native at 5s tune but 15s proxy first poll) where setup completes before the timer fires.
|
|
627
651
|
hls.prerollBaseUrl = baseUrl;
|
|
@@ -719,7 +743,8 @@ async function startNativeProxy(setup, numericStreamId, channelName, url, mpegTs
|
|
|
719
743
|
if (!setup.manifestInterception) {
|
|
720
744
|
return null;
|
|
721
745
|
}
|
|
722
|
-
setup.manifestInterception.
|
|
746
|
+
// The manifest interception was finalized and verified during setupStream(). By the time we get here, setup.manifestInterception.promise has already resolved
|
|
747
|
+
// (or is about to) with the URL setupStream verified. We just consume it.
|
|
723
748
|
// Read the preroll segment count from the pending entry to pass to the native coordinator. This value is set at registration time (not in the timer callback),
|
|
724
749
|
// so it's available regardless of whether the deferred preroll timer has fired. The proxy uses it for segment index offset. The base URL for composite playlists
|
|
725
750
|
// is read dynamically from the stream's HLS state at playlist generation time.
|
|
@@ -753,14 +778,14 @@ async function startNativeProxy(setup, numericStreamId, channelName, url, mpegTs
|
|
|
753
778
|
nativeResult.proxy.stop();
|
|
754
779
|
return null;
|
|
755
780
|
}
|
|
756
|
-
// Stop the capture pipeline
|
|
781
|
+
// Stop the capture pipeline - native streaming replaces it entirely.
|
|
757
782
|
if (!setup.rawCaptureStream.destroyed) {
|
|
758
783
|
setup.rawCaptureStream.destroy();
|
|
759
784
|
}
|
|
760
785
|
if (setup.ffmpegProcess) {
|
|
761
786
|
setup.ffmpegProcess.kill();
|
|
762
787
|
}
|
|
763
|
-
// Update the registry entry to reflect native mode. For streams with separate audio, clear preroll state
|
|
788
|
+
// Update the registry entry to reflect native mode. For streams with separate audio, clear preroll state - preroll is muxed video+audio and can't be
|
|
764
789
|
// split into separate renditions. For muxed-audio streams, preserve preroll state so the proxy can build composite playlists with preroll entries.
|
|
765
790
|
currentStream.ffmpegProcess = null;
|
|
766
791
|
currentStream.hls.hasAudio = nativeResult.hasAudio;
|
|
@@ -776,12 +801,12 @@ async function startNativeProxy(setup, numericStreamId, channelName, url, mpegTs
|
|
|
776
801
|
currentStream.nativeResolution = nativeResult.resolution;
|
|
777
802
|
currentStream.rawCaptureStream = null;
|
|
778
803
|
currentStream.streamingMode = "native";
|
|
779
|
-
// Start the native proxy. Signal init segment readiness immediately
|
|
804
|
+
// Start the native proxy. Signal init segment readiness immediately - native MPEG-TS segments carry their own PAT/PMT codec configuration in every
|
|
780
805
|
// segment, so there is no separate init segment to wait for. Without this, MPEG-TS clients block on waitForInitSegment() and time out before the proxy's
|
|
781
806
|
// first poll cycle completes.
|
|
782
807
|
nativeResult.proxy.start();
|
|
783
808
|
currentStream.hls.signalInitSegmentReady();
|
|
784
|
-
// Suppress audio on the browser page. The page stays alive for token refresh but the video element's audio is not part of the native stream
|
|
809
|
+
// Suppress audio on the browser page. The page stays alive for token refresh but the video element's audio is not part of the native stream - without
|
|
785
810
|
// suppression, it plays audibly on the local machine.
|
|
786
811
|
await suppressPageAudio(setup.page);
|
|
787
812
|
LOG.debug("native:coordinator", "Capture pipeline stopped for %s. Native proxy active.", channelName);
|
|
@@ -797,16 +822,16 @@ async function startNativeProxy(setup, numericStreamId, channelName, url, mpegTs
|
|
|
797
822
|
*/
|
|
798
823
|
function createCaptureSegmenter(setup, numericStreamId, channelName) {
|
|
799
824
|
// Peek at resume data from a previous shutdown without consuming it. The data is consumed (deleted) only after the segmenter is successfully created and
|
|
800
|
-
// stored in the registry. This ensures resume data survives if segmenter creation fails
|
|
825
|
+
// stored in the registry. This ensures resume data survives if segmenter creation fails - the next stream start retries with the same resume state instead
|
|
801
826
|
// of losing it and causing an HLS sequence reset.
|
|
802
827
|
const resumeData = peekResumeData(channelName);
|
|
803
828
|
const currentStream = getStream(numericStreamId);
|
|
804
829
|
const prerollSegmentCount = currentStream?.hls.prerollSegmentCount ?? 0;
|
|
805
830
|
// When preroll is active, use the snapshotted resume index (stored on HLS state at registration) so the segmenter's starting index is guaranteed to match
|
|
806
|
-
// the preroll playlist's MEDIA-SEQUENCE offset. When preroll is inactive, use the resume data directly
|
|
831
|
+
// the preroll playlist's MEDIA-SEQUENCE offset. When preroll is inactive, use the resume data directly - no preroll playlist to be consistent with.
|
|
807
832
|
const baseSegmentIndex = (prerollSegmentCount > 0) ? (currentStream?.hls.resumeSegmentIndex ?? 0) : (resumeData?.segmentIndex ?? 0);
|
|
808
833
|
// Create the fMP4 segmenter. The starting segment index accounts for both the resume offset and the preroll segment range. When preroll is active, the
|
|
809
|
-
// segmenter includes preroll entries in its sliding window via the compositor. The pending discontinuity at the preroll-to-real boundary is always needed
|
|
834
|
+
// segmenter includes preroll entries in its sliding window via the compositor. The pending discontinuity at the preroll-to-real boundary is always needed -
|
|
810
835
|
// previousInitSegment is only passed without preroll, because the preroll init segment differs from the real init and the discontinuity must not be
|
|
811
836
|
// suppressed by an init-match comparison against the prior session.
|
|
812
837
|
const segmenter = createFMP4Segmenter({
|
|
@@ -824,24 +849,7 @@ function createCaptureSegmenter(setup, numericStreamId, channelName) {
|
|
|
824
849
|
pendingDiscontinuity: true,
|
|
825
850
|
startingSegmentIndex: baseSegmentIndex + prerollSegmentCount
|
|
826
851
|
} : {}),
|
|
827
|
-
|
|
828
|
-
// Skip error handling if termination was already initiated.
|
|
829
|
-
if (isTerminationInitiated(numericStreamId)) {
|
|
830
|
-
return;
|
|
831
|
-
}
|
|
832
|
-
LOG.error("Segmenter error for %s: %s.", channelName, formatError(error));
|
|
833
|
-
terminateStream(numericStreamId, channelName, "stream processing error");
|
|
834
|
-
void emitCurrentSystemStatus();
|
|
835
|
-
},
|
|
836
|
-
onStop: () => {
|
|
837
|
-
// Skip handling if termination was already initiated.
|
|
838
|
-
if (isTerminationInitiated(numericStreamId)) {
|
|
839
|
-
return;
|
|
840
|
-
}
|
|
841
|
-
LOG.error("Segmenter stopped unexpectedly for %s.", channelName);
|
|
842
|
-
terminateStream(numericStreamId, channelName, "stream ended unexpectedly");
|
|
843
|
-
void emitCurrentSystemStatus();
|
|
844
|
-
},
|
|
852
|
+
...buildSegmenterTerminationHandlers(numericStreamId, channelName),
|
|
845
853
|
streamId: numericStreamId
|
|
846
854
|
});
|
|
847
855
|
// Pipe the capture stream to the segmenter.
|
|
@@ -873,7 +881,7 @@ function createCaptureSegmenter(setup, numericStreamId, channelName) {
|
|
|
873
881
|
*/
|
|
874
882
|
async function completeStreamSetup(options) {
|
|
875
883
|
const { channel, channelName, channelSelector, clickSelector, clickToPlay, mpegTsClient, numericStreamId, profileOverride, streamIdStr, url } = options;
|
|
876
|
-
// Circuit breaker callback
|
|
884
|
+
// Circuit breaker callback - terminate the stream on unrecoverable errors.
|
|
877
885
|
const onCircuitBreak = () => {
|
|
878
886
|
const currentStreamId = getChannelStreamId(channelName);
|
|
879
887
|
if (currentStreamId !== undefined) {
|
|
@@ -890,7 +898,7 @@ async function completeStreamSetup(options) {
|
|
|
890
898
|
reclaimIdleStream();
|
|
891
899
|
}
|
|
892
900
|
// Pass the pre-allocated IDs to setupStream so it uses them instead of generating new ones. This ensures the abort controller, health monitor, and tab replacement
|
|
893
|
-
// handler all reference the same stream identity as the pending registry entry. Pass channelName only for predefined channels
|
|
901
|
+
// handler all reference the same stream identity as the pending registry entry. Pass channelName only for predefined channels - for ad-hoc streams, omitting it
|
|
894
902
|
// causes generateStreamId to derive the stream ID string from the URL (e.g., "foxsports-abc123"), which is more informative in logs.
|
|
895
903
|
const setup = await setupStream({
|
|
896
904
|
channel,
|
|
@@ -924,7 +932,7 @@ async function completeStreamSetup(options) {
|
|
|
924
932
|
return runWithStreamContext({ channelName: channel?.name, streamId: setup.streamId, url: setup.url }, async () => {
|
|
925
933
|
// The deferred preroll timer is NOT cancelled here. It continues running until the first real playlist arrives (cancelled in updatePlaylist() in
|
|
926
934
|
// hlsSegments.ts). This is critical for native streams where the browser setup completes quickly but the native proxy's first poll cycle can take 10-15+
|
|
927
|
-
// seconds. If we cancelled the timer at setup completion, the client would have no playlist during the proxy's first poll
|
|
935
|
+
// seconds. If we cancelled the timer at setup completion, the client would have no playlist during the proxy's first poll - the preroll timer fires after
|
|
928
936
|
// PREROLL_DELAY_MS and provides content during that gap. For the capture path, the segmenter produces its first playlist within ~2 seconds of creation, so
|
|
929
937
|
// the timer is cancelled almost immediately after setup anyway.
|
|
930
938
|
// Attempt native streaming if a manifest interception handle is available. If native is viable, the capture pipeline is stopped and the proxy takes over.
|
|
@@ -1000,7 +1008,7 @@ async function completeStreamSetup(options) {
|
|
|
1000
1008
|
* @returns The stream ID if successful, null if an error occurred (error response already sent).
|
|
1001
1009
|
*/
|
|
1002
1010
|
async function startHLSStream(channelName, url, req, res, channel) {
|
|
1003
|
-
const profileOverride = req.query
|
|
1011
|
+
const profileOverride = req.query["profile"];
|
|
1004
1012
|
const clientAddress = req.ip ?? req.socket.remoteAddress ?? null;
|
|
1005
1013
|
try {
|
|
1006
1014
|
return await initializeStream({ channel, channelName, clientAddress, profileOverride, url });
|
|
@@ -1021,7 +1029,7 @@ async function startHLSStream(channelName, url, req, res, channel) {
|
|
|
1021
1029
|
}
|
|
1022
1030
|
// Idle Detection.
|
|
1023
1031
|
/**
|
|
1024
|
-
* Returns all streams that have exceeded the idle timeout and have no active MPEG-TS clients. Pretuned streams are excluded
|
|
1032
|
+
* Returns all streams that have exceeded the idle timeout and have no active MPEG-TS clients. Pretuned streams are excluded - they have no clients by design and
|
|
1025
1033
|
* the pretune module manages their lifecycle via a safety timeout. The result is sorted by last access time (oldest first) so callers can efficiently pick the
|
|
1026
1034
|
* longest-idle stream for reclamation.
|
|
1027
1035
|
* @returns Idle streams sorted by last access time ascending (oldest first).
|
|
@@ -1056,6 +1064,9 @@ function reclaimIdleStream() {
|
|
|
1056
1064
|
return false;
|
|
1057
1065
|
}
|
|
1058
1066
|
const oldest = idle[0];
|
|
1067
|
+
if (!oldest) {
|
|
1068
|
+
return false;
|
|
1069
|
+
}
|
|
1059
1070
|
LOG.info("Reclaiming idle stream %s (%s) to free capacity.", oldest.id, oldest.info.storeKey);
|
|
1060
1071
|
terminateStream(oldest.id, oldest.info.storeKey, "reclaimed for new stream");
|
|
1061
1072
|
void emitCurrentSystemStatus();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hls.js","sourceRoot":"","sources":["../../src/streaming/hls.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hls.js","sourceRoot":"","sources":["../../src/streaming/hls.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Nullable } from "../types/index.
|
|
1
|
+
import type { Nullable } from "../types/index.ts";
|
|
2
2
|
/**
|
|
3
3
|
* Data collected from an active stream at shutdown, passed in by the shutdown handler.
|
|
4
4
|
*/
|
|
@@ -19,7 +19,7 @@ export interface ResumeData {
|
|
|
19
19
|
trackTimestamps: Map<number, bigint>;
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
|
-
* Loads resume state from disk into memory. Called once at startup after config loading. The file is deleted immediately after reading
|
|
22
|
+
* Loads resume state from disk into memory. Called once at startup after config loading. The file is deleted immediately after reading - it only needs to exist
|
|
23
23
|
* between shutdown and the next startup. If the file is missing or corrupt, the map stays empty and all streams start at 0 (today's behavior).
|
|
24
24
|
*/
|
|
25
25
|
export declare function loadResumeState(): void;
|
|
@@ -33,7 +33,7 @@ export declare function getResumeSegmentIndex(channelName: string): Nullable<num
|
|
|
33
33
|
/**
|
|
34
34
|
* Reads resume data for a channel without removing it from the map. Returns the seeding parameters if the entry exists and is within TTL, or null if no resume data
|
|
35
35
|
* is available. The caller must call deleteResumeData() after successfully using the data to prevent double-consumption. This two-step pattern ensures resume data
|
|
36
|
-
* survives if segmenter creation fails
|
|
36
|
+
* survives if segmenter creation fails - the next stream start can retry with the same resume state instead of starting from scratch.
|
|
37
37
|
* @param channelName - The channel key to look up.
|
|
38
38
|
* @returns Resume data for seeding the segmenter, or null.
|
|
39
39
|
*/
|
|
@@ -10,7 +10,7 @@ import { getResumeFilePath } from "../config/paths.js";
|
|
|
10
10
|
/* When PrismCast restarts mid-recording, HLS media sequences reset to 0. Channels DVR detects "Playlist reset to a lower sequence" and produces unpredictable
|
|
11
11
|
* timestamps in the recording. This module persists final sequence numbers at shutdown and seeds from them on restart so sequences always move forward.
|
|
12
12
|
*
|
|
13
|
-
* The data is only relevant for ~90 seconds after shutdown
|
|
13
|
+
* The data is only relevant for ~90 seconds after shutdown - just long enough for Channels DVR to reconnect. The file is written once at shutdown and deleted
|
|
14
14
|
* immediately after loading at the next startup.
|
|
15
15
|
*/
|
|
16
16
|
// TTL for resume entries. Entries older than this are discarded on load.
|
|
@@ -18,7 +18,7 @@ const RESUME_TTL = 90_000;
|
|
|
18
18
|
// In-memory map of channel name to resume entry. Populated at startup, consumed as streams reconnect.
|
|
19
19
|
const resumeMap = new Map();
|
|
20
20
|
/**
|
|
21
|
-
* Loads resume state from disk into memory. Called once at startup after config loading. The file is deleted immediately after reading
|
|
21
|
+
* Loads resume state from disk into memory. Called once at startup after config loading. The file is deleted immediately after reading - it only needs to exist
|
|
22
22
|
* between shutdown and the next startup. If the file is missing or corrupt, the map stays empty and all streams start at 0 (today's behavior).
|
|
23
23
|
*/
|
|
24
24
|
export function loadResumeState() {
|
|
@@ -28,7 +28,7 @@ export function loadResumeState() {
|
|
|
28
28
|
raw = fs.readFileSync(filePath, "utf-8");
|
|
29
29
|
}
|
|
30
30
|
catch {
|
|
31
|
-
// File does not exist
|
|
31
|
+
// File does not exist - clean start.
|
|
32
32
|
return;
|
|
33
33
|
}
|
|
34
34
|
// Delete the file immediately. It has served its purpose.
|
|
@@ -36,7 +36,7 @@ export function loadResumeState() {
|
|
|
36
36
|
fs.unlinkSync(filePath);
|
|
37
37
|
}
|
|
38
38
|
catch {
|
|
39
|
-
// Non-fatal
|
|
39
|
+
// Non-fatal - the file will be overwritten on next shutdown.
|
|
40
40
|
}
|
|
41
41
|
let parsed;
|
|
42
42
|
try {
|
|
@@ -92,7 +92,7 @@ export function getResumeSegmentIndex(channelName) {
|
|
|
92
92
|
/**
|
|
93
93
|
* Reads resume data for a channel without removing it from the map. Returns the seeding parameters if the entry exists and is within TTL, or null if no resume data
|
|
94
94
|
* is available. The caller must call deleteResumeData() after successfully using the data to prevent double-consumption. This two-step pattern ensures resume data
|
|
95
|
-
* survives if segmenter creation fails
|
|
95
|
+
* survives if segmenter creation fails - the next stream start can retry with the same resume state instead of starting from scratch.
|
|
96
96
|
* @param channelName - The channel key to look up.
|
|
97
97
|
* @returns Resume data for seeding the segmenter, or null.
|
|
98
98
|
*/
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type Clock } from "../utils/index.ts";
|
|
1
2
|
/**
|
|
2
3
|
* Stores a media segment. Enforces the segment count limit by removing the oldest segment when necessary. Handles both capture-mode .m4s segments from the fMP4
|
|
3
4
|
* segmenter and native-mode .ts segments from the HLS proxy.
|
|
@@ -87,13 +88,15 @@ export declare function getPlaylist(streamId: number): string | undefined;
|
|
|
87
88
|
* Waits for the first playlist to be available for a stream.
|
|
88
89
|
* @param streamId - The numeric stream ID.
|
|
89
90
|
* @param timeout - Maximum time to wait in milliseconds.
|
|
91
|
+
* @param clock - Clock used for the timeout race. Defaults to realClock; tests inject a fake to drive the race deterministically.
|
|
90
92
|
* @returns True if playlist is ready, false if timeout or stream not found.
|
|
91
93
|
*/
|
|
92
|
-
export declare function waitForPlaylist(streamId: number, timeout: number): Promise<boolean>;
|
|
94
|
+
export declare function waitForPlaylist(streamId: number, timeout: number, clock?: Clock): Promise<boolean>;
|
|
93
95
|
/**
|
|
94
96
|
* Waits for the first init segment to be available for a stream. Used by MPEG-TS consumers to wait for codec configuration before starting their FFmpeg remuxer.
|
|
95
97
|
* @param streamId - The numeric stream ID.
|
|
96
98
|
* @param timeout - Maximum time to wait in milliseconds.
|
|
99
|
+
* @param clock - Clock used for the timeout race. Defaults to realClock; tests inject a fake to drive the race deterministically.
|
|
97
100
|
* @returns True if init segment is ready, false if timeout or stream not found.
|
|
98
101
|
*/
|
|
99
|
-
export declare function waitForInitSegment(streamId: number, timeout: number): Promise<boolean>;
|
|
102
|
+
export declare function waitForInitSegment(streamId: number, timeout: number, clock?: Clock): Promise<boolean>;
|