prismcast 1.2.0 → 1.3.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 +26 -1
- package/dist/app.js +29 -2
- 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 +14 -4
- package/dist/browser/channelSelection.js +48 -704
- package/dist/browser/channelSelection.js.map +1 -1
- package/dist/browser/index.d.ts +18 -4
- package/dist/browser/index.js +205 -39
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/tuning/fox.d.ts +19 -0
- package/dist/browser/tuning/fox.js +61 -0
- package/dist/browser/tuning/fox.js.map +1 -0
- package/dist/browser/tuning/hbo.d.ts +22 -0
- package/dist/browser/tuning/hbo.js +182 -0
- package/dist/browser/tuning/hbo.js.map +1 -0
- package/dist/browser/tuning/hulu.d.ts +30 -0
- package/dist/browser/tuning/hulu.js +514 -0
- package/dist/browser/tuning/hulu.js.map +1 -0
- package/dist/browser/tuning/sling.d.ts +22 -0
- package/dist/browser/tuning/sling.js +287 -0
- package/dist/browser/tuning/sling.js.map +1 -0
- package/dist/browser/tuning/thumbnailRow.d.ts +18 -0
- package/dist/browser/tuning/thumbnailRow.js +107 -0
- package/dist/browser/tuning/thumbnailRow.js.map +1 -0
- package/dist/browser/tuning/tileClick.d.ts +18 -0
- package/dist/browser/tuning/tileClick.js +102 -0
- package/dist/browser/tuning/tileClick.js.map +1 -0
- package/dist/browser/tuning/youtubeTv.d.ts +17 -0
- package/dist/browser/tuning/youtubeTv.js +99 -0
- package/dist/browser/tuning/youtubeTv.js.map +1 -0
- package/dist/browser/video.d.ts +2 -2
- package/dist/browser/video.js +18 -8
- package/dist/browser/video.js.map +1 -1
- package/dist/channels/index.js +131 -12
- package/dist/channels/index.js.map +1 -1
- package/dist/config/profiles.d.ts +5 -5
- package/dist/config/profiles.js +35 -11
- package/dist/config/profiles.js.map +1 -1
- package/dist/config/providers.d.ts +48 -4
- package/dist/config/providers.js +182 -22
- package/dist/config/providers.js.map +1 -1
- package/dist/config/sites.d.ts +10 -0
- package/dist/config/sites.js +96 -17
- package/dist/config/sites.js.map +1 -1
- package/dist/config/userChannels.js +21 -3
- package/dist/config/userChannels.js.map +1 -1
- package/dist/config/userConfig.d.ts +2 -1
- package/dist/config/userConfig.js +12 -4
- package/dist/config/userConfig.js.map +1 -1
- package/dist/index.js +10 -4
- package/dist/index.js.map +1 -1
- package/dist/routes/auth.js +6 -0
- package/dist/routes/auth.js.map +1 -1
- package/dist/routes/config.d.ts +5 -0
- package/dist/routes/config.js +273 -35
- package/dist/routes/config.js.map +1 -1
- package/dist/routes/debug.d.ts +6 -0
- package/dist/routes/debug.js +274 -0
- package/dist/routes/debug.js.map +1 -0
- package/dist/routes/index.d.ts +1 -0
- package/dist/routes/index.js +3 -0
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/logs.js +17 -5
- package/dist/routes/logs.js.map +1 -1
- package/dist/routes/root.js +507 -128
- package/dist/routes/root.js.map +1 -1
- package/dist/routes/theme.js +7 -0
- package/dist/routes/theme.js.map +1 -1
- package/dist/service/commands.js +8 -8
- package/dist/service/commands.js.map +1 -1
- package/dist/service/generators.js +22 -16
- package/dist/service/generators.js.map +1 -1
- package/dist/streaming/fmp4Segmenter.d.ts +7 -0
- package/dist/streaming/fmp4Segmenter.js +124 -15
- package/dist/streaming/fmp4Segmenter.js.map +1 -1
- package/dist/streaming/hls.d.ts +74 -6
- package/dist/streaming/hls.js +212 -130
- package/dist/streaming/hls.js.map +1 -1
- package/dist/streaming/hlsSegments.js +11 -4
- package/dist/streaming/hlsSegments.js.map +1 -1
- package/dist/streaming/lifecycle.js +1 -1
- package/dist/streaming/lifecycle.js.map +1 -1
- package/dist/streaming/monitor.d.ts +1 -1
- package/dist/streaming/monitor.js +202 -53
- package/dist/streaming/monitor.js.map +1 -1
- package/dist/streaming/mp4Parser.d.ts +29 -1
- package/dist/streaming/mp4Parser.js +243 -18
- package/dist/streaming/mp4Parser.js.map +1 -1
- package/dist/streaming/mpegts.d.ts +5 -2
- package/dist/streaming/mpegts.js +122 -29
- package/dist/streaming/mpegts.js.map +1 -1
- package/dist/streaming/registry.d.ts +1 -1
- package/dist/streaming/registry.js.map +1 -1
- package/dist/streaming/setup.d.ts +13 -1
- package/dist/streaming/setup.js +136 -36
- package/dist/streaming/setup.js.map +1 -1
- package/dist/streaming/showInfo.js +9 -9
- package/dist/streaming/showInfo.js.map +1 -1
- package/dist/streaming/statusEmitter.js +5 -6
- package/dist/streaming/statusEmitter.js.map +1 -1
- package/dist/types/index.d.ts +16 -3
- package/dist/types/index.js +5 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/debugFilter.d.ts +38 -0
- package/dist/utils/debugFilter.js +157 -0
- package/dist/utils/debugFilter.js.map +1 -0
- package/dist/utils/evaluate.js.map +1 -1
- package/dist/utils/ffmpeg.d.ts +5 -0
- package/dist/utils/ffmpeg.js +13 -2
- package/dist/utils/ffmpeg.js.map +1 -1
- package/dist/utils/fileLogger.d.ts +2 -1
- package/dist/utils/fileLogger.js +4 -2
- package/dist/utils/fileLogger.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/logEmitter.d.ts +1 -0
- package/dist/utils/logEmitter.js.map +1 -1
- package/dist/utils/logger.d.ts +9 -8
- package/dist/utils/logger.js +52 -28
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/retry.d.ts +1 -1
- package/dist/utils/retry.js +3 -3
- package/dist/utils/retry.js.map +1 -1
- package/dist/utils/version.js +4 -9
- package/dist/utils/version.js.map +1 -1
- package/package.json +6 -6
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
*
|
|
3
3
|
* monitor.ts: Playback health monitoring for PrismCast.
|
|
4
4
|
*/
|
|
5
|
-
import { EvaluateTimeoutError, LOG, formatError, getAbortSignal, isSessionClosedError, runWithStreamContext } from "../utils/index.js";
|
|
5
|
+
import { EvaluateTimeoutError, LOG, formatError, getAbortSignal, isSessionClosedError, runWithStreamContext, startTimer } from "../utils/index.js";
|
|
6
6
|
import { buildVideoSelectorType, checkVideoPresence, enforceVideoVolume, ensurePlayback, findVideoContext, getVideoState, tuneToChannel, validateVideoElement } from "../browser/video.js";
|
|
7
7
|
import { getChannelLogo, getShowName } from "./showInfo.js";
|
|
8
8
|
import { getLastSegmentSize, getStream, getStreamMemoryUsage } from "./registry.js";
|
|
@@ -95,13 +95,17 @@ function formatRecoveryDuration(startTime) {
|
|
|
95
95
|
* @returns User-friendly description.
|
|
96
96
|
*/
|
|
97
97
|
function getIssueDescription(category) {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
98
|
+
switch (category) {
|
|
99
|
+
case "paused": {
|
|
100
|
+
return "paused";
|
|
101
|
+
}
|
|
102
|
+
case "buffering": {
|
|
103
|
+
return "buffering";
|
|
104
|
+
}
|
|
105
|
+
default: {
|
|
106
|
+
return "stalled";
|
|
107
|
+
}
|
|
103
108
|
}
|
|
104
|
-
return "stalled";
|
|
105
109
|
}
|
|
106
110
|
/**
|
|
107
111
|
* Maps recovery level to method name.
|
|
@@ -109,17 +113,25 @@ function getIssueDescription(category) {
|
|
|
109
113
|
* @returns The recovery method name.
|
|
110
114
|
*/
|
|
111
115
|
function getRecoveryMethod(level) {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
116
|
+
switch (level) {
|
|
117
|
+
case 1: {
|
|
118
|
+
return RECOVERY_METHODS.playUnmute;
|
|
119
|
+
}
|
|
120
|
+
case 2: {
|
|
121
|
+
return RECOVERY_METHODS.sourceReload;
|
|
122
|
+
}
|
|
123
|
+
default: {
|
|
124
|
+
return RECOVERY_METHODS.pageNavigation;
|
|
125
|
+
}
|
|
117
126
|
}
|
|
118
|
-
return RECOVERY_METHODS.pageNavigation;
|
|
119
127
|
}
|
|
120
128
|
/**
|
|
121
129
|
* Records a recovery attempt in the metrics. Uses the ATTEMPT_FIELDS mapping to find the correct counter field, eliminating the need for if/else chains. This
|
|
122
130
|
* makes adding new recovery methods trivial - just add an entry to ATTEMPT_FIELDS.
|
|
131
|
+
*
|
|
132
|
+
* Note: Tab replacement calls this once per logical attempt even though it may internally retry the onTabReplacement callback. The retry is an implementation
|
|
133
|
+
* detail of executeTabReplacement, not a separate recovery attempt from the monitor's perspective. The circuit breaker likewise records one failure per logical
|
|
134
|
+
* attempt, not per callback invocation.
|
|
123
135
|
* @param metrics - The metrics object to update.
|
|
124
136
|
* @param method - The recovery method being attempted.
|
|
125
137
|
*/
|
|
@@ -294,6 +306,10 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
|
|
|
294
306
|
// Number of consecutive checks where currentTime did not advance. We require multiple consecutive stalls before triggering recovery to avoid reacting to momentary
|
|
295
307
|
// hiccups. Reset to 0 when progression is detected.
|
|
296
308
|
let stallCount = 0;
|
|
309
|
+
// Number of consecutive checks where the video reports paused state. Like stallCount, we require multiple consecutive paused checks (> stallCountThreshold) before
|
|
310
|
+
// triggering recovery. This filters out transient rebuffer pauses where the player briefly pauses itself to refill its buffer and resumes on its own. Without this
|
|
311
|
+
// hysteresis, every transient rebuffer pause triggers an unnecessary L1 recovery (play/unmute) that logs noise but does nothing useful.
|
|
312
|
+
let pauseCount = 0;
|
|
297
313
|
// Current escalation level (0-4). Level 0 means no recovery needed. Each time recovery is triggered, this increments to try increasingly aggressive actions.
|
|
298
314
|
// Resets to 0 after sustained healthy playback.
|
|
299
315
|
let escalationLevel = 0;
|
|
@@ -353,11 +369,18 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
|
|
|
353
369
|
// escalate directly to tab replacement. This catches the case where recovery reports success but the MediaRecorder/FFmpeg pipeline has silently died.
|
|
354
370
|
const SEGMENT_STALL_TIMEOUT = 10000; // 10 seconds.
|
|
355
371
|
// Tiny segment detection thresholds. Used for continuous segment size monitoring to detect dead capture pipelines. When video capture dies but audio continues,
|
|
356
|
-
// segments contain only audio data
|
|
357
|
-
// dead captures (18 bytes) and audio-only captures
|
|
358
|
-
const TINY_SEGMENT_THRESHOLD =
|
|
372
|
+
// segments contain only audio data. Audio is transcoded at a controlled bitrate (max 512Kbps), so audio-only segments are at most ~192KB for 3-second segments.
|
|
373
|
+
// The 500KB threshold catches both dead captures (18 bytes) and audio-only captures while staying well below the smallest video preset (480p/3Mbps ≈ 750KB/segment).
|
|
374
|
+
const TINY_SEGMENT_THRESHOLD = 512000; // 500KB - segments below this indicate dead or degraded capture.
|
|
359
375
|
const TINY_SEGMENT_COUNT_TRIGGER = 10; // Trigger recovery after 10 consecutive tiny segments (~20 seconds with 2-second segments).
|
|
376
|
+
// Fixed margin in milliseconds before the maxContinuousPlayback limit at which a proactive reload is triggered. Two minutes provides enough time for page
|
|
377
|
+
// navigation and video reinitialization to complete before the site enforces its cutoff.
|
|
378
|
+
const PROACTIVE_RELOAD_MARGIN_MS = 120000;
|
|
360
379
|
let recoveryGraceUntil = 0;
|
|
380
|
+
// Timestamp of the most recent full page navigation. Used to calculate elapsed continuous playback for proactive reload when maxContinuousPlayback is configured.
|
|
381
|
+
// Initialized to Date.now() because the monitor starts immediately after tuneToChannel() succeeds in stream setup, meaning a page load just completed. Reset
|
|
382
|
+
// after any successful page navigation recovery or tab replacement, but NOT after source reloads (L2) which preserve the page's JavaScript context.
|
|
383
|
+
let lastPageNavigationTime = Date.now();
|
|
361
384
|
// Pre-compute the selector type string for video element selection. This is passed to evaluate() calls.
|
|
362
385
|
const selectorType = buildVideoSelectorType(profile);
|
|
363
386
|
// Capture stream context for re-establishing on each interval tick. AsyncLocalStorage context is lost when entering setInterval callbacks.
|
|
@@ -458,6 +481,7 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
|
|
|
458
481
|
function resetRecoveryCounters() {
|
|
459
482
|
consecutiveTimeouts = 0;
|
|
460
483
|
consecutiveNavigationFailures = 0;
|
|
484
|
+
pauseCount = 0;
|
|
461
485
|
videoNotFoundCount = 0;
|
|
462
486
|
stallCount = 0;
|
|
463
487
|
}
|
|
@@ -492,9 +516,56 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
|
|
|
492
516
|
}
|
|
493
517
|
return { outcome: "failed" };
|
|
494
518
|
}
|
|
519
|
+
/**
|
|
520
|
+
* Applies successful tab replacement state. Updates page and context references, logs recovery duration, records metrics, and resets all failure/escalation state
|
|
521
|
+
* for the fresh tab. Consolidated here so the try and catch paths in executeTabReplacement share a single implementation.
|
|
522
|
+
* @param result - The successful tab replacement result containing the new page and context.
|
|
523
|
+
*/
|
|
524
|
+
function applyTabReplacementSuccess(result) {
|
|
525
|
+
currentPage = result.page;
|
|
526
|
+
currentContext = result.context;
|
|
527
|
+
const duration = formatRecoveryDuration(metrics.currentRecoveryStartTime ?? Date.now());
|
|
528
|
+
LOG.info("Recovered in %s via %s.", duration, RECOVERY_METHODS.tabReplacement);
|
|
529
|
+
recordRecoverySuccess(metrics, RECOVERY_METHODS.tabReplacement);
|
|
530
|
+
// Full state reset for fresh tab.
|
|
531
|
+
lastPageNavigationTime = Date.now();
|
|
532
|
+
resetRecoveryCounters();
|
|
533
|
+
resetEscalationState();
|
|
534
|
+
resetSegmentMonitoringState();
|
|
535
|
+
setRecoveryGracePeriod(3);
|
|
536
|
+
resetCircuitBreaker(circuitBreaker);
|
|
537
|
+
}
|
|
538
|
+
/**
|
|
539
|
+
* Handles tab replacement failure after all retry attempts are exhausted. Clears stale recovery metrics (preventing ghost "Recovered" logs from the
|
|
540
|
+
* deferred-success check), runs the circuit breaker, and detects zombie streams where the old page was destroyed but no replacement was created.
|
|
541
|
+
* @param context - Description of the failure for circuit breaker logging.
|
|
542
|
+
* @returns The tab replacement outcome (failed or terminated).
|
|
543
|
+
*/
|
|
544
|
+
function handleExhaustedTabReplacement(context) {
|
|
545
|
+
// Clear stale recovery metrics so the deferred-success check does not falsely log "Recovered" from leftover state set by recordRecoveryAttempt.
|
|
546
|
+
metrics.currentRecoveryStartTime = null;
|
|
547
|
+
metrics.currentRecoveryMethod = null;
|
|
548
|
+
LOG.warn("Tab replacement unsuccessful after retry.");
|
|
549
|
+
const failureOutcome = handleTabReplacementFailure(context);
|
|
550
|
+
// If the circuit breaker did not trip but the old page is gone (handler destroyed it before createPageWithCapture failed), the stream is unrecoverable. The
|
|
551
|
+
// next monitor tick would silently clear the interval via currentPage.isClosed() with no termination log, no status emission, and no cleanup — creating a
|
|
552
|
+
// zombie entry in the registry. Terminate explicitly instead.
|
|
553
|
+
if ((failureOutcome.outcome === "failed") && currentPage.isClosed()) {
|
|
554
|
+
LOG.error("Tab replacement failed and old page is closed. Stream is unrecoverable. Terminating stream.");
|
|
555
|
+
clearInterval(interval);
|
|
556
|
+
onCircuitBreak();
|
|
557
|
+
return { outcome: "terminated" };
|
|
558
|
+
}
|
|
559
|
+
return failureOutcome;
|
|
560
|
+
}
|
|
495
561
|
/**
|
|
496
562
|
* Executes tab replacement recovery with full error handling. This unified helper handles all tab replacement triggers (tiny segments, stalled capture, unresponsive
|
|
497
563
|
* tab) consistently, including metrics recording, success/failure logging, circuit breaker checks, and state resets.
|
|
564
|
+
*
|
|
565
|
+
* On failure, retries onTabReplacement once before giving up. The handler destroys old resources (capture, segmenter, FFmpeg, page) before calling
|
|
566
|
+
* createPageWithCapture, so a retry is the only chance to save the stream when the first attempt fails. All handler cleanup steps are idempotent on retry:
|
|
567
|
+
* rawCaptureStream.destroyed guard, segmenter stop() checks state.stopped, FFmpeg kill() checks ffmpeg.killed, page close checks !oldPage.isClosed(), and
|
|
568
|
+
* unregisterManagedPage is idempotent.
|
|
498
569
|
* @param issueType - Description of what triggered the replacement (for logging and UI display).
|
|
499
570
|
* @returns The tab replacement outcome.
|
|
500
571
|
*/
|
|
@@ -508,34 +579,44 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
|
|
|
508
579
|
lastRecoveryTime = Date.now();
|
|
509
580
|
lastIssueType = issueType;
|
|
510
581
|
lastIssueTime = Date.now();
|
|
582
|
+
const tabRecoveryElapsed = startTimer();
|
|
511
583
|
recordRecoveryAttempt(metrics, RECOVERY_METHODS.tabReplacement);
|
|
512
584
|
try {
|
|
513
|
-
|
|
585
|
+
let result = await onTabReplacement();
|
|
586
|
+
// First attempt failed — retry once. See idempotency notes in the JSDoc above.
|
|
587
|
+
if (!result) {
|
|
588
|
+
LOG.debug("recovery:tab", "Tab replacement attempt 1/2 failed. Retrying...");
|
|
589
|
+
try {
|
|
590
|
+
result = await onTabReplacement();
|
|
591
|
+
}
|
|
592
|
+
catch (retryError) {
|
|
593
|
+
LOG.debug("recovery:tab", "Tab replacement attempt 2/2 failed: %s.", formatError(retryError));
|
|
594
|
+
}
|
|
595
|
+
}
|
|
514
596
|
if (result) {
|
|
515
|
-
|
|
516
|
-
currentPage = result.page;
|
|
517
|
-
currentContext = result.context;
|
|
518
|
-
const duration = formatRecoveryDuration(metrics.currentRecoveryStartTime ?? Date.now());
|
|
519
|
-
LOG.info("Recovered in %s via %s.", duration, RECOVERY_METHODS.tabReplacement);
|
|
520
|
-
recordRecoverySuccess(metrics, RECOVERY_METHODS.tabReplacement);
|
|
521
|
-
// Full state reset for fresh tab.
|
|
522
|
-
resetRecoveryCounters();
|
|
523
|
-
resetEscalationState();
|
|
524
|
-
resetSegmentMonitoringState();
|
|
525
|
-
setRecoveryGracePeriod(3);
|
|
526
|
-
resetCircuitBreaker(circuitBreaker);
|
|
597
|
+
applyTabReplacementSuccess(result);
|
|
527
598
|
return { outcome: "success" };
|
|
528
599
|
}
|
|
529
|
-
|
|
530
|
-
LOG.warn("Tab replacement unsuccessful.");
|
|
531
|
-
return handleTabReplacementFailure("tab replacement unsuccessful");
|
|
600
|
+
return handleExhaustedTabReplacement("tab replacement unsuccessful");
|
|
532
601
|
}
|
|
533
602
|
catch (error) {
|
|
534
|
-
//
|
|
535
|
-
|
|
536
|
-
|
|
603
|
+
// Unexpected error (not from onTabReplacement — those are caught internally by the handler in hls.ts and return null). Guard against registry corruption,
|
|
604
|
+
// getStream failures, or other unexpected errors.
|
|
605
|
+
LOG.debug("recovery:tab", "Tab replacement attempt 1/2 failed: %s. Retrying...", formatError(error));
|
|
606
|
+
try {
|
|
607
|
+
const retryResult = await onTabReplacement();
|
|
608
|
+
if (retryResult) {
|
|
609
|
+
applyTabReplacementSuccess(retryResult);
|
|
610
|
+
return { outcome: "success" };
|
|
611
|
+
}
|
|
612
|
+
}
|
|
613
|
+
catch (retryError) {
|
|
614
|
+
LOG.debug("recovery:tab", "Tab replacement attempt 2/2 failed: %s.", formatError(retryError));
|
|
615
|
+
}
|
|
616
|
+
return handleExhaustedTabReplacement("tab replacement error");
|
|
537
617
|
}
|
|
538
618
|
finally {
|
|
619
|
+
LOG.debug("timing:recovery", "Tab replacement completed. Total: %sms.", tabRecoveryElapsed());
|
|
539
620
|
finalizeTabReplacement();
|
|
540
621
|
}
|
|
541
622
|
}
|
|
@@ -550,6 +631,7 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
|
|
|
550
631
|
* @returns Recovery result with the new context if successful.
|
|
551
632
|
*/
|
|
552
633
|
async function performPageNavigationRecovery() {
|
|
634
|
+
const navRecoveryElapsed = startTimer();
|
|
553
635
|
// Track page count before navigation to detect unexpected new tabs (popups, ads).
|
|
554
636
|
const browser = currentPage.browser();
|
|
555
637
|
const pageCountBefore = (await browser.pages()).length;
|
|
@@ -560,24 +642,27 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
|
|
|
560
642
|
// Check for unexpected new tabs created during tuning.
|
|
561
643
|
const pageCountAfter = (await browser.pages()).length;
|
|
562
644
|
if (pageCountAfter > pageCountBefore) {
|
|
563
|
-
LOG.
|
|
645
|
+
LOG.debug("recovery:nav", "Detected %s new tab(s) created during navigation.", pageCountAfter - pageCountBefore);
|
|
564
646
|
}
|
|
565
647
|
// Validate that we're on the expected page.
|
|
566
648
|
const currentUrl = currentPage.url();
|
|
567
649
|
const expectedHostname = new URL(url).hostname;
|
|
568
|
-
if (currentUrl.
|
|
569
|
-
LOG.
|
|
650
|
+
if (!currentUrl.includes(expectedHostname)) {
|
|
651
|
+
LOG.debug("recovery:nav", "Page URL after navigation (%s) does not match expected hostname.", currentUrl);
|
|
570
652
|
}
|
|
571
653
|
// Validate that the video element is accessible and has reasonable state.
|
|
572
654
|
const validationState = await validateVideoElement(newContext, selectorType);
|
|
573
655
|
if (validationState.found) {
|
|
656
|
+
LOG.debug("timing:recovery", "Page navigation recovery succeeded. Total: %sms.", navRecoveryElapsed());
|
|
574
657
|
return { newContext, success: true };
|
|
575
658
|
}
|
|
576
659
|
LOG.warn("Page navigation completed but video element not found in new context.");
|
|
660
|
+
LOG.debug("timing:recovery", "Page navigation recovery failed (no video). Total: %sms.", navRecoveryElapsed());
|
|
577
661
|
return { success: false };
|
|
578
662
|
}
|
|
579
663
|
catch (error) {
|
|
580
664
|
LOG.warn("Failed to reinitialize video after page navigation: %s.", formatError(error));
|
|
665
|
+
LOG.debug("timing:recovery", "Page navigation recovery failed (error). Total: %sms.", navRecoveryElapsed());
|
|
581
666
|
return { success: false };
|
|
582
667
|
}
|
|
583
668
|
}
|
|
@@ -633,7 +718,7 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
|
|
|
633
718
|
const errorMessage = formatError(stateError);
|
|
634
719
|
const isContextDestroyed = ["context", "destroyed", "detached", "target closed"].some((term) => errorMessage.toLowerCase().includes(term));
|
|
635
720
|
if (isContextDestroyed) {
|
|
636
|
-
LOG.
|
|
721
|
+
LOG.debug("recovery:context", "Video context was invalidated (frame detached). Will re-search for video.");
|
|
637
722
|
contextInvalidated = true;
|
|
638
723
|
}
|
|
639
724
|
else {
|
|
@@ -645,7 +730,7 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
|
|
|
645
730
|
const state = stateInfo ? { ...stateInfo, time: stateInfo.currentTime } : null;
|
|
646
731
|
// If context was invalidated (frame detached), immediately try to find the video in a new context.
|
|
647
732
|
if (contextInvalidated) {
|
|
648
|
-
LOG.
|
|
733
|
+
LOG.debug("recovery:context", "Re-searching for video after context invalidation.");
|
|
649
734
|
try {
|
|
650
735
|
const newContext = await findVideoContext(currentPage, profile);
|
|
651
736
|
const validationState = await validateVideoElement(newContext, selectorType);
|
|
@@ -704,7 +789,7 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
|
|
|
704
789
|
}
|
|
705
790
|
// After 2+ failures, try re-searching frames to see if video moved to a different context.
|
|
706
791
|
if (videoNotFoundCount === 2) {
|
|
707
|
-
LOG.
|
|
792
|
+
LOG.debug("recovery:context", "Re-searching frames for video element.");
|
|
708
793
|
try {
|
|
709
794
|
const newContext = await findVideoContext(currentPage, profile);
|
|
710
795
|
const validationState = await validateVideoElement(newContext, selectorType);
|
|
@@ -767,6 +852,7 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
|
|
|
767
852
|
LOG.info("Recovered in %s via %s.", duration, RECOVERY_METHODS.pageNavigation);
|
|
768
853
|
recordRecoverySuccess(metrics, RECOVERY_METHODS.pageNavigation);
|
|
769
854
|
// Reset state after successful page navigation recovery.
|
|
855
|
+
lastPageNavigationTime = Date.now();
|
|
770
856
|
resetRecoveryCounters();
|
|
771
857
|
resetEscalationState();
|
|
772
858
|
resetSegmentMonitoringState();
|
|
@@ -855,12 +941,11 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
|
|
|
855
941
|
wasInTinySegmentState = true;
|
|
856
942
|
if (consecutiveTinySegments >= TINY_SEGMENT_COUNT_TRIGGER) {
|
|
857
943
|
LOG.warn("Detected %d consecutive tiny segments (%d bytes). Capture pipeline appears dead.", consecutiveTinySegments, segmentSize);
|
|
858
|
-
// Trigger tab replacement if available, otherwise let circuit breaker handle it via segmentProductionStalled.
|
|
944
|
+
// Trigger tab replacement if available, otherwise let circuit breaker handle it via segmentProductionStalled. Return unconditionally after tab
|
|
945
|
+
// replacement (matching stalled-capture and unresponsive-tab triggers) to avoid falling through the rest of the tick with stale pre-replacement state.
|
|
859
946
|
if (onTabReplacement && !recoveryInProgress) {
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
return;
|
|
863
|
-
}
|
|
947
|
+
await executeTabReplacement("tiny segments");
|
|
948
|
+
return;
|
|
864
949
|
}
|
|
865
950
|
else if (!onTabReplacement) {
|
|
866
951
|
// No tab replacement callback - set stalled flag for circuit breaker.
|
|
@@ -872,7 +957,7 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
|
|
|
872
957
|
// Valid segment size. Check for spontaneous recovery from tiny segment state. We don't mark discontinuity here - only tab replacement marks discontinuity.
|
|
873
958
|
// Self-healing may be transient and not require decoder reset.
|
|
874
959
|
if (wasInTinySegmentState) {
|
|
875
|
-
LOG.debug("Segment production self-healed (%d bytes).", segmentSize);
|
|
960
|
+
LOG.debug("recovery:segments", "Segment production self-healed (%d bytes).", segmentSize);
|
|
876
961
|
}
|
|
877
962
|
// Reset tiny segment tracking.
|
|
878
963
|
consecutiveTinySegments = 0;
|
|
@@ -885,7 +970,7 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
|
|
|
885
970
|
* issues), we re-minimize to reduce GPU usage.
|
|
886
971
|
*/
|
|
887
972
|
if (pendingReMinimize && isProgressing && !state.paused && !state.error && !state.ended) {
|
|
888
|
-
LOG.debug("Re-minimizing browser window after successful recovery.");
|
|
973
|
+
LOG.debug("recovery", "Re-minimizing browser window after successful recovery.");
|
|
889
974
|
pendingReMinimize = false;
|
|
890
975
|
await resizeAndMinimizeWindow(currentPage, true);
|
|
891
976
|
}
|
|
@@ -900,14 +985,25 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
|
|
|
900
985
|
stallCount = 0;
|
|
901
986
|
}
|
|
902
987
|
/*
|
|
988
|
+
* Pause counter management. We increment pauseCount when video.paused is true and reset when it clears. This provides the same hysteresis as stall detection,
|
|
989
|
+
* filtering out transient rebuffer pauses (where the player briefly pauses to refill its buffer) while still catching genuine persistent pauses.
|
|
990
|
+
*/
|
|
991
|
+
if (state.paused) {
|
|
992
|
+
pauseCount++;
|
|
993
|
+
}
|
|
994
|
+
else {
|
|
995
|
+
pauseCount = 0;
|
|
996
|
+
}
|
|
997
|
+
/*
|
|
903
998
|
* Recovery decision. We trigger recovery when any of these conditions are met AND we're not within the recovery grace period:
|
|
904
999
|
* - Video has an error state
|
|
905
1000
|
* - Video ended (live streams shouldn't end)
|
|
906
|
-
* - Video is paused and not just buffering
|
|
1001
|
+
* - Video is paused persistently (pauseCount exceeds threshold and not just buffering)
|
|
907
1002
|
* - Video is stalled for too long (stallCount exceeds threshold and not in buffering grace)
|
|
908
1003
|
* - Segment production has stalled after recovery (capture pipeline dead)
|
|
909
1004
|
*/
|
|
910
|
-
const needsRecovery = !withinRecoveryGrace && (state.error || state.ended ||
|
|
1005
|
+
const needsRecovery = !withinRecoveryGrace && (state.error || state.ended ||
|
|
1006
|
+
(state.paused && !withinBufferingGrace && (pauseCount > CONFIG.playback.stallCountThreshold)) ||
|
|
911
1007
|
(!isProgressing && !withinBufferingGrace && (stallCount > CONFIG.playback.stallCountThreshold)) ||
|
|
912
1008
|
segmentProductionStalled);
|
|
913
1009
|
/*
|
|
@@ -933,6 +1029,58 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
|
|
|
933
1029
|
}
|
|
934
1030
|
}
|
|
935
1031
|
/*
|
|
1032
|
+
* Proactive page reload. Some streaming sites enforce a maximum continuous playback duration (e.g., NBC.com cuts streams after 4 hours). When a domain
|
|
1033
|
+
* configures maxContinuousPlayback, we proactively reload the page before the site's limit expires to maintain uninterrupted streaming. The reload triggers
|
|
1034
|
+
* PROACTIVE_RELOAD_MARGIN_MS (2 minutes) before the configured limit, giving enough time for page navigation and video reinitialization.
|
|
1035
|
+
*
|
|
1036
|
+
* This check runs only when playback is healthy (escalationLevel === 0), not within a recovery grace period, and progressing normally. If recovery is already
|
|
1037
|
+
* in progress, the ongoing recovery will eventually perform a page navigation if needed. The page reload rate limit is also checked to avoid consuming reload
|
|
1038
|
+
* budget that error recovery needs. The timer resets after any successful full page navigation (proactive or recovery-triggered).
|
|
1039
|
+
*/
|
|
1040
|
+
if ((profile.maxContinuousPlayback !== null) && (escalationLevel === 0) && !withinRecoveryGrace && isProgressing && !state.paused && !state.error &&
|
|
1041
|
+
!state.ended) {
|
|
1042
|
+
const maxPlaybackMs = profile.maxContinuousPlayback * 3600000;
|
|
1043
|
+
const elapsedMs = now - lastPageNavigationTime;
|
|
1044
|
+
if (elapsedMs >= (maxPlaybackMs - PROACTIVE_RELOAD_MARGIN_MS)) {
|
|
1045
|
+
const elapsedHours = (elapsedMs / 3600000).toFixed(1);
|
|
1046
|
+
LOG.info("Proactive reload after %sh of continuous playback (site limit: %sh). Reloading page to prevent stream cutoff.", elapsedHours, String(profile.maxContinuousPlayback));
|
|
1047
|
+
recoveryInProgress = true;
|
|
1048
|
+
// Check page reload rate limit before attempting. Proactive reload is best-effort maintenance — if the reload budget is exhausted from recent error
|
|
1049
|
+
// recoveries, we gracefully yield. If the site eventually cuts the stream, normal error recovery handles it.
|
|
1050
|
+
const reloadWindow = now - CONFIG.playback.pageReloadWindow;
|
|
1051
|
+
pageReloadTimestamps = pageReloadTimestamps.filter((ts) => ts > reloadWindow);
|
|
1052
|
+
if (pageReloadTimestamps.length >= CONFIG.playback.maxPageReloads) {
|
|
1053
|
+
LOG.warn("Proactive reload deferred — page navigation rate limit reached (%s in %s minutes).", CONFIG.playback.maxPageReloads, Math.round(CONFIG.playback.pageReloadWindow / 60000));
|
|
1054
|
+
// Set a grace period to prevent this deferral from re-triggering every 2 seconds while the rate limit remains in effect. The 10-second L3 grace
|
|
1055
|
+
// period spaces out re-checks, and the rate-limit window (default 15 minutes) will eventually expire old timestamps to allow the proactive reload. We
|
|
1056
|
+
// set recoveryGraceUntil directly rather than calling setRecoveryGracePeriod() because no recovery action was performed — the window state is unchanged
|
|
1057
|
+
// and pendingReMinimize should not be set.
|
|
1058
|
+
recoveryGraceUntil = now + recoveryGracePeriods[3];
|
|
1059
|
+
recoveryInProgress = false;
|
|
1060
|
+
emitStatusUpdate();
|
|
1061
|
+
return;
|
|
1062
|
+
}
|
|
1063
|
+
pageReloadTimestamps.push(now);
|
|
1064
|
+
const recoveryResult = await performPageNavigationRecovery();
|
|
1065
|
+
// Page navigation disrupted the video stream. Mark a discontinuity so HLS clients resynchronize their decoders.
|
|
1066
|
+
markStreamDiscontinuity();
|
|
1067
|
+
setRecoveryGracePeriod(3);
|
|
1068
|
+
if (recoveryResult.success && recoveryResult.newContext) {
|
|
1069
|
+
currentContext = recoveryResult.newContext;
|
|
1070
|
+
lastPageNavigationTime = Date.now();
|
|
1071
|
+
LOG.info("Proactive reload completed successfully.");
|
|
1072
|
+
resetRecoveryCounters();
|
|
1073
|
+
resetSegmentMonitoringState();
|
|
1074
|
+
}
|
|
1075
|
+
else {
|
|
1076
|
+
LOG.warn("Proactive reload unsuccessful. Will retry after recovery grace period.");
|
|
1077
|
+
}
|
|
1078
|
+
recoveryInProgress = false;
|
|
1079
|
+
emitStatusUpdate();
|
|
1080
|
+
return;
|
|
1081
|
+
}
|
|
1082
|
+
}
|
|
1083
|
+
/*
|
|
936
1084
|
* Recovery execution. When recovery is needed, we update circuit breaker state, determine the appropriate recovery level based on issue type and history, and
|
|
937
1085
|
* execute the recovery action. The recovery system is issue-aware:
|
|
938
1086
|
* - Paused issues try L1 (play/unmute) first since it works ~50% of the time for paused state
|
|
@@ -1036,7 +1184,7 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
|
|
|
1036
1184
|
// Safety check: If page navigation has failed twice consecutively, fall back to source reload. This prevents getting stuck in a loop when navigation
|
|
1037
1185
|
// itself is broken (e.g., network issues, site blocking).
|
|
1038
1186
|
if (consecutiveNavigationFailures >= 2) {
|
|
1039
|
-
LOG.
|
|
1187
|
+
LOG.warn("Page navigation has failed %s consecutive times. Falling back to source reload recovery.", consecutiveNavigationFailures);
|
|
1040
1188
|
escalationLevel = 2;
|
|
1041
1189
|
consecutiveNavigationFailures = 0;
|
|
1042
1190
|
// Reset source reload tracking so the fallback L2 gets a fair chance. Without this, the next recovery cycle would skip L2 and try L3 again.
|
|
@@ -1050,7 +1198,7 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
|
|
|
1050
1198
|
return ts > reloadWindow;
|
|
1051
1199
|
});
|
|
1052
1200
|
if (pageReloadTimestamps.length >= CONFIG.playback.maxPageReloads) {
|
|
1053
|
-
LOG.
|
|
1201
|
+
LOG.warn("Exceeded maximum page navigations (%s in %s minutes). Falling back to source reload.", CONFIG.playback.maxPageReloads, Math.round(CONFIG.playback.pageReloadWindow / 60000));
|
|
1054
1202
|
escalationLevel = 2;
|
|
1055
1203
|
// Reset source reload tracking so the fallback L2 gets a fair chance.
|
|
1056
1204
|
sourceReloadAttempted = false;
|
|
@@ -1071,6 +1219,7 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
|
|
|
1071
1219
|
LOG.info("Recovered in %s via %s.", duration, RECOVERY_METHODS.pageNavigation);
|
|
1072
1220
|
recordRecoverySuccess(metrics, RECOVERY_METHODS.pageNavigation);
|
|
1073
1221
|
// Reset state after successful page navigation recovery.
|
|
1222
|
+
lastPageNavigationTime = Date.now();
|
|
1074
1223
|
resetRecoveryCounters();
|
|
1075
1224
|
resetEscalationState();
|
|
1076
1225
|
resetSegmentMonitoringState();
|
|
@@ -1120,7 +1269,7 @@ export function monitorPlaybackHealth(page, context, profile, url, streamId, str
|
|
|
1120
1269
|
// Log abort errors at debug level since they're expected during stream termination. Log other errors at error level.
|
|
1121
1270
|
const errorMessage = formatError(error);
|
|
1122
1271
|
if (errorMessage.includes("aborted")) {
|
|
1123
|
-
LOG.debug("Monitor check aborted: %s.", errorMessage);
|
|
1272
|
+
LOG.debug("recovery", "Monitor check aborted: %s.", errorMessage);
|
|
1124
1273
|
}
|
|
1125
1274
|
else {
|
|
1126
1275
|
LOG.error("Monitor check failed: %s.", errorMessage);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../src/streaming/monitor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../src/streaming/monitor.ts"],"names":[],"mappings":"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"}
|