streamer-node 1.0.31 → 1.0.37
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/package.json +6 -2
- package/dist/scripts/README.md +670 -0
- package/dist/scripts/install-streamer-node.sh +117 -0
- package/dist/scripts/reframe_ball.py +354 -0
- package/dist/src/application/interfaces/StartStreamUseCase.types.d.ts +3 -1
- package/dist/src/application/interfaces/StartStreamUseCase.types.d.ts.map +1 -1
- package/dist/src/application/interfaces/StartStreamUseCase.types.js.map +1 -1
- package/dist/src/application/services/HttpClient.d.ts +21 -0
- package/dist/src/application/services/HttpClient.d.ts.map +1 -1
- package/dist/src/application/services/HttpClient.js +37 -5
- package/dist/src/application/services/HttpClient.js.map +1 -1
- package/dist/src/application/services/StreamManagerService.d.ts.map +1 -1
- package/dist/src/application/services/StreamManagerService.js +2 -0
- package/dist/src/application/services/StreamManagerService.js.map +1 -1
- package/dist/src/application/use-cases/CaptureHighlightUseCase.d.ts +52 -0
- package/dist/src/application/use-cases/CaptureHighlightUseCase.d.ts.map +1 -0
- package/dist/src/application/use-cases/CaptureHighlightUseCase.js +169 -0
- package/dist/src/application/use-cases/CaptureHighlightUseCase.js.map +1 -0
- package/dist/src/application/use-cases/StartStreamUseCase.d.ts +9 -1
- package/dist/src/application/use-cases/StartStreamUseCase.d.ts.map +1 -1
- package/dist/src/application/use-cases/StartStreamUseCase.js +125 -2
- package/dist/src/application/use-cases/StartStreamUseCase.js.map +1 -1
- package/dist/src/application/use-cases/StopStreamUseCase.d.ts +5 -1
- package/dist/src/application/use-cases/StopStreamUseCase.d.ts.map +1 -1
- package/dist/src/application/use-cases/StopStreamUseCase.js +7 -1
- package/dist/src/application/use-cases/StopStreamUseCase.js.map +1 -1
- package/dist/src/domain/events/StreamEvent.d.ts +5 -0
- package/dist/src/domain/events/StreamEvent.d.ts.map +1 -1
- package/dist/src/domain/services/BallReframer.d.ts +35 -0
- package/dist/src/domain/services/BallReframer.d.ts.map +1 -0
- package/dist/src/domain/services/BallReframer.js +3 -0
- package/dist/src/domain/services/BallReframer.js.map +1 -0
- package/dist/src/domain/services/FFmpegService.d.ts +6 -2
- package/dist/src/domain/services/FFmpegService.d.ts.map +1 -1
- package/dist/src/domain/services/HighlightSignalSource.d.ts +113 -0
- package/dist/src/domain/services/HighlightSignalSource.d.ts.map +1 -0
- package/dist/src/domain/services/HighlightSignalSource.js +3 -0
- package/dist/src/domain/services/HighlightSignalSource.js.map +1 -0
- package/dist/src/domain/services/SSEService.d.ts +1 -0
- package/dist/src/domain/services/SSEService.d.ts.map +1 -1
- package/dist/src/infrastructure/config/Config.d.ts +32 -0
- package/dist/src/infrastructure/config/Config.d.ts.map +1 -1
- package/dist/src/infrastructure/config/Config.js +60 -0
- package/dist/src/infrastructure/config/Config.js.map +1 -1
- package/dist/src/infrastructure/listeners/SupabaseListener.d.ts +5 -0
- package/dist/src/infrastructure/listeners/SupabaseListener.d.ts.map +1 -1
- package/dist/src/infrastructure/listeners/SupabaseListener.js +43 -5
- package/dist/src/infrastructure/listeners/SupabaseListener.js.map +1 -1
- package/dist/src/infrastructure/logging/LogShippingService.d.ts +3 -1
- package/dist/src/infrastructure/logging/LogShippingService.d.ts.map +1 -1
- package/dist/src/infrastructure/logging/LogShippingService.js +13 -4
- package/dist/src/infrastructure/logging/LogShippingService.js.map +1 -1
- package/dist/src/infrastructure/logging/RemoteLogger.d.ts +1 -0
- package/dist/src/infrastructure/logging/RemoteLogger.d.ts.map +1 -1
- package/dist/src/infrastructure/logging/RemoteLogger.js +1 -1
- package/dist/src/infrastructure/logging/RemoteLogger.js.map +1 -1
- package/dist/src/infrastructure/services/AdDownloaderService.d.ts +85 -0
- package/dist/src/infrastructure/services/AdDownloaderService.d.ts.map +1 -0
- package/dist/src/infrastructure/services/AdDownloaderService.js +530 -0
- package/dist/src/infrastructure/services/AdDownloaderService.js.map +1 -0
- package/dist/src/infrastructure/services/AdRotator.d.ts +63 -0
- package/dist/src/infrastructure/services/AdRotator.d.ts.map +1 -0
- package/dist/src/infrastructure/services/AdRotator.js +223 -0
- package/dist/src/infrastructure/services/AdRotator.js.map +1 -0
- package/dist/src/infrastructure/services/HighlightBufferManager.d.ts +65 -0
- package/dist/src/infrastructure/services/HighlightBufferManager.d.ts.map +1 -0
- package/dist/src/infrastructure/services/HighlightBufferManager.js +203 -0
- package/dist/src/infrastructure/services/HighlightBufferManager.js.map +1 -0
- package/dist/src/infrastructure/services/HighlightBufferRegistry.d.ts +23 -0
- package/dist/src/infrastructure/services/HighlightBufferRegistry.d.ts.map +1 -0
- package/dist/src/infrastructure/services/HighlightBufferRegistry.js +44 -0
- package/dist/src/infrastructure/services/HighlightBufferRegistry.js.map +1 -0
- package/dist/src/infrastructure/services/HighlightExtractorService.d.ts +65 -0
- package/dist/src/infrastructure/services/HighlightExtractorService.d.ts.map +1 -0
- package/dist/src/infrastructure/services/HighlightExtractorService.js +264 -0
- package/dist/src/infrastructure/services/HighlightExtractorService.js.map +1 -0
- package/dist/src/infrastructure/services/HighlightRendererService.d.ts +38 -0
- package/dist/src/infrastructure/services/HighlightRendererService.d.ts.map +1 -0
- package/dist/src/infrastructure/services/HighlightRendererService.js +182 -0
- package/dist/src/infrastructure/services/HighlightRendererService.js.map +1 -0
- package/dist/src/infrastructure/services/NodeFFmpegService.d.ts +6 -4
- package/dist/src/infrastructure/services/NodeFFmpegService.d.ts.map +1 -1
- package/dist/src/infrastructure/services/NodeFFmpegService.js +154 -32
- package/dist/src/infrastructure/services/NodeFFmpegService.js.map +1 -1
- package/dist/src/infrastructure/services/NodeSSEService.d.ts +8 -0
- package/dist/src/infrastructure/services/NodeSSEService.d.ts.map +1 -1
- package/dist/src/infrastructure/services/NodeSSEService.js +71 -27
- package/dist/src/infrastructure/services/NodeSSEService.js.map +1 -1
- package/dist/src/infrastructure/services/NullBallReframer.d.ts +11 -0
- package/dist/src/infrastructure/services/NullBallReframer.d.ts.map +1 -0
- package/dist/src/infrastructure/services/NullBallReframer.js +16 -0
- package/dist/src/infrastructure/services/NullBallReframer.js.map +1 -0
- package/dist/src/infrastructure/services/PythonBallReframer.d.ts +35 -0
- package/dist/src/infrastructure/services/PythonBallReframer.d.ts.map +1 -0
- package/dist/src/infrastructure/services/PythonBallReframer.js +238 -0
- package/dist/src/infrastructure/services/PythonBallReframer.js.map +1 -0
- package/dist/src/infrastructure/services/SerialHighlightListener.d.ts +45 -0
- package/dist/src/infrastructure/services/SerialHighlightListener.d.ts.map +1 -0
- package/dist/src/infrastructure/services/SerialHighlightListener.js +440 -0
- package/dist/src/infrastructure/services/SerialHighlightListener.js.map +1 -0
- package/dist/src/infrastructure/services/YouTubeUploadService.d.ts +36 -0
- package/dist/src/infrastructure/services/YouTubeUploadService.d.ts.map +1 -0
- package/dist/src/infrastructure/services/YouTubeUploadService.js +402 -0
- package/dist/src/infrastructure/services/YouTubeUploadService.js.map +1 -0
- package/dist/src/infrastructure/utils/ResourceSampler.d.ts +47 -0
- package/dist/src/infrastructure/utils/ResourceSampler.d.ts.map +1 -0
- package/dist/src/infrastructure/utils/ResourceSampler.js +102 -0
- package/dist/src/infrastructure/utils/ResourceSampler.js.map +1 -0
- package/dist/src/infrastructure/utils/lowPriority.d.ts +29 -0
- package/dist/src/infrastructure/utils/lowPriority.d.ts.map +1 -0
- package/dist/src/infrastructure/utils/lowPriority.js +31 -0
- package/dist/src/infrastructure/utils/lowPriority.js.map +1 -0
- package/dist/src/infrastructure/utils/paths.d.ts +27 -0
- package/dist/src/infrastructure/utils/paths.d.ts.map +1 -0
- package/dist/src/infrastructure/utils/paths.js +69 -0
- package/dist/src/infrastructure/utils/paths.js.map +1 -0
- package/dist/src/infrastructure/utils/spawnToFile.d.ts +20 -0
- package/dist/src/infrastructure/utils/spawnToFile.d.ts.map +1 -0
- package/dist/src/infrastructure/utils/spawnToFile.js +98 -0
- package/dist/src/infrastructure/utils/spawnToFile.js.map +1 -0
- package/dist/src/main.js +228 -2
- package/dist/src/main.js.map +1 -1
- package/package.json +6 -2
|
@@ -38,6 +38,7 @@ const child_process_1 = require("child_process");
|
|
|
38
38
|
const fs = __importStar(require("fs"));
|
|
39
39
|
const path = __importStar(require("path"));
|
|
40
40
|
const canvas_1 = require("@napi-rs/canvas");
|
|
41
|
+
const paths_1 = require("../utils/paths");
|
|
41
42
|
class NodeFFmpegService {
|
|
42
43
|
constructor(logger, config) {
|
|
43
44
|
this.logger = logger;
|
|
@@ -56,8 +57,8 @@ class NodeFFmpegService {
|
|
|
56
57
|
* The restart mechanism relies on process exit events and the retry parameter
|
|
57
58
|
* to handle stream recovery after failures.
|
|
58
59
|
*/
|
|
59
|
-
async startStream(cameraUrl, streamKey, hasAudio, courtId, retry, isScorecardActivated) {
|
|
60
|
-
const command = this.buildStreamCommand(cameraUrl, streamKey, hasAudio, courtId, isScorecardActivated);
|
|
60
|
+
async startStream(cameraUrl, streamKey, hasAudio, courtId, retry, isScorecardActivated, adPaths, highlightBufferDir) {
|
|
61
|
+
const command = this.buildStreamCommand(cameraUrl, streamKey, hasAudio, courtId, isScorecardActivated, adPaths, highlightBufferDir);
|
|
61
62
|
this.logger.info("Command full form", command);
|
|
62
63
|
this.logger.info("Starting FFmpeg process", {
|
|
63
64
|
command: command.fullCommand,
|
|
@@ -270,8 +271,8 @@ class NodeFFmpegService {
|
|
|
270
271
|
});
|
|
271
272
|
});
|
|
272
273
|
}
|
|
273
|
-
buildStreamCommand(cameraUrl, streamKey, hasAudio, courtId, isScorecardActivated) {
|
|
274
|
-
const rtmpUrl =
|
|
274
|
+
buildStreamCommand(cameraUrl, streamKey, hasAudio, courtId, isScorecardActivated, adPaths, highlightBufferDir) {
|
|
275
|
+
const rtmpUrl = `${this.config.get().stream.youtubeRtmpBase}/${streamKey}`;
|
|
275
276
|
let fakeAudioInputCounter = 0;
|
|
276
277
|
let args = [];
|
|
277
278
|
// Add input parameters
|
|
@@ -291,45 +292,152 @@ class NodeFFmpegService {
|
|
|
291
292
|
const dsInputIndex = 1 + fakeAudioInputCounter;
|
|
292
293
|
args.push("-i", this.clientLogoPath); // Input 2: Client logo
|
|
293
294
|
const clientInputIndex = 2 + fakeAudioInputCounter;
|
|
295
|
+
let nextInputIndex = 3 + fakeAudioInputCounter;
|
|
294
296
|
let filterComplex = "";
|
|
297
|
+
// Optional scorecard overlay (top-left). Adds one input before any ads.
|
|
298
|
+
let scoreInputIndex = null;
|
|
295
299
|
if (isScorecardActivated) {
|
|
296
300
|
const scoreOverlayPath = this.getScoreOverlayPath(courtId);
|
|
297
|
-
|
|
301
|
+
// Always start from a fully transparent overlay so nothing is shown until
|
|
302
|
+
// the first live score update arrives. This also wipes any stale scorecard
|
|
303
|
+
// left on disk from a previous match on this court.
|
|
304
|
+
this.resetScoreOverlay(scoreOverlayPath);
|
|
298
305
|
// Treat the overlay PNG as a continuously looping sequence of images
|
|
299
306
|
// This allows FFmpeg to reflect file updates cleanly as they are overwritten
|
|
300
307
|
args.push("-f", "image2", "-loop", "1", "-i", scoreOverlayPath);
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
308
|
+
scoreInputIndex = nextInputIndex++;
|
|
309
|
+
}
|
|
310
|
+
// Resolve left/right ad paths and push each as a new input if present.
|
|
311
|
+
// These are fixed PNG "slot" files managed by AdRotator: it overwrites them
|
|
312
|
+
// on a timer to rotate the pool, and ffmpeg reflects each new file via the
|
|
313
|
+
// image2 loop below (same live-reload trick as the score overlay). A missing
|
|
314
|
+
// slot file simply means that side has no ad this session.
|
|
315
|
+
const leftAdPath = adPaths?.left && fs.existsSync(adPaths.left) ? adPaths.left : null;
|
|
316
|
+
const rightAdPath = adPaths?.right && fs.existsSync(adPaths.right) ? adPaths.right : null;
|
|
317
|
+
let leftAdInputIndex = null;
|
|
318
|
+
let rightAdInputIndex = null;
|
|
319
|
+
if (leftAdPath) {
|
|
320
|
+
args.push(...this.buildAdInputFlags(leftAdPath));
|
|
321
|
+
leftAdInputIndex = nextInputIndex++;
|
|
322
|
+
}
|
|
323
|
+
if (rightAdPath) {
|
|
324
|
+
args.push(...this.buildAdInputFlags(rightAdPath));
|
|
325
|
+
rightAdInputIndex = nextInputIndex++;
|
|
326
|
+
}
|
|
327
|
+
const hasAnyAd = leftAdInputIndex !== null || rightAdInputIndex !== null;
|
|
328
|
+
// Highlight buffer: when a buffer dir is configured, branch the scaled
|
|
329
|
+
// frame BEFORE any overlay is applied. One copy ([base]) continues into
|
|
330
|
+
// the existing overlay/RTMP chain completely unchanged; the other
|
|
331
|
+
// ([hlbuf]) becomes a second output that records a raw (no ads/logos)
|
|
332
|
+
// rolling buffer for later highlight-clip extraction. This keeps the
|
|
333
|
+
// camera connection count at exactly one — no second ffmpeg process, no
|
|
334
|
+
// proxy — the split happens inside this same command.
|
|
335
|
+
// Fail-soft: the highlight buffer is a non-critical, secondary output. If
|
|
336
|
+
// its directory can't be created (bad path, permissions, disk full), we
|
|
337
|
+
// must NOT let that abort the live stream — disable the buffer branch for
|
|
338
|
+
// this run and build the command exactly as if it were off. Without this,
|
|
339
|
+
// a throw here propagates up and leaves the stream wedged (the caller's
|
|
340
|
+
// catch doesn't reset state), blocking future starts for the court.
|
|
341
|
+
let highlightBufferEnabled = !!highlightBufferDir;
|
|
342
|
+
if (highlightBufferEnabled) {
|
|
343
|
+
try {
|
|
344
|
+
(0, paths_1.ensureDirSync)(highlightBufferDir);
|
|
345
|
+
}
|
|
346
|
+
catch (error) {
|
|
347
|
+
this.logger.warn("Failed to create highlight buffer dir; continuing without highlight buffer", {
|
|
348
|
+
highlightBufferDir,
|
|
349
|
+
error: error instanceof Error ? error.message : String(error),
|
|
350
|
+
});
|
|
351
|
+
highlightBufferEnabled = false;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
// Build filter graph
|
|
355
|
+
const steps = highlightBufferEnabled
|
|
356
|
+
? ["[0:v] scale=1920:1080 [scaled];", "[scaled] split=2 [base][hlbuf];"]
|
|
357
|
+
: ["[0:v] scale=1920:1080 [base];"];
|
|
358
|
+
if (scoreInputIndex !== null) {
|
|
359
|
+
steps.push(`[${scoreInputIndex}:v] scale=420:-1:force_original_aspect_ratio=decrease [score];`);
|
|
360
|
+
}
|
|
361
|
+
steps.push(`[${dsInputIndex}:v] scale=500:140:force_original_aspect_ratio=decrease [ds];`, `[${clientInputIndex}:v] scale=400:140:force_original_aspect_ratio=decrease [client];`);
|
|
362
|
+
if (leftAdInputIndex !== null) {
|
|
363
|
+
steps.push(`[${leftAdInputIndex}:v] scale=220:500:force_original_aspect_ratio=decrease [leftAd];`);
|
|
364
|
+
}
|
|
365
|
+
if (rightAdInputIndex !== null) {
|
|
366
|
+
steps.push(`[${rightAdInputIndex}:v] scale=220:500:force_original_aspect_ratio=decrease [rightAd];`);
|
|
367
|
+
}
|
|
368
|
+
// Overlay chain: base → (score) → ds → client → (leftAd) → (rightAd)
|
|
369
|
+
if (scoreInputIndex !== null) {
|
|
370
|
+
steps.push("[base][score] overlay=30:30 [tmp0];", "[tmp0][ds] overlay=main_w-overlay_w-10:main_h-overlay_h-10 [tmp1];");
|
|
371
|
+
}
|
|
372
|
+
else {
|
|
373
|
+
steps.push("[base][ds] overlay=main_w-overlay_w-10:main_h-overlay_h-10 [tmp1];");
|
|
374
|
+
}
|
|
375
|
+
// After client overlay: label output [tmp2] if ads follow, else leave unlabeled (final output)
|
|
376
|
+
if (hasAnyAd) {
|
|
377
|
+
steps.push("[tmp1][client] overlay=main_w-overlay_w-10:10 [tmp2];");
|
|
378
|
+
const adSlots = [
|
|
379
|
+
leftAdInputIndex !== null ? { label: "leftAd", pos: "10:(main_h-overlay_h)/2" } : null,
|
|
380
|
+
rightAdInputIndex !== null ? { label: "rightAd", pos: "main_w-overlay_w-10:(main_h-overlay_h)/2" } : null,
|
|
381
|
+
].filter((x) => x !== null);
|
|
382
|
+
let cur = "tmp2";
|
|
383
|
+
adSlots.forEach(({ label, pos }, i) => {
|
|
384
|
+
const isLast = i === adSlots.length - 1;
|
|
385
|
+
const next = isLast ? "vout" : `tmp${3 + i}`;
|
|
386
|
+
steps.push(`[${cur}][${label}] overlay=${pos} [${next}]${isLast ? "" : ";"}`);
|
|
387
|
+
cur = next;
|
|
388
|
+
});
|
|
389
|
+
}
|
|
390
|
+
else if (highlightBufferEnabled) {
|
|
391
|
+
// The highlight buffer branch introduces a second named filtergraph
|
|
392
|
+
// pad ([hlbuf]), so the primary chain's output can no longer rely on
|
|
393
|
+
// ffmpeg's "auto-pick the single unlabeled filtergraph output"
|
|
394
|
+
// behavior — that becomes ambiguous with two named pads present. Label
|
|
395
|
+
// it explicitly and map it below, same as the ad-overlay path already
|
|
396
|
+
// has to.
|
|
397
|
+
steps.push("[tmp1][client] overlay=main_w-overlay_w-10:10 [vout]");
|
|
315
398
|
}
|
|
316
399
|
else {
|
|
317
|
-
|
|
318
|
-
"[0:v] scale=1920:1080 [base];",
|
|
319
|
-
// Bottom-right DropShot watermark
|
|
320
|
-
`[${dsInputIndex}:v] scale=500:-1:force_original_aspect_ratio=decrease [ds];`,
|
|
321
|
-
// Top-right client logo
|
|
322
|
-
`[${clientInputIndex}:v] scale=350:-1:force_original_aspect_ratio=decrease [client];`,
|
|
323
|
-
"[base][ds] overlay=main_w-overlay_w-10:main_h-overlay_h-10 [tmp1];",
|
|
324
|
-
"[tmp1][client] overlay=main_w-overlay_w-10:10",
|
|
325
|
-
].join(" ");
|
|
400
|
+
steps.push("[tmp1][client] overlay=main_w-overlay_w-10:10");
|
|
326
401
|
}
|
|
402
|
+
filterComplex = steps.join(" ");
|
|
327
403
|
args.push("-filter_complex", filterComplex);
|
|
404
|
+
// Whether the primary chain terminates in an explicit [vout] label (vs.
|
|
405
|
+
// ffmpeg's implicit single-output selection) and whether we must emit an
|
|
406
|
+
// explicit -map for it are the SAME decision — derive both from one flag
|
|
407
|
+
// so a future output-adding feature can't update one site and forget the
|
|
408
|
+
// other (which would dangle the label or map a non-existent pad).
|
|
409
|
+
const needsExplicitVout = hasAnyAd || highlightBufferEnabled;
|
|
410
|
+
if (needsExplicitVout) {
|
|
411
|
+
args.push("-map", "[vout]");
|
|
412
|
+
args.push("-map", `${fakeAudioInputCounter}:a`);
|
|
413
|
+
}
|
|
328
414
|
// audio & video output configurations
|
|
329
415
|
args.push("-c:v", "libx264", "-preset", "veryfast", "-b:v", "4500k", "-maxrate", "5000k", "-bufsize", "10000k");
|
|
330
416
|
args.push("-c:a", "aac", "-b:a", "128k", "-ar", "44100", "-ac", "2", "-shortest");
|
|
331
417
|
// Specify output format for RTMP streaming
|
|
332
418
|
args.push("-f", "flv", rtmpUrl);
|
|
419
|
+
// Second output: the highlight buffer branch. Deliberately cheap encode
|
|
420
|
+
// (low bitrate, ultrafast, no audio) since this is an intermediate
|
|
421
|
+
// artifact that gets reframed/re-encoded again during highlight
|
|
422
|
+
// processing — quality parity with the broadcast output isn't needed.
|
|
423
|
+
// "-c copy" isn't an option here: [hlbuf] is decoded/filtered video, not
|
|
424
|
+
// an already-encoded bitstream, so it must be encoded to be written out.
|
|
425
|
+
if (highlightBufferEnabled) {
|
|
426
|
+
const segmentSec = this.config.get().highlight.bufferSegmentSec;
|
|
427
|
+
// Unique per stream run (and per retry, since retries rebuild the
|
|
428
|
+
// command). The segment muxer names files by whole-second wall clock
|
|
429
|
+
// (%s), so on a fast restart the respawned process's first segment could
|
|
430
|
+
// land on the same second as the dying process's last one and overwrite
|
|
431
|
+
// it. A per-run token in the name keeps runs from colliding while %s
|
|
432
|
+
// still carries the segment's start time for the buffer manifest.
|
|
433
|
+
const runToken = Date.now().toString(36);
|
|
434
|
+
args.push("-map", "[hlbuf]", "-c:v", "libx264", "-preset", "ultrafast", "-b:v", "800k", "-an",
|
|
435
|
+
// Force a keyframe exactly every segmentSec. The segment muxer can only
|
|
436
|
+
// cut at keyframes; without this, libx264's default GOP (~250 frames,
|
|
437
|
+
// ~8-10s) governs the real segment length and -segment_time is
|
|
438
|
+
// effectively ignored, producing segments far coarser than configured.
|
|
439
|
+
"-force_key_frames", `expr:gte(t,n_forced*${segmentSec})`, "-f", "segment", "-segment_time", String(segmentSec), "-reset_timestamps", "1", "-strftime", "1", path.join(highlightBufferDir, `seg-${runToken}-%s.ts`));
|
|
440
|
+
}
|
|
333
441
|
const fullCommand = `ffmpeg ${args.join(" ")}`;
|
|
334
442
|
return {
|
|
335
443
|
command: "ffmpeg",
|
|
@@ -348,6 +456,18 @@ class NodeFFmpegService {
|
|
|
348
456
|
await Promise.all(killPromises);
|
|
349
457
|
this.runningProcesses.clear();
|
|
350
458
|
}
|
|
459
|
+
// Pick the right ffmpeg input flags for an ad file based on its extension.
|
|
460
|
+
// Animated formats loop via stream_loop; stills via image2 loop.
|
|
461
|
+
// For the looping concat slot video, "-stream_loop -1" makes the input
|
|
462
|
+
// infinite (it never EOFs, so the main encoder's clock never stalls), and
|
|
463
|
+
// "-fflags +genpts" smooths the PTS reset at each loop wrap.
|
|
464
|
+
buildAdInputFlags(adPath) {
|
|
465
|
+
const ext = path.extname(adPath).slice(1).toLowerCase();
|
|
466
|
+
if (NodeFFmpegService.VIDEO_EXTS.has(ext)) {
|
|
467
|
+
return ["-stream_loop", "-1", "-re", "-fflags", "+genpts", "-i", adPath];
|
|
468
|
+
}
|
|
469
|
+
return ["-f", "image2", "-loop", "1", "-i", adPath];
|
|
470
|
+
}
|
|
351
471
|
validateImageFiles() {
|
|
352
472
|
const dsLogoPath = path.resolve("./public/ds.png");
|
|
353
473
|
const clientLogoPath = path.resolve(this.clientLogoPath);
|
|
@@ -362,10 +482,11 @@ class NodeFFmpegService {
|
|
|
362
482
|
clientLogo: clientLogoPath,
|
|
363
483
|
});
|
|
364
484
|
}
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
485
|
+
resetScoreOverlay(scoreOverlayPath) {
|
|
486
|
+
// Unconditionally (re)write the transparent placeholder. Unlike an
|
|
487
|
+
// ensure-if-missing check, this guarantees a clean slate on every stream
|
|
488
|
+
// start so a previous match's scorecard never shows on the new stream.
|
|
489
|
+
this.createDefaultScoreOverlay(scoreOverlayPath);
|
|
369
490
|
}
|
|
370
491
|
getScoreOverlayPath(courtId) {
|
|
371
492
|
return path.join(this.scoreOverlayDir, `${courtId}.png`);
|
|
@@ -387,4 +508,5 @@ class NodeFFmpegService {
|
|
|
387
508
|
}
|
|
388
509
|
}
|
|
389
510
|
exports.NodeFFmpegService = NodeFFmpegService;
|
|
511
|
+
NodeFFmpegService.VIDEO_EXTS = new Set(["mp4", "gif", "webm", "mov", "avi", "mkv"]);
|
|
390
512
|
//# sourceMappingURL=NodeFFmpegService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeFFmpegService.js","sourceRoot":"","sources":["../../../../src/infrastructure/services/NodeFFmpegService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NodeFFmpegService.js","sourceRoot":"","sources":["../../../../src/infrastructure/services/NodeFFmpegService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAsC;AACtC,uCAAyB;AACzB,2CAA6B;AAE7B,4CAA+C;AAW/C,0CAA+C;AAE/C,MAAa,iBAAiB;IAO5B,YACmB,MAAc,EACd,MAAc;QADd,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAQ;QANhB,qBAAgB,GAA+B,IAAI,GAAG,EAAE,CAAC;QAQxE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACxE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;;;;;OASG;IACI,KAAK,CAAC,WAAW,CACtB,SAAoB,EACpB,SAAiB,EACjB,QAAiB,EACjB,OAAe,EACf,KAGC,EACD,oBAA8B,EAC9B,OAAwB,EACxB,kBAAkC;QAElC,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CACrC,SAAS,EACT,SAAS,EACT,QAAQ,EACR,OAAO,EACP,oBAAoB,EACpB,OAAO,EACP,kBAAkB,CACnB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;QAE/C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE;YAC1C,OAAO,EAAE,OAAO,CAAC,WAAW;YAC5B,SAAS,EAAE,SAAS,CAAC,KAAK;YAC1B,SAAS;YACT,QAAQ;YACR,OAAO;SACR,CAAC,CAAC;QAEH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,OAAO,GAAG,IAAA,qBAAK,EAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE;gBACnD,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;gBACjC,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC;YAEH,MAAM,aAAa,GAAkB;gBACnC,GAAG,EAAE,OAAO,CAAC,GAAI;gBACjB,OAAO;gBACP,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC;YAEF,yBAAyB;YACzB,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;gBACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,QAAQ,GAAG,IAAI,CAAC;oBAChB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,oBAAoB;YAE/B,2DAA2D;YAC3D,IAAI,aAAa,GAAkB,IAAI,CAAC;YACxC,IAAI,eAAe,GAAG,CAAC,CAAC;YACxB,MAAM,mBAAmB,GAAG,EAAE,CAAC,CAAC,qDAAqD;YAErF,0CAA0C;YAC1C,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAClC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAE/B,wCAAwC;gBACxC,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;gBAC1D,IAAI,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC9B,MAAM,gBAAgB,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;oBAEtC,kDAAkD;oBAClD,IAAI,gBAAgB,KAAK,aAAa,EAAE,CAAC;wBACvC,eAAe,EAAE,CAAC;wBAClB,OAAO,CAAC,GAAG,CACT,wBAAwB,eAAe,IAAI,mBAAmB,KAAK,gBAAgB,GAAG,CACvF,CAAC;wBAEF,oFAAoF;wBACpF,IAAI,eAAe,IAAI,mBAAmB,EAAE,CAAC;4BAC3C,OAAO,CAAC,GAAG,CACT,sBAAsB,mBAAmB,oCAAoC,CAC9E,CAAC;4BACF,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;4BACxB,eAAe,GAAG,CAAC,CAAC,CAAC,gBAAgB;4BACrC,OAAO;wBACT,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,sCAAsC;wBACtC,eAAe,GAAG,CAAC,CAAC;wBACpB,aAAa,GAAG,gBAAgB,CAAC;oBACnC,CAAC;gBACH,CAAC;gBAED,8CAA8C;gBAC9C,IACE,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC;oBAClC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EACpC,CAAC;oBACD,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,QAAQ,GAAG,IAAI,CAAC;wBAChB,YAAY,CAAC,cAAc,CAAC,CAAC;wBAC7B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,GAAI,EAAE,aAAa,CAAC,CAAC;wBACvD,OAAO,CAAC,aAAa,CAAC,CAAC;oBACzB,CAAC;gBACH,CAAC;gBAED,IACE,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC;oBACrC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC;oBACnC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EACrC,CAAC;oBACD,mBAAmB;oBACnB,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,QAAQ,GAAG,IAAI,CAAC;wBAChB,YAAY,CAAC,cAAc,CAAC,CAAC;wBAC7B,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC1B,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,sBAAsB;YACtB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;gBAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE;oBACxC,GAAG,EAAE,OAAO,CAAC,GAAG;oBAChB,IAAI;oBACJ,MAAM;oBACN,SAAS,EAAE,SAAS,CAAC,KAAK;iBAC3B,CAAC,CAAC;gBAEH,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;oBAChB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC5C,CAAC;gBAED,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAEjC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,QAAQ,GAAG,IAAI,CAAC;oBAChB,YAAY,CAAC,cAAc,CAAC,CAAC;gBAC/B,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,sBAAsB;YACtB,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC5B,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACpE,YAAY,CAAC,cAAc,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,GAAW;QACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAErD,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YACpE,4DAA4D;YAC5D,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBAC7B,wCAAwC;gBACxC,UAAU,CAAC,GAAG,EAAE;oBACd,IAAI,CAAC;wBACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;oBAC/B,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,gCAAgC;oBAClC,CAAC;gBACH,CAAC,EAAE,IAAI,CAAC,CAAC;YACX,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,0BAA0B;YAC5B,CAAC;YACD,OAAO;QACT,CAAC;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBAE7B,+CAA+C;gBAC/C,MAAM,gBAAgB,GAAG,UAAU,CAAC,GAAG,EAAE;oBACvC,IAAI,CAAC;wBACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;oBAC/B,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,gCAAgC;oBAClC,CAAC;gBACH,CAAC,EAAE,IAAI,CAAC,CAAC;gBAET,uCAAuC;gBACvC,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;oBACrC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;wBACpC,YAAY,CAAC,gBAAgB,CAAC,CAAC;wBAC/B,aAAa,CAAC,aAAa,CAAC,CAAC;wBAC7B,OAAO,EAAE,CAAC;oBACZ,CAAC;gBACH,CAAC,EAAE,GAAG,CAAC,CAAC;gBAER,mBAAmB;gBACnB,UAAU,CAAC,GAAG,EAAE;oBACd,YAAY,CAAC,gBAAgB,CAAC,CAAC;oBAC/B,aAAa,CAAC,aAAa,CAAC,CAAC;oBAC7B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAClC,OAAO,EAAE,CAAC;gBACZ,CAAC,EAAE,KAAK,CAAC,CAAC;YACZ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;gBACnE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAClC,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,GAAW;QACvC,IAAI,CAAC;YACH,yCAAyC;YACzC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACrB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,SAAoB;QAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE;YAC7C,SAAS,EAAE,SAAS,CAAC,KAAK;SAC3B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG;YACX,iBAAiB;YACjB,KAAK;YACL,IAAI;YACJ,SAAS,CAAC,KAAK;YACf,IAAI;YACJ,GAAG,EAAE,qBAAqB;YAC1B,KAAK;YACL,IAAI;YACJ,MAAM;YACN,GAAG;SACJ,CAAC;QAEF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,OAAO,GAAG,IAAA,qBAAK,EAAC,QAAQ,EAAE,IAAI,EAAE;gBACpC,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;aAClC,CAAC,CAAC;YAEH,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC9B,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACxB,OAAO,CAAC,QAAQ,CAAC,CAAC;YACpB,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,oBAAoB;YAE/B,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAClC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAE/B,mCAAmC;gBACnC,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC7D,QAAQ,GAAG,IAAI,CAAC;gBAClB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;gBACtB,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,OAAO,CAAC,QAAQ,CAAC,CAAC;YACpB,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACrE,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,kBAAkB,CACvB,SAAoB,EACpB,SAAiB,EACjB,QAAiB,EACjB,OAAe,EACf,oBAA8B,EAC9B,OAAwB,EACxB,kBAAkC;QAElC,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,eAAe,IAAI,SAAS,EAAE,CAAC;QAC3E,IAAI,qBAAqB,GAAG,CAAC,CAAC;QAE9B,IAAI,IAAI,GAAa,EAAE,CAAC;QAExB,uBAAuB;QACvB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAEpC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QAEjC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,4DAA4D;YAC5D,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,kDAAkD,CAAC,CAAC;YACpE,qBAAqB,EAAE,CAAC;QAC1B,CAAC;QAED,+CAA+C;QAC/C,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,mCAAmC;QACnC,wBAAwB;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,yBAAyB;QAC7D,MAAM,YAAY,GAAG,CAAC,GAAG,qBAAqB,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,uBAAuB;QAC7D,MAAM,gBAAgB,GAAG,CAAC,GAAG,qBAAqB,CAAC;QAEnD,IAAI,cAAc,GAAG,CAAC,GAAG,qBAAqB,CAAC;QAE/C,IAAI,aAAa,GAAG,EAAE,CAAC;QAEvB,wEAAwE;QACxE,IAAI,eAAe,GAAkB,IAAI,CAAC;QAC1C,IAAI,oBAAoB,EAAE,CAAC;YACzB,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC3D,0EAA0E;YAC1E,2EAA2E;YAC3E,oDAAoD;YACpD,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;YACzC,qEAAqE;YACrE,6EAA6E;YAC7E,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;YAChE,eAAe,GAAG,cAAc,EAAE,CAAC;QACrC,CAAC;QAED,uEAAuE;QACvE,4EAA4E;QAC5E,2EAA2E;QAC3E,6EAA6E;QAC7E,2DAA2D;QAC3D,MAAM,UAAU,GACd,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACrE,MAAM,WAAW,GACf,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAExE,IAAI,gBAAgB,GAAkB,IAAI,CAAC;QAC3C,IAAI,iBAAiB,GAAkB,IAAI,CAAC;QAE5C,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;YACjD,gBAAgB,GAAG,cAAc,EAAE,CAAC;QACtC,CAAC;QACD,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;YAClD,iBAAiB,GAAG,cAAc,EAAE,CAAC;QACvC,CAAC;QAED,MAAM,QAAQ,GAAG,gBAAgB,KAAK,IAAI,IAAI,iBAAiB,KAAK,IAAI,CAAC;QAEzE,uEAAuE;QACvE,wEAAwE;QACxE,kEAAkE;QAClE,sEAAsE;QACtE,qEAAqE;QACrE,wEAAwE;QACxE,sDAAsD;QACtD,0EAA0E;QAC1E,wEAAwE;QACxE,0EAA0E;QAC1E,0EAA0E;QAC1E,wEAAwE;QACxE,oEAAoE;QACpE,IAAI,sBAAsB,GAAG,CAAC,CAAC,kBAAkB,CAAC;QAClD,IAAI,sBAAsB,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,IAAA,qBAAa,EAAC,kBAAmB,CAAC,CAAC;YACrC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,4EAA4E,EAC5E;oBACE,kBAAkB;oBAClB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D,CACF,CAAC;gBACF,sBAAsB,GAAG,KAAK,CAAC;YACjC,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,MAAM,KAAK,GAAa,sBAAsB;YAC5C,CAAC,CAAC,CAAC,iCAAiC,EAAE,iCAAiC,CAAC;YACxE,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC;QAEtC,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CACR,IAAI,eAAe,gEAAgE,CACpF,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,IAAI,CACR,IAAI,YAAY,8DAA8D,EAC9E,IAAI,gBAAgB,kEAAkE,CACvF,CAAC;QACF,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CACR,IAAI,gBAAgB,kEAAkE,CACvF,CAAC;QACJ,CAAC;QACD,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CACR,IAAI,iBAAiB,mEAAmE,CACzF,CAAC;QACJ,CAAC;QAED,qEAAqE;QACrE,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CACR,qCAAqC,EACrC,oEAAoE,CACrE,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;QACnF,CAAC;QAED,+FAA+F;QAC/F,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;YAEpE,MAAM,OAAO,GAA0C;gBACrD,gBAAgB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,yBAAyB,EAAE,CAAC,CAAC,CAAC,IAAI;gBACtF,iBAAiB,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,0CAA0C,EAAE,CAAC,CAAC,CAAC,IAAI;aAC1G,CAAC,MAAM,CAAC,CAAC,CAAC,EAAuC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YAEjE,IAAI,GAAG,GAAG,MAAM,CAAC;YACjB,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;gBACpC,MAAM,MAAM,GAAG,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;gBACxC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7C,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,KAAK,aAAa,GAAG,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC9E,GAAG,GAAG,IAAI,CAAC;YACb,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,sBAAsB,EAAE,CAAC;YAClC,oEAAoE;YACpE,qEAAqE;YACrE,+DAA+D;YAC/D,uEAAuE;YACvE,sEAAsE;YACtE,UAAU;YACV,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAC9D,CAAC;QAED,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEhC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;QAE5C,wEAAwE;QACxE,yEAAyE;QACzE,yEAAyE;QACzE,yEAAyE;QACzE,kEAAkE;QAClE,MAAM,iBAAiB,GAAG,QAAQ,IAAI,sBAAsB,CAAC;QAC7D,IAAI,iBAAiB,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,qBAAqB,IAAI,CAAC,CAAC;QAClD,CAAC;QAED,sCAAsC;QACtC,IAAI,CAAC,IAAI,CACP,MAAM,EACN,SAAS,EACT,SAAS,EACT,UAAU,EACV,MAAM,EACN,OAAO,EACP,UAAU,EACV,OAAO,EACP,UAAU,EACV,QAAQ,CACT,CAAC;QACF,IAAI,CAAC,IAAI,CACP,MAAM,EACN,KAAK,EACL,MAAM,EACN,MAAM,EACN,KAAK,EACL,OAAO,EACP,KAAK,EACL,GAAG,EACH,WAAW,CACZ,CAAC;QAEF,2CAA2C;QAC3C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAEhC,wEAAwE;QACxE,mEAAmE;QACnE,gEAAgE;QAChE,sEAAsE;QACtE,yEAAyE;QACzE,yEAAyE;QACzE,IAAI,sBAAsB,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,gBAAgB,CAAC;YAChE,kEAAkE;YAClE,qEAAqE;YACrE,yEAAyE;YACzE,wEAAwE;YACxE,qEAAqE;YACrE,kEAAkE;YAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI,CACP,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,WAAW,EACtB,MAAM,EAAE,MAAM,EACd,KAAK;YACL,wEAAwE;YACxE,sEAAsE;YACtE,+DAA+D;YAC/D,uEAAuE;YACvE,mBAAmB,EAAE,uBAAuB,UAAU,GAAG,EACzD,IAAI,EAAE,SAAS,EACf,eAAe,EAAE,MAAM,CAAC,UAAU,CAAC,EACnC,mBAAmB,EAAE,GAAG,EACxB,WAAW,EAAE,GAAG,EAChB,IAAI,CAAC,IAAI,CAAC,kBAAmB,EAAE,OAAO,QAAQ,QAAQ,CAAC,CACxD,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,UAAU,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAE/C,OAAO;YACL,OAAO,EAAE,QAAQ;YACjB,IAAI;YACJ,WAAW;SACZ,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,mBAAmB;QAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IAEM,KAAK,CAAC,gBAAgB;QAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE;YAC/C,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI;SAClC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACxE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CACrB,CAAC;QAEF,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAChC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;IAED,2EAA2E;IAC3E,iEAAiE;IACjE,uEAAuE;IACvE,0EAA0E;IAC1E,6DAA6D;IACrD,iBAAiB,CAAC,MAAc;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACxD,IAAI,iBAAiB,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1C,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAEO,kBAAkB;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACnD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEzD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,+BAA+B,UAAU,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,6BAA6B,cAAc,EAAE,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE;YACpD,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE,cAAc;SAC3B,CAAC,CAAC;IACL,CAAC;IAEO,iBAAiB,CAAC,gBAAwB;QAChD,mEAAmE;QACnE,yEAAyE;QACzE,uEAAuE;QACvE,IAAI,CAAC,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;IACnD,CAAC;IAEO,mBAAmB,CAAC,OAAe;QACzC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,OAAO,MAAM,CAAC,CAAC;IAC3D,CAAC;IAEO,yBAAyB,CAAC,gBAAwB;QACxD,MAAM,KAAK,GAAG,GAAG,CAAC;QAClB,MAAM,MAAM,GAAG,GAAG,CAAC;QAEnB,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEpC,8BAA8B;QAC9B,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAEnC,oEAAoE;QACpE,mEAAmE;QACnE,kDAAkD;QAElD,uDAAuD;QACvD,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAElE,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACxC,EAAE,CAAC,aAAa,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;;AAlnBH,8CAmnBC;AAlnByB,4BAAU,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,AAAvD,CAAwD"}
|
|
@@ -24,6 +24,14 @@ export declare class NodeSSEService extends EventEmitter implements SSEService {
|
|
|
24
24
|
private processEventStream;
|
|
25
25
|
private parseSSEEvents;
|
|
26
26
|
private handleSSEEvent;
|
|
27
|
+
/**
|
|
28
|
+
* Normalize the `ads` field from an SSE payload into an AdSpec[].
|
|
29
|
+
*
|
|
30
|
+
* Accepts the new rolling-pool shape (array of { url, duration } or bare URL
|
|
31
|
+
* strings) and the legacy static shape ({ left, right }) for backward
|
|
32
|
+
* compatibility during rollout. Returns undefined when no ads are present.
|
|
33
|
+
*/
|
|
34
|
+
private parseAds;
|
|
27
35
|
private scheduleRetry;
|
|
28
36
|
private emitConnectionEvent;
|
|
29
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeSSEService.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/services/NodeSSEService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EACL,UAAU,EACV,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"NodeSSEService.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/services/NodeSSEService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EACL,UAAU,EACV,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEjE,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAE7D,qBAAa,cAAe,SAAQ,YAAa,YAAW,UAAU;IAUxD,OAAO,CAAC,QAAQ,CAAC,MAAM;IATnC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,gBAAgB,CACP;IACjB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,YAAY,CAAC,CAAiB;IACtC,OAAO,CAAC,MAAM,CAAC,CAAsB;IACrC,OAAO,CAAC,eAAe,CAAC,CAAkB;gBAEb,MAAM,EAAE,MAAM;IAI9B,KAAK,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IASjD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB3B,WAAW,IAAI,OAAO;IAItB,aAAa,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAAG,IAAI;IAI9D,kBAAkB,CACvB,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,GAAG,cAAc,GAAG,cAAc,KAAK,IAAI,GACxE,IAAI;IAIA,mBAAmB,IAAI,WAAW,GAAG,cAAc,GAAG,cAAc;IAIpE,aAAa,IAAI,MAAM;IAIjB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;YAczB,OAAO;YA4FP,kBAAkB;IAoChC,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,cAAc;IA0EtB;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ;IAyChB,OAAO,CAAC,aAAa;IA+BrB,OAAO,CAAC,mBAAmB;CAS5B"}
|
|
@@ -89,6 +89,10 @@ class NodeSSEService extends events_1.EventEmitter {
|
|
|
89
89
|
headers: {
|
|
90
90
|
Accept: "text/event-stream",
|
|
91
91
|
"Cache-Control": "no-cache",
|
|
92
|
+
// Server-to-server auth; only sent when configured.
|
|
93
|
+
...(this.config.streamingApiKey
|
|
94
|
+
? { "x-streaming-api-key": this.config.streamingApiKey }
|
|
95
|
+
: {}),
|
|
92
96
|
},
|
|
93
97
|
signal: this.abortController.signal,
|
|
94
98
|
}),
|
|
@@ -157,41 +161,36 @@ class NodeSSEService extends events_1.EventEmitter {
|
|
|
157
161
|
}
|
|
158
162
|
}
|
|
159
163
|
parseSSEEvents(buffer) {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
else {
|
|
174
|
-
currentEvent += line + "\n";
|
|
175
|
-
}
|
|
176
|
-
i++;
|
|
177
|
-
}
|
|
178
|
-
// Return complete events and remaining buffer
|
|
179
|
-
return {
|
|
180
|
-
complete: events,
|
|
181
|
-
remaining: currentEvent,
|
|
182
|
-
};
|
|
164
|
+
// SSE events are separated by a blank line. Split on the event boundary and
|
|
165
|
+
// keep the trailing partial event (everything after the last separator) in
|
|
166
|
+
// `remaining`, so an event whose `data:` line is split across network chunks
|
|
167
|
+
// is reassembled on the next read rather than corrupted by a stray newline.
|
|
168
|
+
const normalized = buffer.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
|
|
169
|
+
const segments = normalized.split("\n\n");
|
|
170
|
+
const remaining = segments.pop() ?? "";
|
|
171
|
+
const complete = segments
|
|
172
|
+
.map((segment) => segment.trim())
|
|
173
|
+
.filter((segment) => segment.length > 0);
|
|
174
|
+
return { complete, remaining };
|
|
183
175
|
}
|
|
184
176
|
handleSSEEvent(eventData) {
|
|
185
177
|
try {
|
|
186
178
|
const lines = eventData.split("\n");
|
|
187
179
|
let data = "";
|
|
188
180
|
let eventType = "";
|
|
181
|
+
// Per the SSE spec a field may omit the space after the colon, and an event
|
|
182
|
+
// may carry multiple `data:` lines that are joined with newlines.
|
|
189
183
|
for (const line of lines) {
|
|
190
|
-
if (line.startsWith("data:
|
|
191
|
-
|
|
184
|
+
if (line.startsWith("data:")) {
|
|
185
|
+
const chunk = line.startsWith("data: ")
|
|
186
|
+
? line.substring(6)
|
|
187
|
+
: line.substring(5);
|
|
188
|
+
data = data ? `${data}\n${chunk}` : chunk;
|
|
192
189
|
}
|
|
193
|
-
else if (line.startsWith("event:
|
|
194
|
-
eventType = line.
|
|
190
|
+
else if (line.startsWith("event:")) {
|
|
191
|
+
eventType = (line.startsWith("event: ")
|
|
192
|
+
? line.substring(7)
|
|
193
|
+
: line.substring(6)).trim();
|
|
195
194
|
}
|
|
196
195
|
}
|
|
197
196
|
if (!data) {
|
|
@@ -219,6 +218,7 @@ class NodeSSEService extends events_1.EventEmitter {
|
|
|
219
218
|
courtId: parsedData.courtId,
|
|
220
219
|
reconciliationMode: parsedData.reconciliation_mode || false,
|
|
221
220
|
isScorecardActivated: parsedData.isScorecardActivated,
|
|
221
|
+
ads: this.parseAds(parsedData.ads),
|
|
222
222
|
};
|
|
223
223
|
this.logger.info("Processing SSE stream event", {
|
|
224
224
|
action: streamEvent.action,
|
|
@@ -226,6 +226,7 @@ class NodeSSEService extends events_1.EventEmitter {
|
|
|
226
226
|
streamKey: streamEvent.streamKey,
|
|
227
227
|
reconciliationMode: streamEvent.reconciliationMode,
|
|
228
228
|
isScorecardActivated: streamEvent.isScorecardActivated,
|
|
229
|
+
ads: streamEvent.ads,
|
|
229
230
|
});
|
|
230
231
|
this.emit("streamEvent", streamEvent);
|
|
231
232
|
}
|
|
@@ -236,6 +237,49 @@ class NodeSSEService extends events_1.EventEmitter {
|
|
|
236
237
|
});
|
|
237
238
|
}
|
|
238
239
|
}
|
|
240
|
+
/**
|
|
241
|
+
* Normalize the `ads` field from an SSE payload into an AdSpec[].
|
|
242
|
+
*
|
|
243
|
+
* Accepts the new rolling-pool shape (array of { url, duration } or bare URL
|
|
244
|
+
* strings) and the legacy static shape ({ left, right }) for backward
|
|
245
|
+
* compatibility during rollout. Returns undefined when no ads are present.
|
|
246
|
+
*/
|
|
247
|
+
parseAds(raw) {
|
|
248
|
+
if (!raw)
|
|
249
|
+
return undefined;
|
|
250
|
+
const toSpec = (entry) => {
|
|
251
|
+
if (typeof entry === "string") {
|
|
252
|
+
return entry.trim() ? { url: entry } : null;
|
|
253
|
+
}
|
|
254
|
+
if (entry && typeof entry === "object") {
|
|
255
|
+
// The backend sends each ad as { link, duration }; accept `url` too for
|
|
256
|
+
// our own docs/tests. duration may be null → falls back to the default.
|
|
257
|
+
const obj = entry;
|
|
258
|
+
const rawUrl = typeof obj.url === "string" && obj.url.trim()
|
|
259
|
+
? obj.url
|
|
260
|
+
: typeof obj.link === "string" && obj.link.trim()
|
|
261
|
+
? obj.link
|
|
262
|
+
: null;
|
|
263
|
+
if (rawUrl) {
|
|
264
|
+
const duration = typeof obj.duration === "number" && isFinite(obj.duration)
|
|
265
|
+
? obj.duration
|
|
266
|
+
: undefined;
|
|
267
|
+
return { url: rawUrl, durationSec: duration };
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
return null;
|
|
271
|
+
};
|
|
272
|
+
// Normalize both shapes to an entries array, then run the shared pipeline once.
|
|
273
|
+
// New shape: array of { url, duration } objects or bare URL strings.
|
|
274
|
+
// Legacy shape: { left, right } static slot object (backward compat during rollout).
|
|
275
|
+
const entries = Array.isArray(raw)
|
|
276
|
+
? raw
|
|
277
|
+
: typeof raw === "object" && raw !== null
|
|
278
|
+
? [raw.left, raw.right]
|
|
279
|
+
: [];
|
|
280
|
+
const specs = entries.map(toSpec).filter((s) => s !== null);
|
|
281
|
+
return specs.length > 0 ? specs : undefined;
|
|
282
|
+
}
|
|
239
283
|
scheduleRetry() {
|
|
240
284
|
if (!this.config) {
|
|
241
285
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeSSEService.js","sourceRoot":"","sources":["../../../../src/infrastructure/services/NodeSSEService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NodeSSEService.js","sourceRoot":"","sources":["../../../../src/infrastructure/services/NodeSSEService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BallReframer } from "../../domain/services/BallReframer";
|
|
2
|
+
/**
|
|
3
|
+
* Default BallReframer: does nothing, always returns null so the caller uses
|
|
4
|
+
* the full-frame clip. Active whenever ball-tracking is disabled (the default),
|
|
5
|
+
* so the highlight pipeline produces a full-frame, logo-branded reel with no
|
|
6
|
+
* dependency on Python/OpenCV.
|
|
7
|
+
*/
|
|
8
|
+
export declare class NullBallReframer implements BallReframer {
|
|
9
|
+
reframe(): Promise<string | null>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=NullBallReframer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NullBallReframer.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/services/NullBallReframer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAElE;;;;;GAKG;AACH,qBAAa,gBAAiB,YAAW,YAAY;IACtC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAG/C"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NullBallReframer = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Default BallReframer: does nothing, always returns null so the caller uses
|
|
6
|
+
* the full-frame clip. Active whenever ball-tracking is disabled (the default),
|
|
7
|
+
* so the highlight pipeline produces a full-frame, logo-branded reel with no
|
|
8
|
+
* dependency on Python/OpenCV.
|
|
9
|
+
*/
|
|
10
|
+
class NullBallReframer {
|
|
11
|
+
async reframe() {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.NullBallReframer = NullBallReframer;
|
|
16
|
+
//# sourceMappingURL=NullBallReframer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NullBallReframer.js","sourceRoot":"","sources":["../../../../src/infrastructure/services/NullBallReframer.ts"],"names":[],"mappings":";;;AAEA;;;;;GAKG;AACH,MAAa,gBAAgB;IACpB,KAAK,CAAC,OAAO;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAJD,4CAIC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { BallReframer } from "../../domain/services/BallReframer";
|
|
2
|
+
import { Logger } from "../../application/interfaces/Logger";
|
|
3
|
+
/**
|
|
4
|
+
* BallReframer backed by a one-shot Python/OpenCV script (scripts/reframe_ball.py).
|
|
5
|
+
*
|
|
6
|
+
* ── IN SIMPLE WORDS ──
|
|
7
|
+
* Hands the raw clip to a small Python program that watches the ball and writes
|
|
8
|
+
* a cropped, vertical version. If Python isn't installed, the script errors, or
|
|
9
|
+
* it takes too long, we just return null and the full-frame clip is used.
|
|
10
|
+
*
|
|
11
|
+
* ── WHY IT'S BUILT THIS WAY (change at your peril) ──
|
|
12
|
+
* Same one-shot-subprocess pattern as the ffmpeg calls: spawn, wait with a
|
|
13
|
+
* timeout, read back the produced file. It is fail-soft by construction — a
|
|
14
|
+
* missing interpreter, a crash, a timeout, or a missing output file all resolve
|
|
15
|
+
* to null. A highlight must never be lost because tracking misbehaved.
|
|
16
|
+
*
|
|
17
|
+
* ── DO NOT ──
|
|
18
|
+
* - Do NOT let this throw; every error path returns null.
|
|
19
|
+
* - Do NOT enable in production before the CV script is tuned on real padel
|
|
20
|
+
* footage — until then the crop quality is unproven (hence default OFF).
|
|
21
|
+
*/
|
|
22
|
+
export declare class PythonBallReframer implements BallReframer {
|
|
23
|
+
private readonly reelAspect;
|
|
24
|
+
private readonly logger;
|
|
25
|
+
private readonly timeoutMs;
|
|
26
|
+
private readonly scriptPath;
|
|
27
|
+
constructor(reelAspect: string, logger: Logger, scriptPath?: string);
|
|
28
|
+
reframe(clipPath: string, courtId: string): Promise<string | null>;
|
|
29
|
+
/** "16:9" -> 1.777…; null when unparseable (caller then just runs the pass). */
|
|
30
|
+
private parseAspect;
|
|
31
|
+
private probeDimensions;
|
|
32
|
+
private isPlayable;
|
|
33
|
+
private runPython;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=PythonBallReframer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PythonBallReframer.d.ts","sourceRoot":"","sources":["../../../../src/infrastructure/services/PythonBallReframer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAG7D;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IAUnD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAGjB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EAC/B,UAAU,CAAC,EAAE,MAAM;IAeR,OAAO,CAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA+EzB,gFAAgF;IAChF,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,eAAe;IAwBvB,OAAO,CAAC,UAAU;IAsBlB,OAAO,CAAC,SAAS;CA0BlB"}
|