prismcast 1.5.2 → 1.7.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/README.md +44 -28
- package/dist/app.d.ts +5 -0
- package/dist/app.js +63 -5
- package/dist/app.js.map +1 -1
- package/dist/browser/cdp.js +1 -1
- package/dist/browser/cdp.js.map +1 -1
- package/dist/browser/channelSelection.d.ts +10 -34
- package/dist/browser/channelSelection.js +31 -96
- package/dist/browser/channelSelection.js.map +1 -1
- package/dist/browser/display.d.ts +19 -0
- package/dist/browser/display.js +16 -11
- package/dist/browser/display.js.map +1 -1
- package/dist/browser/index.d.ts +31 -54
- package/dist/browser/index.js +334 -272
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/login.d.ts +65 -0
- package/dist/browser/login.js +193 -0
- package/dist/browser/login.js.map +1 -0
- package/dist/browser/precaching.js +15 -3
- package/dist/browser/precaching.js.map +1 -1
- package/dist/browser/tuning/comcastPolymer.d.ts +23 -0
- package/dist/browser/tuning/comcastPolymer.js +655 -0
- package/dist/browser/tuning/comcastPolymer.js.map +1 -0
- package/dist/browser/tuning/cox.d.ts +2 -0
- package/dist/browser/tuning/cox.js +14 -0
- package/dist/browser/tuning/cox.js.map +1 -0
- package/dist/browser/tuning/directv.js +14 -1
- package/dist/browser/tuning/directv.js.map +1 -1
- package/dist/browser/tuning/fox.js +14 -2
- package/dist/browser/tuning/fox.js.map +1 -1
- package/dist/browser/tuning/hbo.js +12 -1
- package/dist/browser/tuning/hbo.js.map +1 -1
- package/dist/browser/tuning/hulu.js +24 -1
- package/dist/browser/tuning/hulu.js.map +1 -1
- package/dist/browser/tuning/shared.d.ts +46 -0
- package/dist/browser/tuning/shared.js +100 -0
- package/dist/browser/tuning/shared.js.map +1 -0
- package/dist/browser/tuning/sling.js +35 -5
- package/dist/browser/tuning/sling.js.map +1 -1
- package/dist/browser/tuning/spectrum.js +13 -1
- package/dist/browser/tuning/spectrum.js.map +1 -1
- package/dist/browser/tuning/thumbnailRow.js +1 -1
- package/dist/browser/tuning/thumbnailRow.js.map +1 -1
- package/dist/browser/tuning/tileClick.js +1 -1
- package/dist/browser/tuning/tileClick.js.map +1 -1
- package/dist/browser/tuning/xfinity.d.ts +2 -0
- package/dist/browser/tuning/xfinity.js +14 -0
- package/dist/browser/tuning/xfinity.js.map +1 -0
- package/dist/browser/tuning/youtubeTv.js +15 -1
- package/dist/browser/tuning/youtubeTv.js.map +1 -1
- package/dist/browser/video.d.ts +20 -0
- package/dist/browser/video.js +168 -124
- package/dist/browser/video.js.map +1 -1
- package/dist/channels/index.d.ts +2 -2
- package/dist/channels/index.js +2075 -683
- package/dist/channels/index.js.map +1 -1
- package/dist/config/health.d.ts +28 -28
- package/dist/config/health.js +72 -54
- package/dist/config/health.js.map +1 -1
- package/dist/config/index.js +29 -64
- package/dist/config/index.js.map +1 -1
- package/dist/config/paths.d.ts +12 -0
- package/dist/config/paths.js +16 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/config/profiles.d.ts +3 -2
- package/dist/config/profiles.js +45 -34
- package/dist/config/profiles.js.map +1 -1
- package/dist/config/providerPacks.js +4 -1
- package/dist/config/providerPacks.js.map +1 -1
- package/dist/config/providers.d.ts +19 -5
- package/dist/config/providers.js +123 -93
- package/dist/config/providers.js.map +1 -1
- package/dist/config/sites.d.ts +28 -0
- package/dist/config/sites.js +104 -127
- package/dist/config/sites.js.map +1 -1
- package/dist/config/userChannels.d.ts +53 -2
- package/dist/config/userChannels.js +222 -13
- package/dist/config/userChannels.js.map +1 -1
- package/dist/config/userConfig.d.ts +2 -1
- package/dist/config/userConfig.js +6 -15
- package/dist/config/userConfig.js.map +1 -1
- package/dist/config/userProfiles.d.ts +0 -1
- package/dist/config/userProfiles.js +18 -10
- package/dist/config/userProfiles.js.map +1 -1
- package/dist/hdhr/channelMap.d.ts +1 -1
- package/dist/hdhr/channelMap.js +4 -4
- package/dist/hdhr/channelMap.js.map +1 -1
- package/dist/index.js +25 -22
- package/dist/index.js.map +1 -1
- package/dist/native/decrypt.d.ts +32 -0
- package/dist/native/decrypt.js +85 -0
- package/dist/native/decrypt.js.map +1 -0
- package/dist/native/index.d.ts +61 -0
- package/dist/native/index.js +342 -0
- package/dist/native/index.js.map +1 -0
- package/dist/native/intercept.d.ts +35 -0
- package/dist/native/intercept.js +184 -0
- package/dist/native/intercept.js.map +1 -0
- package/dist/native/probe.d.ts +49 -0
- package/dist/native/probe.js +294 -0
- package/dist/native/probe.js.map +1 -0
- package/dist/native/proxy.d.ts +54 -0
- package/dist/native/proxy.js +947 -0
- package/dist/native/proxy.js.map +1 -0
- package/dist/routes/components.d.ts +43 -0
- package/dist/routes/components.js +122 -0
- package/dist/routes/components.js.map +1 -1
- package/dist/routes/config/channels/index.d.ts +2 -2
- 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.js +443 -65
- package/dist/routes/config/channels/routes.js.map +1 -1
- package/dist/routes/config/channels/table.d.ts +76 -0
- package/dist/routes/config/channels/table.js +369 -89
- package/dist/routes/config/channels/table.js.map +1 -1
- package/dist/routes/config/index.d.ts +1 -1
- package/dist/routes/config/index.js +1 -1
- package/dist/routes/config/index.js.map +1 -1
- package/dist/routes/config/providers.d.ts +6 -6
- package/dist/routes/config/providers.js +73 -99
- package/dist/routes/config/providers.js.map +1 -1
- package/dist/routes/debug.js +5 -5
- package/dist/routes/debug.js.map +1 -1
- package/dist/routes/hls.js +12 -2
- package/dist/routes/hls.js.map +1 -1
- package/dist/routes/index.d.ts +0 -15
- package/dist/routes/index.js +2 -16
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/providers.js +106 -3
- package/dist/routes/providers.js.map +1 -1
- package/dist/routes/root/content.js +124 -47
- package/dist/routes/root/content.js.map +1 -1
- package/dist/routes/root/index.js +2 -1
- package/dist/routes/root/index.js.map +1 -1
- package/dist/routes/root/scripts/channels.js +772 -312
- package/dist/routes/root/scripts/channels.js.map +1 -1
- package/dist/routes/root/scripts/config.js +596 -544
- package/dist/routes/root/scripts/config.js.map +1 -1
- package/dist/routes/root/scripts/index.d.ts +1 -0
- package/dist/routes/root/scripts/index.js +1 -0
- package/dist/routes/root/scripts/index.js.map +1 -1
- package/dist/routes/root/scripts/shared.d.ts +6 -0
- package/dist/routes/root/scripts/shared.js +391 -0
- package/dist/routes/root/scripts/shared.js.map +1 -0
- package/dist/routes/root/scripts/status.js +49 -33
- package/dist/routes/root/scripts/status.js.map +1 -1
- package/dist/routes/root/styles.js +117 -10
- package/dist/routes/root/styles.js.map +1 -1
- package/dist/service/commands.js +2 -1
- package/dist/service/commands.js.map +1 -1
- package/dist/streaming/fmp4Segmenter.d.ts +5 -0
- package/dist/streaming/fmp4Segmenter.js +146 -42
- package/dist/streaming/fmp4Segmenter.js.map +1 -1
- package/dist/streaming/hls.d.ts +24 -19
- package/dist/streaming/hls.js +603 -297
- package/dist/streaming/hls.js.map +1 -1
- package/dist/streaming/hlsResume.d.ts +16 -3
- package/dist/streaming/hlsResume.js +35 -8
- package/dist/streaming/hlsResume.js.map +1 -1
- package/dist/streaming/hlsSegments.d.ts +41 -2
- package/dist/streaming/hlsSegments.js +131 -28
- package/dist/streaming/hlsSegments.js.map +1 -1
- package/dist/streaming/lifecycle.js +27 -13
- package/dist/streaming/lifecycle.js.map +1 -1
- package/dist/streaming/monitor.d.ts +1 -0
- package/dist/streaming/monitor.js +862 -474
- package/dist/streaming/monitor.js.map +1 -1
- package/dist/streaming/mp4Parser.d.ts +52 -6
- package/dist/streaming/mp4Parser.js +156 -30
- package/dist/streaming/mp4Parser.js.map +1 -1
- package/dist/streaming/mpegts.d.ts +2 -2
- package/dist/streaming/mpegts.js +156 -109
- package/dist/streaming/mpegts.js.map +1 -1
- package/dist/streaming/playlistBuilder.d.ts +38 -0
- package/dist/streaming/playlistBuilder.js +66 -0
- package/dist/streaming/playlistBuilder.js.map +1 -0
- package/dist/streaming/preroll.d.ts +126 -0
- package/dist/streaming/preroll.js +434 -0
- package/dist/streaming/preroll.js.map +1 -0
- package/dist/streaming/pretune.d.ts +8 -0
- package/dist/streaming/pretune.js +226 -0
- package/dist/streaming/pretune.js.map +1 -0
- package/dist/streaming/recovery.d.ts +0 -6
- package/dist/streaming/recovery.js +0 -8
- package/dist/streaming/recovery.js.map +1 -1
- package/dist/streaming/registry.d.ts +57 -9
- package/dist/streaming/registry.js +26 -7
- package/dist/streaming/registry.js.map +1 -1
- package/dist/streaming/setup.d.ts +8 -1
- package/dist/streaming/setup.js +71 -27
- package/dist/streaming/setup.js.map +1 -1
- package/dist/streaming/showInfo.d.ts +29 -4
- package/dist/streaming/showInfo.js +210 -38
- package/dist/streaming/showInfo.js.map +1 -1
- package/dist/streaming/statusEmitter.d.ts +20 -6
- package/dist/streaming/statusEmitter.js +31 -7
- package/dist/streaming/statusEmitter.js.map +1 -1
- package/dist/types/channels.d.ts +32 -0
- package/dist/types/config.d.ts +2 -2
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.js.map +1 -1
- package/dist/types/profiles.d.ts +13 -1
- package/dist/types/selection.d.ts +5 -1
- package/dist/types/shared.d.ts +1 -1
- package/dist/types/streaming.d.ts +7 -0
- package/dist/utils/chromeFetch.d.ts +20 -0
- package/dist/utils/chromeFetch.js +43 -0
- package/dist/utils/chromeFetch.js.map +1 -0
- package/dist/utils/debugFilter.d.ts +0 -5
- package/dist/utils/debugFilter.js +20 -11
- package/dist/utils/debugFilter.js.map +1 -1
- package/dist/utils/delay.d.ts +28 -0
- package/dist/utils/delay.js +35 -1
- package/dist/utils/delay.js.map +1 -1
- package/dist/utils/evaluate.js +6 -11
- package/dist/utils/evaluate.js.map +1 -1
- package/dist/utils/ffmpeg.d.ts +14 -12
- package/dist/utils/ffmpeg.js +114 -134
- package/dist/utils/ffmpeg.js.map +1 -1
- package/dist/utils/format.d.ts +6 -0
- package/dist/utils/format.js +8 -0
- package/dist/utils/format.js.map +1 -1
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/logEmitter.js +1 -1
- package/dist/utils/logEmitter.js.map +1 -1
- package/dist/utils/pid.d.ts +40 -0
- package/dist/utils/pid.js +83 -0
- package/dist/utils/pid.js.map +1 -0
- package/dist/utils/retry.d.ts +15 -9
- package/dist/utils/retry.js +7 -23
- package/dist/utils/retry.js.map +1 -1
- package/dist/utils/timing.d.ts +5 -0
- package/dist/utils/timing.js +13 -0
- package/dist/utils/timing.js.map +1 -0
- package/dist/utils/version.js +2 -2
- package/dist/utils/version.js.map +1 -1
- package/package.json +7 -7
package/dist/streaming/setup.js
CHANGED
|
@@ -2,11 +2,16 @@ import { LOG, delay, extractDomain, formatError, registerAbortController, retryO
|
|
|
2
2
|
import { getCurrentBrowser, getStream, minimizeBrowserWindow, registerManagedPage, unregisterManagedPage } from "../browser/index.js";
|
|
3
3
|
import { getNextStreamId, getStreamCount } from "./registry.js";
|
|
4
4
|
import { getProfileForChannel, getProfileForUrl, getProfiles, resolveProfile } from "../config/profiles.js";
|
|
5
|
-
import { initializePlayback, navigateToPage } from "../browser/video.js";
|
|
5
|
+
import { initializePlayback, injectVideoSelector, navigateToPage } from "../browser/video.js";
|
|
6
6
|
import { invalidateDirectUrl, resolveDirectUrl } from "../browser/channelSelection.js";
|
|
7
7
|
import { CONFIG } from "../config/index.js";
|
|
8
|
+
import { chromeFetch } from "../utils/index.js";
|
|
9
|
+
import { getCachedEncryption } from "../native/probe.js";
|
|
10
|
+
import { getDomainConfig } from "../config/sites.js";
|
|
8
11
|
import { getEffectiveViewport } from "../config/presets.js";
|
|
12
|
+
import { getGpuCapabilities } from "../browser/display.js";
|
|
9
13
|
import { getProviderDisplayName } from "../config/providers.js";
|
|
14
|
+
import { installManifestInterceptor } from "../native/intercept.js";
|
|
10
15
|
import { isChannelSelectionProfile } from "../types/index.js";
|
|
11
16
|
import { monitorPlaybackHealth } from "./monitor.js";
|
|
12
17
|
import { pipeline } from "node:stream/promises";
|
|
@@ -24,7 +29,7 @@ import { resizeAndMinimizeWindow } from "../browser/cdp.js";
|
|
|
24
29
|
*
|
|
25
30
|
* createPageWithCapture() handles:
|
|
26
31
|
* - Browser page creation with CSP bypass
|
|
27
|
-
* - Media stream initialization (native fMP4 or
|
|
32
|
+
* - Media stream initialization (native fMP4 or Matroska+FFmpeg)
|
|
28
33
|
* - Navigation with retry
|
|
29
34
|
* - Video element detection and playback setup
|
|
30
35
|
*
|
|
@@ -36,13 +41,19 @@ import { resizeAndMinimizeWindow } from "../browser/cdp.js";
|
|
|
36
41
|
*/
|
|
37
42
|
// Native fMP4 capture uses MP4/AAC for direct HLS segmentation without transcoding.
|
|
38
43
|
const NATIVE_FMP4_MIME_TYPE = "video/mp4;codecs=avc1,mp4a.40.2";
|
|
39
|
-
//
|
|
40
|
-
//
|
|
41
|
-
|
|
44
|
+
// Matroska+FFmpeg capture MIME types. Matroska is used over WebM because it supports a broader range of codecs (including HEVC and AV1), allowing codec upgrades
|
|
45
|
+
// without changing the container format. FFmpeg's demuxer handles both Matroska and WebM identically. When hardware HEVC encoding is available, HEVC is preferred
|
|
46
|
+
// over H.264 for better compression at the same bitrate. All variants use Opus audio which FFmpeg transcodes to AAC.
|
|
47
|
+
const MKV_H264_MIME_TYPE = "video/x-matroska;codecs=h264,opus";
|
|
48
|
+
const MKV_HEVC_MIME_TYPE = "video/x-matroska;codecs=hvc1.1.6.L93.B0,opus";
|
|
42
49
|
// Capture initialization queue. Chrome's tabCapture extension can only initialize one capture at a time — concurrent getStream() calls fail with "Cannot capture a
|
|
43
50
|
// tab with an active stream." We serialize capture initialization using a promise chain so requests execute sequentially. Once a capture is established, it runs
|
|
44
51
|
// concurrently with other captures without issue.
|
|
45
52
|
let captureQueue = Promise.resolve();
|
|
53
|
+
let captureQueueDepth = 0;
|
|
54
|
+
// Threshold for logging a warning when the capture queue depth is unusually high. Under normal operation, the queue depth is 0-2. Higher values indicate
|
|
55
|
+
// many simultaneous stream requests competing for Chrome's single-threaded capture initialization.
|
|
56
|
+
const CAPTURE_QUEUE_DEPTH_WARNING = 5;
|
|
46
57
|
// Maximum number of times createPageWithCapture() will retry when it detects that the page was closed while waiting in the capture queue (e.g., due to a browser
|
|
47
58
|
// crash). An explicit guard prevents unbounded recursion.
|
|
48
59
|
const MAX_PAGE_CLOSED_RETRIES = 3;
|
|
@@ -67,9 +78,11 @@ export class StreamSetupError extends Error {
|
|
|
67
78
|
*/
|
|
68
79
|
function generateRequestId() {
|
|
69
80
|
const chars = "abcdefghijklmnopqrstuvwxyz0123456789";
|
|
81
|
+
const bytes = new Uint8Array(6);
|
|
82
|
+
crypto.getRandomValues(bytes);
|
|
70
83
|
let result = "";
|
|
71
|
-
for (
|
|
72
|
-
result += chars.charAt(
|
|
84
|
+
for (const byte of bytes) {
|
|
85
|
+
result += chars.charAt(byte % chars.length);
|
|
73
86
|
}
|
|
74
87
|
return result;
|
|
75
88
|
}
|
|
@@ -113,11 +126,6 @@ export function validateStreamUrl(url) {
|
|
|
113
126
|
if (!allowedProtocols.includes(parsed.protocol)) {
|
|
114
127
|
return { reason: ["Unsupported protocol: ", parsed.protocol].join(""), valid: false };
|
|
115
128
|
}
|
|
116
|
-
// Local file access is explicitly blocked for security reasons. While the URL constructor wouldn't typically parse a file: URL through the protocol check
|
|
117
|
-
// above, we check explicitly for defense in depth.
|
|
118
|
-
if (parsed.protocol === "file:") {
|
|
119
|
-
return { reason: "Local file access is not permitted.", valid: false };
|
|
120
|
-
}
|
|
121
129
|
return { valid: true };
|
|
122
130
|
}
|
|
123
131
|
catch (_error) {
|
|
@@ -130,7 +138,7 @@ export function validateStreamUrl(url) {
|
|
|
130
138
|
* Creates a browser page with media capture and navigates to the URL. This is the reusable core function used by both initial stream setup and tab replacement
|
|
131
139
|
* recovery. It handles:
|
|
132
140
|
* - Creating a new browser page with CSP bypass
|
|
133
|
-
* - Initializing media capture (native fMP4 or
|
|
141
|
+
* - Initializing media capture (native fMP4 or Matroska+FFmpeg)
|
|
134
142
|
* - Navigating to the URL with retry
|
|
135
143
|
* - Setting up video playback via navigateToPage() + initializePlayback()
|
|
136
144
|
*
|
|
@@ -152,9 +160,18 @@ export async function createPageWithCapture(options) {
|
|
|
152
160
|
const page = await browser.newPage();
|
|
153
161
|
registerManagedPage(page);
|
|
154
162
|
await page.setBypassCSP(true);
|
|
163
|
+
// Inject the shared video selector helper into the browser context. This must happen before navigation so the helper is available when evaluate calls run during
|
|
164
|
+
// initializePlayback (startVideoPlayback, applyVideoStyles, verifyFullscreen, lockVolumeProperties) and subsequent health monitoring (getVideoState).
|
|
165
|
+
await injectVideoSelector(page);
|
|
166
|
+
// Install CDP manifest interceptor before navigation. This listener captures .m3u8 URLs from the browser's network requests, enabling native HLS streaming for
|
|
167
|
+
// providers that use clear or AES-128 encrypted streams. Skipped for tab replacements (native proxy is independent of capture) and for channels already known to
|
|
168
|
+
// use DRM (avoids 15 seconds of wasted CDP overhead per tune). The await ensures the CDP session and Network domain are ready before navigation begins.
|
|
169
|
+
const manifestInterception = (!options.tabReplacement && !options.skipManifestInterception) ? await installManifestInterceptor(page) : null;
|
|
155
170
|
// Select MIME type based on capture mode. FFmpeg mode is more stable for long recordings because Chrome's native fMP4 MediaRecorder can become unstable.
|
|
171
|
+
// When hardware HEVC encoding is available, prefer HEVC over H.264 for better compression at the same bitrate.
|
|
156
172
|
const useFFmpeg = CONFIG.streaming.captureMode === "ffmpeg";
|
|
157
|
-
const
|
|
173
|
+
const mkvMimeType = getGpuCapabilities()?.hevcHardwareEncoding ? MKV_HEVC_MIME_TYPE : MKV_H264_MIME_TYPE;
|
|
174
|
+
const captureMimeType = useFFmpeg ? mkvMimeType : NATIVE_FMP4_MIME_TYPE;
|
|
158
175
|
// Track the output stream that will be sent to the segmenter and FFmpeg process if used. Also track the raw capture stream separately - it must be destroyed
|
|
159
176
|
// before closing the page to ensure chrome.tabCapture releases the capture.
|
|
160
177
|
let outputStream;
|
|
@@ -167,6 +184,7 @@ export async function createPageWithCapture(options) {
|
|
|
167
184
|
const releaseCaptureOnce = () => {
|
|
168
185
|
if (!captureQueueReleased) {
|
|
169
186
|
captureQueueReleased = true;
|
|
187
|
+
captureQueueDepth--;
|
|
170
188
|
releaseCaptureQueue();
|
|
171
189
|
}
|
|
172
190
|
};
|
|
@@ -193,6 +211,10 @@ export async function createPageWithCapture(options) {
|
|
|
193
211
|
// concurrent initialization attempts. On success, the lock is released immediately so the next caller can proceed. On failure, the lock is held until the
|
|
194
212
|
// catch block decides what to do — the catch block releases the lock after handling the error.
|
|
195
213
|
const previousCapture = captureQueue;
|
|
214
|
+
captureQueueDepth++;
|
|
215
|
+
if (captureQueueDepth >= CAPTURE_QUEUE_DEPTH_WARNING) {
|
|
216
|
+
LOG.warn("Capture queue depth is %d. Multiple stream requests are competing for Chrome's capture initialization.", captureQueueDepth);
|
|
217
|
+
}
|
|
196
218
|
captureQueue = new Promise((resolve) => {
|
|
197
219
|
releaseCaptureQueue = resolve;
|
|
198
220
|
});
|
|
@@ -236,7 +258,7 @@ export async function createPageWithCapture(options) {
|
|
|
236
258
|
const stream = await Promise.race([streamPromise, timeoutPromise]);
|
|
237
259
|
// Store the raw capture stream. This must be destroyed before closing the page.
|
|
238
260
|
rawCaptureStream = stream;
|
|
239
|
-
// For FFmpeg mode, spawn FFmpeg to transcode the
|
|
261
|
+
// For FFmpeg mode, spawn FFmpeg to transcode the Matroska stream to fMP4. FFmpeg copies the H264 video and transcodes Opus audio to AAC.
|
|
240
262
|
if (useFFmpeg) {
|
|
241
263
|
const ffmpeg = spawnFFmpeg(CONFIG.streaming.audioBitsPerSecond, (error) => {
|
|
242
264
|
LOG.error("FFmpeg process error: %s.", formatError(error));
|
|
@@ -259,7 +281,7 @@ export async function createPageWithCapture(options) {
|
|
|
259
281
|
}
|
|
260
282
|
}
|
|
261
283
|
});
|
|
262
|
-
// Pipe the
|
|
284
|
+
// Pipe the Matroska capture stream to FFmpeg's stdin using pipeline() for proper cleanup. When FFmpeg is killed during tab replacement, pipeline() automatically
|
|
263
285
|
// destroys the source stream, preventing "write after end" errors that would occur with .pipe().
|
|
264
286
|
pipeline(stream, ffmpeg.stdin).catch((error) => {
|
|
265
287
|
const errorMessage = formatError(error);
|
|
@@ -320,9 +342,17 @@ export async function createPageWithCapture(options) {
|
|
|
320
342
|
// Phase 1: Navigate to the page with retry. The 10-second navigationTimeout is appropriate for page loads, and retryOperation correctly reloads the page on
|
|
321
343
|
// genuine navigation failures. Navigation is wrapped in retryOperation separately from channel selection so the timeout does not race with the internal click
|
|
322
344
|
// retry loops in channel selection strategies (guideGrid can take 15-20 seconds for binary search + click retries).
|
|
323
|
-
await retryOperation(
|
|
324
|
-
|
|
325
|
-
|
|
345
|
+
await retryOperation({
|
|
346
|
+
backoffJitter: CONFIG.recovery.backoffJitter,
|
|
347
|
+
description: "page navigation for " + navigationUrl,
|
|
348
|
+
maxAttempts: CONFIG.streaming.maxNavigationRetries,
|
|
349
|
+
maxBackoffDelay: CONFIG.recovery.maxBackoffDelay,
|
|
350
|
+
operation: async () => {
|
|
351
|
+
await navigateToPage(page, navigationUrl, profile);
|
|
352
|
+
},
|
|
353
|
+
shouldAbort: () => page.isClosed(),
|
|
354
|
+
timeoutMs: CONFIG.streaming.navigationTimeout
|
|
355
|
+
});
|
|
326
356
|
// Phase 2: Channel selection + video setup. When navigating to a cached direct URL, skip channel selection since the URL already targets the correct
|
|
327
357
|
// channel. Runs after navigation succeeds with no outer timeout racing against internal click retries. Each sub-step (selectChannel, waitForVideoReady,
|
|
328
358
|
// etc.) has its own internal timeout via videoTimeout and click retry constants. For guideGrid strategies, a channel selection failure triggers an overlay
|
|
@@ -366,6 +396,11 @@ export async function createPageWithCapture(options) {
|
|
|
366
396
|
minimizeBrowserWindow().catch(() => { });
|
|
367
397
|
throw error;
|
|
368
398
|
}
|
|
399
|
+
// During tab replacement, allow Chrome's compositor to fully stabilize the fullscreen video surface before minimizing. Without this delay, the compositor may
|
|
400
|
+
// snapshot an incorrect scaling state during the minimize transition, causing the captured content to appear zoomed into the top-left corner.
|
|
401
|
+
if (options.tabReplacement && !profile.noVideo) {
|
|
402
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
403
|
+
}
|
|
369
404
|
// Resize and minimize window.
|
|
370
405
|
await resizeAndMinimizeWindow(page, !profile.noVideo);
|
|
371
406
|
LOG.debug("timing:startup", "Page with capture ready. Total: %sms.", captureElapsed());
|
|
@@ -374,6 +409,7 @@ export async function createPageWithCapture(options) {
|
|
|
374
409
|
context,
|
|
375
410
|
directTune: usedDirectUrl || strategyDirectTune || !isChannelSelectionProfile(profile),
|
|
376
411
|
ffmpegProcess,
|
|
412
|
+
manifestInterception,
|
|
377
413
|
page,
|
|
378
414
|
rawCaptureStream
|
|
379
415
|
};
|
|
@@ -390,7 +426,7 @@ export async function createPageWithCapture(options) {
|
|
|
390
426
|
*/
|
|
391
427
|
async function resolveRedirectUrl(url) {
|
|
392
428
|
try {
|
|
393
|
-
const response = await
|
|
429
|
+
const response = await chromeFetch(url, { method: "HEAD", signal: AbortSignal.timeout(3000) });
|
|
394
430
|
return response.url;
|
|
395
431
|
}
|
|
396
432
|
catch {
|
|
@@ -413,9 +449,10 @@ async function resolveRedirectUrl(url) {
|
|
|
413
449
|
*/
|
|
414
450
|
export async function setupStream(options, onCircuitBreak) {
|
|
415
451
|
const { channel, channelName, channelSelector, clickSelector, clickToPlay, noVideo, onTabReplacementFactory, profileOverride, url } = options;
|
|
416
|
-
//
|
|
417
|
-
|
|
418
|
-
const
|
|
452
|
+
// Use pre-allocated IDs from a pending registry entry when available, or generate new ones. Pre-allocated IDs ensure the abort controller, health monitor, and
|
|
453
|
+
// tab replacement handler all reference the same stream identity as the pending entry in the registry.
|
|
454
|
+
const streamId = options.streamId ?? generateStreamId(channelName, url);
|
|
455
|
+
const numericStreamId = options.numericStreamId ?? getNextStreamId();
|
|
419
456
|
const startTime = new Date();
|
|
420
457
|
// Create and register the AbortController for this stream. This allows pending evaluate calls to be cancelled immediately when the stream is terminated.
|
|
421
458
|
const abortController = new AbortController();
|
|
@@ -486,10 +523,14 @@ export async function setupStream(options, onCircuitBreak) {
|
|
|
486
523
|
// Create page and start capture using the shared function. This handles browser page creation, capture initialization, FFmpeg spawning, and navigation with retry.
|
|
487
524
|
let captureResult;
|
|
488
525
|
try {
|
|
526
|
+
// Skip CDP manifest interception if the probe cache already knows this channel uses DRM. This avoids creating a CDP session that sits idle for 15 seconds
|
|
527
|
+
// before the interceptor timeout cleans it up.
|
|
528
|
+
const skipInterception = channelName ? (getCachedEncryption(channelName) === "drm") : false;
|
|
489
529
|
captureResult = await createPageWithCapture({
|
|
490
530
|
comment: metadataComment,
|
|
491
531
|
onFFmpegError: onCircuitBreak,
|
|
492
532
|
profile,
|
|
533
|
+
skipManifestInterception: skipInterception,
|
|
493
534
|
streamId,
|
|
494
535
|
url
|
|
495
536
|
});
|
|
@@ -507,12 +548,13 @@ export async function setupStream(options, onCircuitBreak) {
|
|
|
507
548
|
const isCaptureError = captureErrorPatterns.some((pattern) => errorMessage.includes(pattern));
|
|
508
549
|
throw new StreamSetupError("Stream error.", isCaptureError ? 503 : 500, "Failed to start stream.");
|
|
509
550
|
}
|
|
510
|
-
const { captureStream, context, directTune, ffmpegProcess, page, rawCaptureStream } = captureResult;
|
|
511
|
-
// Monitor stream info for status updates.
|
|
551
|
+
const { captureStream, context, directTune, ffmpegProcess, manifestInterception, page, rawCaptureStream } = captureResult;
|
|
552
|
+
// Monitor stream info for status updates. The providerTag enables provider-specific monitoring flags (e.g., tinySegmentThreshold).
|
|
512
553
|
const monitorStreamInfo = {
|
|
513
554
|
channelName: channel?.name ?? null,
|
|
514
555
|
numericStreamId,
|
|
515
556
|
providerName,
|
|
557
|
+
providerTag: getDomainConfig(url)?.providerTag,
|
|
516
558
|
startTime
|
|
517
559
|
};
|
|
518
560
|
// Start the health monitor for this stream.
|
|
@@ -531,7 +573,7 @@ export async function setupStream(options, onCircuitBreak) {
|
|
|
531
573
|
if (!rawCaptureStream.destroyed) {
|
|
532
574
|
rawCaptureStream.destroy();
|
|
533
575
|
}
|
|
534
|
-
// Kill the FFmpeg process if using
|
|
576
|
+
// Kill the FFmpeg process if using Matroska+FFmpeg mode.
|
|
535
577
|
if (ffmpegProcess) {
|
|
536
578
|
ffmpegProcess.kill();
|
|
537
579
|
}
|
|
@@ -553,6 +595,7 @@ export async function setupStream(options, onCircuitBreak) {
|
|
|
553
595
|
cleanup,
|
|
554
596
|
directTune,
|
|
555
597
|
ffmpegProcess,
|
|
598
|
+
manifestInterception,
|
|
556
599
|
numericStreamId,
|
|
557
600
|
page,
|
|
558
601
|
profile,
|
|
@@ -624,7 +667,8 @@ async function attemptCaptureProbe(timeout) {
|
|
|
624
667
|
// Use the same capture MIME type and viewport constraints as the runtime. The stale state error occurs at the tabCapture API level before encoding matters,
|
|
625
668
|
// but matching the runtime configuration ensures the probe exercises the exact same getStream() parameters.
|
|
626
669
|
const useFFmpeg = CONFIG.streaming.captureMode === "ffmpeg";
|
|
627
|
-
const
|
|
670
|
+
const probeMkvMimeType = getGpuCapabilities()?.hevcHardwareEncoding ? MKV_HEVC_MIME_TYPE : MKV_H264_MIME_TYPE;
|
|
671
|
+
const captureMimeType = useFFmpeg ? probeMkvMimeType : NATIVE_FMP4_MIME_TYPE;
|
|
628
672
|
const streamOptions = {
|
|
629
673
|
audio: true,
|
|
630
674
|
mimeType: captureMimeType,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/streaming/setup.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/streaming/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
import type { Nullable } from "../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Returns the last known Channels DVR host address. Used by the pretune module to poll for upcoming scheduled recordings.
|
|
4
|
+
* @returns The DVR host address, or null if no DVR host has been discovered.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getDvrHost(): Nullable<string>;
|
|
7
|
+
/**
|
|
8
|
+
* Sets the DVR host address and persists it to the config file if it changed. Called by the discovery loop when a matching M3U device is found on a host.
|
|
9
|
+
* @param host - The DVR server hostname or IP address.
|
|
10
|
+
*/
|
|
11
|
+
export declare function setDvrHost(host: string): void;
|
|
1
12
|
/**
|
|
2
13
|
* Starts the show info polling interval. Should be called on server startup.
|
|
3
14
|
*/
|
|
@@ -23,8 +34,22 @@ export declare function getShowName(streamId: number): string;
|
|
|
23
34
|
*/
|
|
24
35
|
export declare function clearShowName(streamId: number): void;
|
|
25
36
|
/**
|
|
26
|
-
* Gets
|
|
27
|
-
* @param
|
|
28
|
-
* @returns
|
|
37
|
+
* Gets device channel mappings for a DVR host, refreshing the cache if needed.
|
|
38
|
+
* @param host - The DVR server hostname or IP address.
|
|
39
|
+
* @returns Map of DeviceID → (Map of GuideNumber → channel ID).
|
|
40
|
+
*/
|
|
41
|
+
export declare function getDeviceMappings(host: string): Promise<Map<string, Map<string, string>>>;
|
|
42
|
+
/**
|
|
43
|
+
* Fetches JSON data from a Channels DVR API endpoint.
|
|
44
|
+
* @param host - The DVR server hostname or IP address.
|
|
45
|
+
* @param path - The API path (e.g., "/devices" or "/dvr/jobs").
|
|
46
|
+
* @returns Array of results, empty array on any error.
|
|
47
|
+
*/
|
|
48
|
+
export declare function fetchFromDvr<T>(host: string, path: string): Promise<T[]>;
|
|
49
|
+
/**
|
|
50
|
+
* Triggers a single-channel logo lookup via TMS station name search. Called when a channel is added or edited with a station ID. Fire-and-forget - the logo
|
|
51
|
+
* appears on the next page load after the search completes.
|
|
52
|
+
* @param channelName - The channel display name to search for.
|
|
53
|
+
* @param stationId - The Gracenote station ID for the channel.
|
|
29
54
|
*/
|
|
30
|
-
export declare function
|
|
55
|
+
export declare function updateChannelLogo(channelName: string, stationId: string): void;
|