@editframe/assets 0.47.1 → 0.48.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.
Files changed (64) hide show
  1. package/LICENSE-FULL.md +148 -0
  2. package/LICENSE.md +58 -0
  3. package/dist/Probe.cjs +63 -9
  4. package/dist/Probe.cjs.map +1 -1
  5. package/dist/Probe.d.cts +49 -0
  6. package/dist/Probe.d.ts +49 -0
  7. package/dist/Probe.js +59 -3
  8. package/dist/Probe.js.map +1 -1
  9. package/dist/VideoRenderOptions.cjs +2 -4
  10. package/dist/VideoRenderOptions.cjs.map +1 -1
  11. package/dist/VideoRenderOptions.js +1 -2
  12. package/dist/VideoRenderOptions.js.map +1 -1
  13. package/dist/_virtual/{rolldown_runtime.cjs → _rolldown/runtime.cjs} +2 -4
  14. package/dist/generateFragmentIndex.cjs +4 -12
  15. package/dist/generateFragmentIndex.cjs.map +1 -1
  16. package/dist/generateFragmentIndex.d.cts +1 -2
  17. package/dist/generateFragmentIndex.d.ts +1 -2
  18. package/dist/generateFragmentIndex.js +1 -2
  19. package/dist/generateFragmentIndex.js.map +1 -1
  20. package/dist/generateSingleTrack.cjs +7 -10
  21. package/dist/generateSingleTrack.cjs.map +1 -1
  22. package/dist/generateSingleTrack.js +2 -3
  23. package/dist/generateSingleTrack.js.map +1 -1
  24. package/dist/generateWebmSegmentIndex.cjs +346 -0
  25. package/dist/generateWebmSegmentIndex.cjs.map +1 -0
  26. package/dist/generateWebmSegmentIndex.js +343 -0
  27. package/dist/generateWebmSegmentIndex.js.map +1 -0
  28. package/dist/idempotentTask.cjs +5 -10
  29. package/dist/idempotentTask.cjs.map +1 -1
  30. package/dist/idempotentTask.d.cts +0 -1
  31. package/dist/idempotentTask.d.ts +0 -1
  32. package/dist/idempotentTask.js +1 -2
  33. package/dist/idempotentTask.js.map +1 -1
  34. package/dist/index.cjs +11 -11
  35. package/dist/index.js +1 -2
  36. package/dist/md5.cjs +3 -7
  37. package/dist/md5.cjs.map +1 -1
  38. package/dist/md5.js +1 -2
  39. package/dist/md5.js.map +1 -1
  40. package/dist/tasks/cacheImage.cjs +4 -6
  41. package/dist/tasks/cacheImage.cjs.map +1 -1
  42. package/dist/tasks/cacheImage.js +1 -2
  43. package/dist/tasks/cacheImage.js.map +1 -1
  44. package/dist/tasks/findOrCreateCaptions.cjs +5 -10
  45. package/dist/tasks/findOrCreateCaptions.cjs.map +1 -1
  46. package/dist/tasks/findOrCreateCaptions.js +1 -2
  47. package/dist/tasks/findOrCreateCaptions.js.map +1 -1
  48. package/dist/tasks/generateScrubTrack.cjs +6 -9
  49. package/dist/tasks/generateScrubTrack.cjs.map +1 -1
  50. package/dist/tasks/generateScrubTrack.js +1 -2
  51. package/dist/tasks/generateScrubTrack.js.map +1 -1
  52. package/dist/tasks/generateTrack.cjs +21 -9
  53. package/dist/tasks/generateTrack.cjs.map +1 -1
  54. package/dist/tasks/generateTrack.js +17 -4
  55. package/dist/tasks/generateTrack.js.map +1 -1
  56. package/dist/tasks/generateTrackFragmentIndex.cjs +26 -11
  57. package/dist/tasks/generateTrackFragmentIndex.cjs.map +1 -1
  58. package/dist/tasks/generateTrackFragmentIndex.js +21 -5
  59. package/dist/tasks/generateTrackFragmentIndex.js.map +1 -1
  60. package/dist/truncateDecimal.cjs +1 -2
  61. package/dist/truncateDecimal.cjs.map +1 -1
  62. package/dist/truncateDecimal.js +1 -1
  63. package/dist/truncateDecimal.js.map +1 -1
  64. package/package.json +1 -1
@@ -0,0 +1,148 @@
1
+ # Editframe SDK License Agreement
2
+
3
+ **Effective Date:** January 12, 2026 **Version:** 2.0
4
+
5
+ This License Agreement ("License") governs your use of the Editframe SDK. By downloading, accessing, or using the SDK, you agree to these terms.
6
+
7
+ ---
8
+
9
+ ## 1. Definitions
10
+
11
+ **"Total Employees"** — All full-time employees, part-time employees, and contractor equivalents across your Organization and all affiliated entities under common control. Contractors are counted proportionally by time worked.
12
+
13
+ **"Organization"** — You, your company, and all affiliates, subsidiaries, or related entities under common control.
14
+
15
+ **"Client-Side SDK"** — The source-available browser-based video rendering components, including the custom video tag for local file playback.
16
+
17
+ **"Server-Side Rendering"** — Hosted cloud service for parallel rendering at scale, supporting simultaneous rendering of large volumes of videos including longer and more complex ones.
18
+
19
+ **"Premium Player"** — Cloud-based CDN streaming service with API-authenticated streaming capabilities, optimized for editing workflows.
20
+
21
+ **"Cloud Services"** — Server-Side Rendering and Premium Player collectively.
22
+
23
+ **"Commercial Use"** — Any use in connection with business operations, revenue-generating activities, or professional services, including internal tools, production environments, and client deliverables.
24
+
25
+ **"Evaluation Use"** — Good-faith testing and proof-of-concept development, limited to 30 days. Excludes production deployment and ongoing business use.
26
+
27
+ ---
28
+
29
+ ## 2. License Grant
30
+
31
+ ### 2.1 Free Tier (≤3 Employees)
32
+
33
+ A limited, non-exclusive, non-transferable, revocable license to use the Client-Side SDK.
34
+
35
+ **Eligible:**
36
+
37
+ - Organizations with ≤3 total employees (Commercial Use permitted)
38
+ - Evaluation Use (any size, 30 days, non-production)
39
+ - Registered non-profits (any size)
40
+ - Accredited educational institutions
41
+ - Personal non-commercial projects
42
+
43
+ **Permitted:**
44
+
45
+ - Install and use the Client-Side SDK
46
+ - Use the custom video tag for local file playback (no API key required)
47
+ - Create and distribute video outputs for personal or Commercial Use
48
+
49
+ **Not included:** Cloud Services. Cloud Services require a Cloud Tier subscription regardless of company size.
50
+
51
+ ### 2.2 Team Tier (4–10 Employees)
52
+
53
+ Includes all Free Tier rights. Full Client-Side SDK use for any business purpose including production. Does not include Cloud Services. See [editframe.com/pricing](https://editframe.com/pricing) for pricing.
54
+
55
+ ### 2.3 Cloud Tier (11–20 Employees, or Any Size Requiring Cloud)
56
+
57
+ Required for organizations with 11–20 employees, or any organization using Cloud Services.
58
+
59
+ Includes all Team Tier rights, plus Server-Side Rendering and Premium Player via API. Usage-based billing applies in addition to base subscription. See [editframe.com/pricing](https://editframe.com/pricing) for pricing.
60
+
61
+ ### 2.4 Enterprise (21+ Employees)
62
+
63
+ Contact [hello@editframe.com](mailto:hello@editframe.com). Includes all Cloud Tier features plus priority support and custom SLAs.
64
+
65
+ ---
66
+
67
+ ## 3. Restrictions
68
+
69
+ ### 3.1 Prohibited
70
+
71
+ - Do not offer the Client-Side SDK or CLI itself as a managed rendering API or infrastructure product to third parties
72
+ - Do not fork, redistribute, or sublicense the Client-Side SDK or CLI under different terms
73
+ - Do not use the SDK above your tier threshold without upgrading
74
+ - Do not share credentials or API keys across separate organizations
75
+ - Do not implement workarounds to avoid usage-based billing
76
+ - Do not reverse engineer, decompile, or extract proprietary algorithms from Server-Side Rendering or Premium Player
77
+ - Do not access Cloud Service APIs other than through official client libraries
78
+ - Do not disable, circumvent, or tamper with telemetry
79
+ - Do not remove or alter copyright notices or attribution
80
+ - Do not use the SDK for unlawful purposes or in violation of export control regulations
81
+
82
+ ### 3.2 Permitted
83
+
84
+ - Build any product that creates, processes, or delivers video — editors, workflows, motion design tools, content automation, and more
85
+ - Integrate the Client-Side SDK into platforms, coding environments, vibe coding tools, and AI agents (end users are individually responsible for compliance)
86
+ - Use the Client-Side SDK in CI/CD pipelines and development environments, provided you are not using it to render production video at scale
87
+
88
+ ---
89
+
90
+ ## 4. Intellectual Property
91
+
92
+ Editframe, Inc. retains all rights to the SDK. This License does not transfer ownership. You retain all rights to video outputs you create ("Your Content"). Feedback may be used by us without obligation.
93
+
94
+ ---
95
+
96
+ ## 5. Telemetry
97
+
98
+ The SDK includes always-on telemetry collecting render counts, durations, IP addresses, domains, and feature usage. Telemetry cannot be disabled. Required for usage-based billing and license compliance. No video content is collected. See [editframe.com/privacy](https://editframe.com/privacy).
99
+
100
+ High Client-Side rendering volume does not trigger payment requirements — eligibility is determined by company size only.
101
+
102
+ ---
103
+
104
+ ## 6. Support
105
+
106
+ - **Free:** Community support
107
+ - **Team/Cloud:** Email and Slack, 48-hour response
108
+ - **Enterprise:** Dedicated support, custom SLAs
109
+
110
+ ---
111
+
112
+ ## 7. Warranties
113
+
114
+ THE SDK IS PROVIDED "AS IS" WITHOUT WARRANTIES OF ANY KIND. WE DO NOT WARRANT THAT THE SDK WILL BE ERROR-FREE, SECURE, OR UNINTERRUPTED. YOU ASSUME ALL RISKS.
115
+
116
+ ---
117
+
118
+ ## 8. Limitation of Liability
119
+
120
+ WE SHALL NOT BE LIABLE FOR INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES. TOTAL LIABILITY SHALL NOT EXCEED AMOUNTS PAID IN THE 12 MONTHS PRECEDING THE CLAIM, OR $100 USD, WHICHEVER IS GREATER.
121
+
122
+ ---
123
+
124
+ ## 9. Termination
125
+
126
+ This License is effective upon first use. We may terminate immediately for breach, failure to maintain required subscription tier, or fraudulent conduct (10 days' notice where feasible). Upon termination, all rights cease and you must delete all SDK copies.
127
+
128
+ ---
129
+
130
+ ## 10. Compliance
131
+
132
+ Self-report your employee count accurately. Violations may result in termination, back-payment of owed fees, liquidated damages (3× unpaid fees), and legal action. Voluntary disclosure may result in waived penalties.
133
+
134
+ ---
135
+
136
+ ## 11. General
137
+
138
+ - **Governing Law:** Delaware
139
+ - **Jurisdiction:** New York County, NY
140
+ - **Export Controls:** You must comply with U.S. Export Administration Regulations
141
+ - **Assignment:** You may not assign this License without written consent
142
+ - **Entire Agreement:** This License, Terms of Service, and Privacy Policy constitute the full agreement
143
+
144
+ ---
145
+
146
+ [hello@editframe.com](mailto:hello@editframe.com) · editframe.com
147
+
148
+ **By using the SDK, you agree to these terms.**
package/LICENSE.md ADDED
@@ -0,0 +1,58 @@
1
+ # Editframe SDK License
2
+
3
+ The Editframe SDK is source-available and free for individuals and small teams, including for commercial use. We've kept the bar low intentionally — if you're building something, you should be able to just use it.
4
+
5
+ - [Free Tier](#free-tier)
6
+ - [Paid Tiers](#paid-tiers)
7
+
8
+ ---
9
+
10
+ ## Free Tier
11
+
12
+ Copyright © 2026 [Editframe](https://editframe.com)
13
+
14
+ ### Who Qualifies
15
+
16
+ - Individuals and freelancers
17
+ - Organizations with 3 or fewer total employees
18
+ - Non-profits and not-for-profit organizations (any size)
19
+ - Accredited educational institutions
20
+ - Organizations evaluating Editframe in good faith, prior to commercial deployment (30 days)
21
+
22
+ ### What You Can Build
23
+
24
+ Use and modify the SDK to build any product that creates, processes, or delivers video — editors, workflows, motion design tools, content automation, and more. Platforms, coding environments, vibe coding tools, and AI agents may freely integrate the SDK. End users are each responsible for their own license compliance.
25
+
26
+ ### What Is Not Permitted
27
+
28
+ You may not offer the Client-Side SDK or CLI itself as a managed rendering API or infrastructure product to third parties. You may not sell, sublicense, or redistribute the SDK or modifications to it as a standalone product.
29
+
30
+ ### Warranty
31
+
32
+ The SDK is provided as-is without warranty of any kind. See the [Full License Agreement](./LICENSE-FULL.md) for complete terms.
33
+
34
+ ---
35
+
36
+ ## Paid Tiers
37
+
38
+ Organizations outside the Free Tier must subscribe to a paid plan.
39
+
40
+ | Tier | Employees |
41
+ | :---- | :---- |
42
+ | Team | 4–10 |
43
+ | Cloud | 11–20, or any size needing Cloud Rendering & Player |
44
+ | Enterprise | 21+ |
45
+
46
+ All paid tiers include full SDK rights.
47
+
48
+ Cloud Rendering & Player — parallel rendering and CDN streaming optimized for editing workflows — requires a Cloud Tier subscription regardless of company size.
49
+
50
+ [View pricing →](https://editframe.com/pricing) · Enterprise: [hello@editframe.com](mailto:hello@editframe.com)
51
+
52
+ ---
53
+
54
+ Unsure which tier applies? See the [FAQ](https://editframe.com/faq) or reach out at [hello@editframe.com](mailto:hello@editframe.com).
55
+
56
+ [Full License Agreement](./LICENSE-FULL.md) · [Terms of Service](https://editframe.com/terms)
57
+
58
+ *© 2026 Editframe, Inc.*
package/dist/Probe.cjs CHANGED
@@ -1,14 +1,11 @@
1
- const require_rolldown_runtime = require('./_virtual/rolldown_runtime.cjs');
2
- const require_truncateDecimal = require('./truncateDecimal.cjs');
1
+ const require_runtime = require("./_virtual/_rolldown/runtime.cjs");
2
+ const require_truncateDecimal = require("./truncateDecimal.cjs");
3
3
  let node_child_process = require("node:child_process");
4
- node_child_process = require_rolldown_runtime.__toESM(node_child_process);
5
4
  let node_fs = require("node:fs");
6
- node_fs = require_rolldown_runtime.__toESM(node_fs);
7
5
  let zod = require("zod");
8
- zod = require_rolldown_runtime.__toESM(zod);
6
+ zod = require_runtime.__toESM(zod);
9
7
  let debug = require("debug");
10
- debug = require_rolldown_runtime.__toESM(debug);
11
-
8
+ debug = require_runtime.__toESM(debug);
12
9
  //#region src/Probe.ts
13
10
  const log = (0, debug.default)("ef:assets:probe");
14
11
  const AudioStreamSchema = zod.object({
@@ -47,6 +44,8 @@ const VideoStreamSchema = zod.object({
47
44
  height: zod.number(),
48
45
  coded_width: zod.number(),
49
46
  coded_height: zod.number(),
47
+ pix_fmt: zod.string().optional(),
48
+ tags: zod.record(zod.string()).optional(),
50
49
  r_frame_rate: zod.string(),
51
50
  avg_frame_rate: zod.string(),
52
51
  time_base: zod.string(),
@@ -101,7 +100,7 @@ const PacketProbeSchema = zod.object({
101
100
  streams: zod.array(StreamSchema)
102
101
  });
103
102
  const buildProbeArgs = (options) => {
104
- const streamEntries = "stream=index,codec_name,codec_long_name,codec_type,codec_tag_string,codec_tag,profile,level,width,height,coded_width,coded_height,r_frame_rate,avg_frame_rate,time_base,start_pts,start_time,duration_ts,duration,bit_rate,sample_fmt,sample_rate,channels,channel_layout,bits_per_sample,initial_padding,disposition";
103
+ const streamEntries = "stream=index,codec_name,codec_long_name,codec_type,codec_tag_string,codec_tag,profile,level,width,height,coded_width,coded_height,pix_fmt,r_frame_rate,avg_frame_rate,time_base,start_pts,start_time,duration_ts,duration,bit_rate,sample_fmt,sample_rate,channels,channel_layout,bits_per_sample,initial_padding,disposition:stream_tags";
105
104
  return [
106
105
  "-v",
107
106
  "error",
@@ -218,6 +217,14 @@ var ProbeBase = class {
218
217
  get hasVideo() {
219
218
  return this.videoStreams.length > 0;
220
219
  }
220
+ /**
221
+ * Returns true if the file contains a video stream with an alpha channel.
222
+ * VP9 alpha WebM uses TAG:alpha_mode=1 (pix_fmt is still yuv420p).
223
+ * Some encoders may use yuva* pix_fmt directly.
224
+ */
225
+ get hasAlphaVideo() {
226
+ return this.videoStreams.some((s) => s.tags?.["alpha_mode"] === "1" || s.pix_fmt?.includes("yuva"));
227
+ }
221
228
  get isAudioOnly() {
222
229
  return this.audioStreams.length > 0 && this.videoStreams.length === 0;
223
230
  }
@@ -399,6 +406,53 @@ var ProbeBase = class {
399
406
  });
400
407
  return ffmpegProcess.stdout;
401
408
  }
409
+ /**
410
+ * Produces a fragmented MP4 stream of the alpha matte for the first video stream.
411
+ * Uses FFmpeg's `alphaextract` filter to isolate the alpha plane and encodes it
412
+ * as H264 yuv420p — grayscale content means H264 compresses the constant U/V
413
+ * chroma planes to near-zero bits.
414
+ */
415
+ createAlphaTrackReadstream() {
416
+ if (this.absolutePath === "pipe:0") throw new Error("Cannot create alpha track readstream from pipe");
417
+ const ffmpegArgs = [
418
+ "-i",
419
+ this.absolutePath,
420
+ "-map",
421
+ "0:v:0",
422
+ "-vf",
423
+ "format=yuva420p,alphaextract",
424
+ "-c:v",
425
+ "libx264",
426
+ "-pix_fmt",
427
+ "yuv420p",
428
+ "-preset",
429
+ "fast",
430
+ "-crf",
431
+ "18",
432
+ "-f",
433
+ "mp4",
434
+ "-bitexact",
435
+ "-movflags",
436
+ "frag_keyframe+empty_moov+default_base_moof",
437
+ "pipe:1"
438
+ ];
439
+ log("Creating alpha track stream", ffmpegArgs);
440
+ const ffmpegProcess = (0, node_child_process.spawn)("ffmpeg", ffmpegArgs, { stdio: [
441
+ "ignore",
442
+ "pipe",
443
+ "pipe"
444
+ ] });
445
+ ffmpegProcess.stderr.on("data", (data) => {
446
+ log("ALPHA TRACK: ", data.toString());
447
+ });
448
+ ffmpegProcess.on("error", (error) => {
449
+ ffmpegProcess.stdout.emit("error", error);
450
+ });
451
+ ffmpegProcess.on("exit", (code, signal) => {
452
+ if (code !== 0 && code !== null) ffmpegProcess.stdout.emit("error", /* @__PURE__ */ new Error(`FFmpeg alpha track process exited with code ${code}${signal ? ` and signal ${signal}` : ""}`));
453
+ });
454
+ return ffmpegProcess.stdout;
455
+ }
402
456
  createScrubTrackReadstream() {
403
457
  if (this.absolutePath === "pipe:0") throw new Error("Cannot create scrub track readstream from pipe");
404
458
  const videoStream = this.videoStreams[0];
@@ -506,8 +560,8 @@ var PacketProbe = class PacketProbe extends ProbeBase {
506
560
  return require_truncateDecimal.truncateDecimal(Math.round(totalDuration * 1e4) / 1e4, 5);
507
561
  }
508
562
  };
509
-
510
563
  //#endregion
511
564
  exports.PacketProbe = PacketProbe;
512
565
  exports.Probe = Probe;
566
+
513
567
  //# sourceMappingURL=Probe.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Probe.cjs","names":["z","stdoutChunks: Buffer[]","stderrChunks: Buffer[]","chunks: Uint8Array[]","absolutePath: string","truncateDecimal"],"sources":["../src/Probe.ts"],"sourcesContent":["import { spawn } from \"node:child_process\";\nimport { createReadStream } from \"node:fs\";\n\nimport * as z from \"zod\";\nimport debug from \"debug\";\nimport type { Readable } from \"node:stream\";\nimport { truncateDecimal } from \"./truncateDecimal\";\n\nconst log = debug(\"ef:assets:probe\");\n\nexport const AudioStreamSchema = z.object({\n index: z.number(),\n codec_name: z.string(),\n codec_long_name: z.string(),\n codec_type: z.literal(\"audio\"),\n codec_tag_string: z.string(),\n codec_tag: z.string(),\n sample_fmt: z.string(),\n sample_rate: z.string(),\n channels: z.number(),\n channel_layout: z.string().optional(),\n bits_per_sample: z.number(),\n initial_padding: z.number().optional(),\n r_frame_rate: z.string(),\n avg_frame_rate: z.string(),\n time_base: z.string(),\n start_pts: z.number().optional(),\n start_time: z.coerce.number().optional(),\n duration_ts: z.number(),\n duration: z.coerce.number(),\n bit_rate: z.string(),\n disposition: z.record(z.unknown()),\n});\n\nexport type AudioStreamSchema = z.infer<typeof AudioStreamSchema>;\n\nexport const VideoStreamSchema = z.object({\n index: z.number(),\n codec_name: z.string(),\n codec_long_name: z.string(),\n codec_type: z.literal(\"video\"),\n codec_tag_string: z.string(),\n codec_tag: z.string(),\n profile: z.string().optional(),\n level: z.number().optional(),\n width: z.number(),\n height: z.number(),\n coded_width: z.number(),\n coded_height: z.number(),\n r_frame_rate: z.string(),\n avg_frame_rate: z.string(),\n time_base: z.string(),\n start_pts: z.number().optional(),\n start_time: z.coerce.number().optional(),\n duration_ts: z.number().optional(),\n duration: z.coerce.number().optional(),\n bit_rate: z.string().optional(),\n disposition: z.record(z.unknown()),\n});\n\nexport type VideoStreamSchema = z.infer<typeof VideoStreamSchema>;\n\nconst ProbeFormatSchema = z.object({\n filename: z.string(),\n nb_streams: z.number(),\n nb_programs: z.number(),\n format_name: z.string(),\n format_long_name: z.string(),\n start_time: z.string().optional(),\n duration: z.string().optional(),\n size: z.string().optional(),\n bit_rate: z.string().optional(),\n probe_score: z.number(),\n});\n\nexport const DataStreamSchema = z.object({\n index: z.number(),\n codec_type: z.literal(\"data\"),\n duration: z.string().optional(),\n duration_ts: z.number().optional(),\n start_pts: z.number().optional(),\n});\n\nexport type DataStreamSchema = z.infer<typeof DataStreamSchema>;\n\nconst StreamSchema = z.discriminatedUnion(\"codec_type\", [\n AudioStreamSchema,\n VideoStreamSchema,\n DataStreamSchema,\n]);\n\nexport type StreamSchema = z.infer<typeof StreamSchema>;\n\nconst PacketSchema = z.object({\n stream_index: z.number(),\n pts: z.number(),\n pts_time: z.coerce.number(),\n dts: z.number(),\n dts_time: z.coerce.number(),\n duration: z.coerce.number().optional(),\n pos: z.coerce.number().optional(),\n flags: z.string().optional(),\n});\n\nexport type PacketSchema = z.infer<typeof PacketSchema>;\n\nconst ProbeSchema = z.object({\n streams: z.array(StreamSchema),\n format: ProbeFormatSchema,\n});\n\nconst PacketProbeSchema = z.object({\n packets: z.array(PacketSchema),\n format: ProbeFormatSchema,\n streams: z.array(StreamSchema),\n});\n\nexport type ProbeSchema = z.infer<typeof ProbeSchema>;\nexport type PacketProbeSchema = z.infer<typeof PacketProbeSchema>;\n\nexport interface TrackSegment {\n cts: number;\n dts: number;\n duration: number;\n offset: number;\n size: number;\n}\n\nexport interface AudioTrackFragmentIndex {\n track: number;\n type: \"audio\";\n timescale: number;\n duration: number;\n channel_count: number;\n sample_rate: number;\n sample_size: number;\n sample_count: number;\n codec: string;\n startTimeOffsetMs?: number;\n initSegment: {\n offset: 0;\n size: number;\n };\n segments: Array<TrackSegment>;\n}\n\nexport interface VideoTrackFragmentIndex {\n track: number;\n type: \"video\";\n timescale: number;\n duration: number;\n width: number;\n height: number;\n sample_count: number;\n codec: string;\n startTimeOffsetMs?: number;\n initSegment: {\n offset: 0;\n size: number;\n };\n segments: Array<TrackSegment>;\n}\n\nexport type TrackFragmentIndex = AudioTrackFragmentIndex | VideoTrackFragmentIndex;\n\nconst buildProbeArgs = (options: { showPackets?: boolean }) => {\n const streamEntries =\n \"stream=index,codec_name,codec_long_name,codec_type,codec_tag_string,codec_tag,profile,level,width,height,coded_width,coded_height,r_frame_rate,avg_frame_rate,time_base,start_pts,start_time,duration_ts,duration,bit_rate,sample_fmt,sample_rate,channels,channel_layout,bits_per_sample,initial_padding,disposition\";\n const packetEntries = \"packet=stream_index,pts,pts_time,dts,dts_time,duration,pos,flags\";\n\n return [\n \"-v\",\n \"error\",\n \"-show_format\",\n \"-show_streams\",\n \"-of\",\n \"json\",\n ...(options.showPackets\n ? [\"-show_entries\", `${streamEntries}:${packetEntries}`]\n : [\"-show_entries\", streamEntries]),\n ];\n};\n\nclass FFProbeRunner {\n static async probePath(absolutePath: string, includePackets: boolean): Promise<any> {\n const args = [...buildProbeArgs({ showPackets: includePackets }), absolutePath];\n log(\"Probing\", \"ffprobe\", args);\n\n const probe = spawn(\"ffprobe\", args, { stdio: [\"ignore\", \"pipe\", \"pipe\"] });\n\n const stdoutChunks: Buffer[] = [];\n const stderrChunks: Buffer[] = [];\n\n probe.stdout.on(\"data\", (data: Buffer) => stdoutChunks.push(data));\n probe.stderr.on(\"data\", (data: Buffer) => stderrChunks.push(data));\n\n await new Promise<void>((resolve, reject) => {\n probe.on(\"error\", reject);\n probe.on(\"close\", (code) => {\n if (code !== 0) {\n const stderr = Buffer.concat(stderrChunks).toString(\"utf8\");\n reject(new Error(`ffprobe exited with code ${code}: ${stderr}`));\n } else {\n resolve();\n }\n });\n });\n\n const stdout = Buffer.concat(stdoutChunks).toString(\"utf8\");\n log(\"Probe result\", stdout);\n return JSON.parse(stdout);\n }\n\n static async probeStream(stream: Readable, includePackets: boolean): Promise<any> {\n const probe = spawn(\n \"ffprobe\",\n [\"-i\", \"-\", ...buildProbeArgs({ showPackets: includePackets })],\n { stdio: [\"pipe\", \"pipe\", \"pipe\"] },\n );\n\n const chunks: Uint8Array[] = [];\n\n // Handle process exit/error before data processing\n const processExit = new Promise<never>((_, reject) => {\n probe.on(\"exit\", (code) => {\n if (code !== 0) {\n reject(new Error(`ffprobe exited with code ${code}`));\n }\n });\n probe.on(\"error\", (err) => reject(err));\n });\n\n probe.stderr.on(\"data\", (data) => {\n log(data.toString());\n });\n\n probe.stdout.on(\"data\", (data) => {\n chunks.push(data);\n });\n\n // Handle pipe errors\n probe.stdin.on(\"error\", (error: NodeJS.ErrnoException) => {\n if (error.code === \"EPIPE\") {\n log(\"ffprobe closed input pipe\");\n return;\n }\n log(\"ffprobe stdin error\", error);\n });\n\n stream.pipe(probe.stdin);\n\n try {\n const json = await Promise.race([\n new Promise<any>((resolve, reject) => {\n probe.stdout.on(\"end\", () => {\n try {\n const buffer = Buffer.concat(chunks).toString(\"utf8\");\n resolve(JSON.parse(buffer));\n } catch (error) {\n reject(error);\n }\n });\n }),\n processExit,\n ]);\n\n return json;\n } finally {\n // Clean up regardless of success or failure\n stream.unpipe(probe.stdin);\n probe.stdin.end();\n stream.destroy();\n }\n }\n}\n\nabstract class ProbeBase {\n abstract data: ProbeSchema | PacketProbeSchema;\n\n get audioStreams() {\n return this.data.streams.filter(\n (stream) => stream.codec_type === \"audio\",\n ) as AudioStreamSchema[];\n }\n\n get videoStreams() {\n return this.data.streams.filter(\n (stream) => stream.codec_type === \"video\",\n ) as VideoStreamSchema[];\n }\n\n get streams() {\n return this.data.streams;\n }\n\n get format() {\n return this.data.format;\n }\n\n get mustReencodeAudio() {\n return this.audioStreams.some((stream) => stream.codec_name !== \"aac\");\n }\n\n get mustReencodeVideo() {\n return false;\n }\n\n get mustRemux() {\n return (\n this.format.format_name !== \"mp4\" ||\n this.data.streams.some(\n (stream) => stream.codec_type !== \"audio\" && stream.codec_type !== \"video\",\n )\n );\n }\n\n get hasNonAudioOrVideoStreams() {\n return this.data.streams.some(\n (stream) => stream.codec_type !== \"audio\" && stream.codec_type !== \"video\",\n );\n }\n\n get hasAudio() {\n return this.audioStreams.length > 0;\n }\n\n get hasVideo() {\n return this.videoStreams.length > 0;\n }\n\n get isAudioOnly() {\n return this.audioStreams.length > 0 && this.videoStreams.length === 0;\n }\n\n get isMp3() {\n return this.audioStreams.some((stream) => stream.codec_name === \"mp3\");\n }\n\n get isVideoOnly() {\n return this.audioStreams.length === 0 && this.videoStreams.length > 0;\n }\n\n get mustProcess() {\n return this.mustReencodeAudio || this.mustReencodeVideo || this.mustRemux;\n }\n\n get startTimeOffsetMs(): number | undefined {\n if (this.data.format.start_time && Number(this.data.format.start_time) !== 0) {\n return Number(this.data.format.start_time) * 1000;\n }\n const videoStream = this.videoStreams[0];\n if (videoStream?.start_time && Number(videoStream.start_time) !== 0) {\n return Number(videoStream.start_time) * 1000;\n }\n return undefined;\n }\n\n get audioTimebase() {\n const audioStream = this.audioStreams[0];\n if (!audioStream) {\n return null;\n }\n const [num, den] = audioStream.time_base.split(\"/\").map(Number);\n if (num === undefined || den === undefined) {\n return null;\n }\n return { num, den };\n }\n\n get videoTimebase() {\n const videoStream = this.videoStreams[0];\n if (!videoStream) {\n return null;\n }\n const [num, den] = videoStream.time_base.split(\"/\").map(Number);\n if (num === undefined || den === undefined) {\n return null;\n }\n return { num, den };\n }\n\n get ffmpegAudioInputOptions() {\n if (!this.hasAudio) {\n return [];\n }\n if (this.isMp3) {\n return [\"-c:a\", \"mp3\"];\n }\n return [];\n }\n\n get ffmpegVideoInputOptions() {\n return [];\n }\n\n get ffmpegAudioOutputOptions() {\n if (!this.hasAudio) {\n return [];\n }\n if (this.mustReencodeAudio) {\n // biome-ignore format: keep cli argument paired together\n return [\"-c:a\", \"aac\", \"-b:a\", \"192k\", \"-ar\", \"48000\"];\n }\n return [\"-c:a\", \"copy\"];\n }\n\n get ffmpegVideoOutputOptions() {\n if (!this.hasVideo) {\n return [];\n }\n if (this.mustReencodeVideo) {\n // biome-ignore format: keep cli argument paired together\n return [\n \"-c:v\",\n \"h264\",\n // Filter out SEI NAL units that aren't supported by the webcodecs decoder\n \"-bsf:v\",\n \"filter_units=remove_types=6\",\n \"-pix_fmt\",\n \"yuv420p\",\n ];\n }\n // biome-ignore format: keep cli argument paired together\n return [\n \"-c:v\",\n \"copy\",\n // Filter out SEI NAL units that aren't supported by the webcodecs decoder\n \"-bsf:v\",\n \"filter_units=remove_types=6\",\n ];\n }\n\n protected constructor(protected absolutePath: string) {}\n\n createConformingReadstream() {\n if (this.absolutePath === \"pipe:0\") {\n throw new Error(\"Cannot create conforming readstream from pipe\");\n }\n if (!this.mustProcess) {\n return createReadStream(this.absolutePath);\n }\n\n const fragmenterArgs = this.isAudioOnly\n ? [\n \"-movflags\",\n \"frag_keyframe\",\n \"-frag_duration\",\n \"4000000\", // Fragment every 4 seconds (in microseconds)\n ]\n : [\"-movflags\", \"frag_keyframe\"];\n\n // biome-ignore format: keep cli argument paired together\n const ffmpegConformanceArgs = [\n ...this.ffmpegAudioInputOptions,\n ...this.ffmpegVideoInputOptions,\n \"-i\",\n this.absolutePath,\n ...this.ffmpegAudioOutputOptions,\n ...this.ffmpegVideoOutputOptions,\n \"-f\",\n \"mp4\",\n \"-bitexact\", // Ensure deterministic output\n ...fragmenterArgs,\n \"pipe:1\",\n ];\n\n log(\"Running ffmpeg\", ffmpegConformanceArgs);\n\n const ffmpegConformer = spawn(\"ffmpeg\", ffmpegConformanceArgs, {\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n\n ffmpegConformer.stderr.on(\"data\", (data) => {\n log(\"CONFORMER: \", data.toString());\n });\n\n // biome-ignore format: keep cli argument paired together\n const ffmpegFragmentArgs = [\n \"-i\",\n \"-\",\n \"-c\",\n \"copy\",\n \"-f\",\n \"mp4\",\n \"-bitexact\", // Ensure deterministic output\n ...fragmenterArgs,\n \"pipe:1\",\n ];\n\n log(\"Running ffmpeg\", ffmpegFragmentArgs);\n\n const ffmpegFragmenter = spawn(\"ffmpeg\", ffmpegFragmentArgs, {\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n\n ffmpegConformer.stdout.pipe(ffmpegFragmenter.stdin);\n ffmpegFragmenter.stderr.on(\"data\", (data) => {\n log(\"FRAGMENTER: \", data.toString());\n });\n\n ffmpegConformer.on(\"error\", (error) => {\n ffmpegFragmenter.stdout.emit(\"error\", error);\n });\n\n ffmpegFragmenter.on(\"error\", (error) => {\n ffmpegFragmenter.stdout.emit(\"error\", error);\n });\n\n return ffmpegFragmenter.stdout;\n }\n\n createTrackReadstream(trackIndex: number) {\n if (this.absolutePath === \"pipe:0\") {\n throw new Error(\"Cannot create track readstream from pipe\");\n }\n\n const track = this.data.streams[trackIndex];\n if (!track) {\n throw new Error(`Track ${trackIndex} not found`);\n }\n\n const isAudioTrack = track.codec_type === \"audio\";\n const isVideoTrack = track.codec_type === \"video\";\n\n if (!isAudioTrack && !isVideoTrack) {\n throw new Error(`Track ${trackIndex} is not audio or video`);\n }\n\n const fragmenterArgs = isAudioTrack\n ? [\n \"-movflags\",\n \"empty_moov+default_base_moof\",\n \"-frag_duration\",\n \"4000000\", // Fragment every 4 seconds (in microseconds)\n ]\n : [\"-movflags\", \"frag_keyframe+empty_moov+default_base_moof\"];\n\n // Create single-track MP4 with proper fragmentation\n // Use conforming stream system to handle codec compatibility\n const codecOptions =\n isAudioTrack && this.mustReencodeAudio ? this.ffmpegAudioOutputOptions : [\"-c\", \"copy\"];\n\n // Filter out SEI NAL units (type 6) for video tracks\n // These can cause WebCodecs VideoDecoder to hang or crash in some browsers/Electron\n const bitstreamFilter = isVideoTrack ? [\"-bsf:v\", \"filter_units=remove_types=6\"] : [];\n\n const ffmpegArgs = [\n ...this.ffmpegAudioInputOptions,\n ...this.ffmpegVideoInputOptions,\n \"-i\",\n this.absolutePath,\n \"-map\",\n `0:${trackIndex}`, // Select only this track\n ...codecOptions, // Use conforming stream codec options\n ...bitstreamFilter, // Remove SEI NAL units that cause WebCodecs issues\n \"-f\",\n \"mp4\",\n \"-bitexact\", // Ensure deterministic output\n ...fragmenterArgs,\n \"pipe:1\",\n ];\n\n log(\"Creating track stream\", ffmpegArgs);\n\n const ffmpegProcess = spawn(\"ffmpeg\", ffmpegArgs, {\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n\n ffmpegProcess.stderr.on(\"data\", (data) => {\n log(`TRACK ${trackIndex}: `, data.toString());\n });\n\n ffmpegProcess.on(\"error\", (error) => {\n ffmpegProcess.stdout.emit(\"error\", error);\n });\n\n return ffmpegProcess.stdout;\n }\n\n createScrubTrackReadstream() {\n if (this.absolutePath === \"pipe:0\") {\n throw new Error(\"Cannot create scrub track readstream from pipe\");\n }\n\n const videoStream = this.videoStreams[0];\n if (!videoStream) {\n throw new Error(\"No video stream found for scrub track generation\");\n }\n\n // Calculate proportional height for 320px width\n const targetWidth = 320;\n const aspectRatio = videoStream.height / videoStream.width;\n const targetHeight = Math.round(targetWidth * aspectRatio);\n // Ensure height is even (required for H.264)\n const scrubHeight = targetHeight % 2 === 0 ? targetHeight : targetHeight + 1;\n\n // Parse frame rate from r_frame_rate (e.g., \"30/1\" or \"30000/1001\")\n const [fpsNum, fpsDen] = videoStream.r_frame_rate.split(\"/\").map(Number);\n const frameRate = fpsNum && fpsDen ? `${fpsNum}/${fpsDen}` : \"30/1\";\n\n // Scrub track uses 30-second fragments with keyframes every 10 frames for fast seeking.\n // NOTE: Do NOT use frag_keyframe - it would create a fragment at every keyframe.\n // We want multiple keyframes within a single 30-second fragment (single trun with many samples).\n const fragmenterArgs = [\n \"-movflags\",\n \"empty_moov+default_base_moof\",\n \"-frag_duration\",\n \"30000000\", // 30 seconds in microseconds\n ];\n\n // Transcode to low-res H.264 with keyframes every 10 frames for fast seeking\n const ffmpegArgs = [\n ...this.ffmpegAudioInputOptions,\n ...this.ffmpegVideoInputOptions,\n \"-i\",\n this.absolutePath,\n \"-map\",\n \"0:v:0\", // Select first video stream only (no audio for scrub)\n \"-c:v\",\n \"libx264\", // Encode to H.264\n \"-preset\",\n \"ultrafast\", // Fast encoding for scrub track\n \"-crf\",\n \"28\", // Lower quality for smaller file size\n \"-vf\",\n `scale=${targetWidth}:${scrubHeight}`, // Scale to scrub resolution\n \"-r\",\n frameRate, // Maintain native FPS\n \"-g\",\n \"10\", // Keyframe every 10 frames for fast seeking within fragments\n \"-f\",\n \"mp4\",\n \"-bitexact\", // Ensure deterministic output\n ...fragmenterArgs,\n \"pipe:1\",\n ];\n\n log(\"Creating scrub track stream\", ffmpegArgs);\n\n const ffmpegProcess = spawn(\"ffmpeg\", ffmpegArgs, {\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n });\n\n ffmpegProcess.stderr.on(\"data\", (data) => {\n log(\"SCRUB TRACK: \", data.toString());\n });\n\n ffmpegProcess.on(\"error\", (error) => {\n ffmpegProcess.stdout.emit(\"error\", error);\n });\n\n // Handle FFmpeg process exit\n ffmpegProcess.on(\"exit\", (code, signal) => {\n if (code !== 0 && code !== null) {\n const error = new Error(\n `FFmpeg scrub track process exited with code ${code}${signal ? ` and signal ${signal}` : \"\"}`,\n );\n ffmpegProcess.stdout.emit(\"error\", error);\n }\n });\n\n return ffmpegProcess.stdout;\n }\n}\n\nexport class Probe extends ProbeBase {\n data: ProbeSchema;\n\n static async probePath(absolutePath: string): Promise<Probe> {\n const json = await FFProbeRunner.probePath(absolutePath, false);\n return new Probe(absolutePath, json);\n }\n\n static async probeStream(stream: Readable): Promise<Probe> {\n const json = await FFProbeRunner.probeStream(stream, false);\n return new Probe(\"pipe:0\", json);\n }\n\n constructor(absolutePath: string, rawData: any) {\n super(absolutePath);\n this.data = ProbeSchema.parse(rawData);\n }\n}\n\nexport class PacketProbe extends ProbeBase {\n data: PacketProbeSchema;\n\n static async probePath(absolutePath: string): Promise<PacketProbe> {\n const json = await FFProbeRunner.probePath(absolutePath, true);\n return new PacketProbe(absolutePath, json);\n }\n\n static async probeStream(stream: Readable): Promise<PacketProbe> {\n const json = await FFProbeRunner.probeStream(stream, true);\n return new PacketProbe(\"pipe:0\", json);\n }\n\n constructor(absolutePath: string, rawData: any) {\n super(absolutePath);\n this.data = PacketProbeSchema.parse(rawData);\n }\n\n get packets() {\n return this.data.packets;\n }\n\n get bestEffortAudioDuration() {\n const stream = this.audioStreams[0];\n if (!stream) {\n throw new Error(\"No audio stream found\");\n }\n return truncateDecimal(\n ((stream.duration_ts ?? 0) - (stream.start_pts ?? 0)) / (this.audioTimebase?.den ?? 0),\n 5,\n );\n }\n\n get videoPacketDuration() {\n const videoStream = this.videoStreams[0];\n if (!videoStream) {\n return [];\n }\n const videoPackets = this.packets.filter((packet) => packet.stream_index === videoStream.index);\n\n const frameRate = videoStream.r_frame_rate;\n const [num, den] = frameRate.split(\"/\").map(Number);\n if (!num || !den) {\n return [];\n }\n const packetDuration = den / num;\n\n // Calculate duration using actual packet PTS timing data\n if (videoPackets.length === 0) {\n return [];\n }\n\n const ptsTimes = videoPackets.map((p) => p.pts_time);\n const minPts = Math.min(...ptsTimes);\n const maxPts = Math.max(...ptsTimes);\n const totalDuration = maxPts - minPts + packetDuration;\n\n return truncateDecimal(Math.round(totalDuration * 10000) / 10000, 5);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"Probe.cjs","names":["z","truncateDecimal"],"sources":["../src/Probe.ts"],"mappings":"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"}
package/dist/Probe.d.cts CHANGED
@@ -83,6 +83,8 @@ declare const VideoStreamSchema: z$1.ZodObject<{
83
83
  height: z$1.ZodNumber;
84
84
  coded_width: z$1.ZodNumber;
85
85
  coded_height: z$1.ZodNumber;
86
+ pix_fmt: z$1.ZodOptional<z$1.ZodString>;
87
+ tags: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodString, z$1.ZodString>>;
86
88
  r_frame_rate: z$1.ZodString;
87
89
  avg_frame_rate: z$1.ZodString;
88
90
  time_base: z$1.ZodString;
@@ -114,6 +116,8 @@ declare const VideoStreamSchema: z$1.ZodObject<{
114
116
  bit_rate?: string | undefined;
115
117
  profile?: string | undefined;
116
118
  level?: number | undefined;
119
+ pix_fmt?: string | undefined;
120
+ tags?: Record<string, string> | undefined;
117
121
  }, {
118
122
  width: number;
119
123
  height: number;
@@ -136,6 +140,8 @@ declare const VideoStreamSchema: z$1.ZodObject<{
136
140
  bit_rate?: string | undefined;
137
141
  profile?: string | undefined;
138
142
  level?: number | undefined;
143
+ pix_fmt?: string | undefined;
144
+ tags?: Record<string, string> | undefined;
139
145
  }>;
140
146
  type VideoStreamSchema = z$1.infer<typeof VideoStreamSchema>;
141
147
  declare const StreamSchema: z$1.ZodDiscriminatedUnion<"codec_type", [z$1.ZodObject<{
@@ -217,6 +223,8 @@ declare const StreamSchema: z$1.ZodDiscriminatedUnion<"codec_type", [z$1.ZodObje
217
223
  height: z$1.ZodNumber;
218
224
  coded_width: z$1.ZodNumber;
219
225
  coded_height: z$1.ZodNumber;
226
+ pix_fmt: z$1.ZodOptional<z$1.ZodString>;
227
+ tags: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodString, z$1.ZodString>>;
220
228
  r_frame_rate: z$1.ZodString;
221
229
  avg_frame_rate: z$1.ZodString;
222
230
  time_base: z$1.ZodString;
@@ -248,6 +256,8 @@ declare const StreamSchema: z$1.ZodDiscriminatedUnion<"codec_type", [z$1.ZodObje
248
256
  bit_rate?: string | undefined;
249
257
  profile?: string | undefined;
250
258
  level?: number | undefined;
259
+ pix_fmt?: string | undefined;
260
+ tags?: Record<string, string> | undefined;
251
261
  }, {
252
262
  width: number;
253
263
  height: number;
@@ -270,6 +280,8 @@ declare const StreamSchema: z$1.ZodDiscriminatedUnion<"codec_type", [z$1.ZodObje
270
280
  bit_rate?: string | undefined;
271
281
  profile?: string | undefined;
272
282
  level?: number | undefined;
283
+ pix_fmt?: string | undefined;
284
+ tags?: Record<string, string> | undefined;
273
285
  }>, z$1.ZodObject<{
274
286
  index: z$1.ZodNumber;
275
287
  codec_type: z$1.ZodLiteral<"data">;
@@ -370,6 +382,8 @@ declare const ProbeSchema: z$1.ZodObject<{
370
382
  height: z$1.ZodNumber;
371
383
  coded_width: z$1.ZodNumber;
372
384
  coded_height: z$1.ZodNumber;
385
+ pix_fmt: z$1.ZodOptional<z$1.ZodString>;
386
+ tags: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodString, z$1.ZodString>>;
373
387
  r_frame_rate: z$1.ZodString;
374
388
  avg_frame_rate: z$1.ZodString;
375
389
  time_base: z$1.ZodString;
@@ -401,6 +415,8 @@ declare const ProbeSchema: z$1.ZodObject<{
401
415
  bit_rate?: string | undefined;
402
416
  profile?: string | undefined;
403
417
  level?: number | undefined;
418
+ pix_fmt?: string | undefined;
419
+ tags?: Record<string, string> | undefined;
404
420
  }, {
405
421
  width: number;
406
422
  height: number;
@@ -423,6 +439,8 @@ declare const ProbeSchema: z$1.ZodObject<{
423
439
  bit_rate?: string | undefined;
424
440
  profile?: string | undefined;
425
441
  level?: number | undefined;
442
+ pix_fmt?: string | undefined;
443
+ tags?: Record<string, string> | undefined;
426
444
  }>, z$1.ZodObject<{
427
445
  index: z$1.ZodNumber;
428
446
  codec_type: z$1.ZodLiteral<"data">;
@@ -533,6 +551,8 @@ declare const ProbeSchema: z$1.ZodObject<{
533
551
  bit_rate?: string | undefined;
534
552
  profile?: string | undefined;
535
553
  level?: number | undefined;
554
+ pix_fmt?: string | undefined;
555
+ tags?: Record<string, string> | undefined;
536
556
  } | {
537
557
  index: number;
538
558
  codec_type: "data";
@@ -597,6 +617,8 @@ declare const ProbeSchema: z$1.ZodObject<{
597
617
  bit_rate?: string | undefined;
598
618
  profile?: string | undefined;
599
619
  level?: number | undefined;
620
+ pix_fmt?: string | undefined;
621
+ tags?: Record<string, string> | undefined;
600
622
  } | {
601
623
  index: number;
602
624
  codec_type: "data";
@@ -747,6 +769,8 @@ declare const PacketProbeSchema: z$1.ZodObject<{
747
769
  height: z$1.ZodNumber;
748
770
  coded_width: z$1.ZodNumber;
749
771
  coded_height: z$1.ZodNumber;
772
+ pix_fmt: z$1.ZodOptional<z$1.ZodString>;
773
+ tags: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodString, z$1.ZodString>>;
750
774
  r_frame_rate: z$1.ZodString;
751
775
  avg_frame_rate: z$1.ZodString;
752
776
  time_base: z$1.ZodString;
@@ -778,6 +802,8 @@ declare const PacketProbeSchema: z$1.ZodObject<{
778
802
  bit_rate?: string | undefined;
779
803
  profile?: string | undefined;
780
804
  level?: number | undefined;
805
+ pix_fmt?: string | undefined;
806
+ tags?: Record<string, string> | undefined;
781
807
  }, {
782
808
  width: number;
783
809
  height: number;
@@ -800,6 +826,8 @@ declare const PacketProbeSchema: z$1.ZodObject<{
800
826
  bit_rate?: string | undefined;
801
827
  profile?: string | undefined;
802
828
  level?: number | undefined;
829
+ pix_fmt?: string | undefined;
830
+ tags?: Record<string, string> | undefined;
803
831
  }>, z$1.ZodObject<{
804
832
  index: z$1.ZodNumber;
805
833
  codec_type: z$1.ZodLiteral<"data">;
@@ -886,6 +914,8 @@ declare const PacketProbeSchema: z$1.ZodObject<{
886
914
  bit_rate?: string | undefined;
887
915
  profile?: string | undefined;
888
916
  level?: number | undefined;
917
+ pix_fmt?: string | undefined;
918
+ tags?: Record<string, string> | undefined;
889
919
  } | {
890
920
  index: number;
891
921
  codec_type: "data";
@@ -960,6 +990,8 @@ declare const PacketProbeSchema: z$1.ZodObject<{
960
990
  bit_rate?: string | undefined;
961
991
  profile?: string | undefined;
962
992
  level?: number | undefined;
993
+ pix_fmt?: string | undefined;
994
+ tags?: Record<string, string> | undefined;
963
995
  } | {
964
996
  index: number;
965
997
  codec_type: "data";
@@ -1004,6 +1036,8 @@ interface VideoTrackFragmentIndex {
1004
1036
  sample_count: number;
1005
1037
  codec: string;
1006
1038
  startTimeOffsetMs?: number;
1039
+ /** Present when this track has a paired alpha matte track (grayscale H264). */
1040
+ alphaTrackId?: number;
1007
1041
  initSegment: {
1008
1042
  offset: 0;
1009
1043
  size: number;
@@ -1060,6 +1094,8 @@ declare abstract class ProbeBase {
1060
1094
  bit_rate?: string | undefined;
1061
1095
  profile?: string | undefined;
1062
1096
  level?: number | undefined;
1097
+ pix_fmt?: string | undefined;
1098
+ tags?: Record<string, string> | undefined;
1063
1099
  } | {
1064
1100
  index: number;
1065
1101
  codec_type: "data";
@@ -1085,6 +1121,12 @@ declare abstract class ProbeBase {
1085
1121
  get hasNonAudioOrVideoStreams(): boolean;
1086
1122
  get hasAudio(): boolean;
1087
1123
  get hasVideo(): boolean;
1124
+ /**
1125
+ * Returns true if the file contains a video stream with an alpha channel.
1126
+ * VP9 alpha WebM uses TAG:alpha_mode=1 (pix_fmt is still yuv420p).
1127
+ * Some encoders may use yuva* pix_fmt directly.
1128
+ */
1129
+ get hasAlphaVideo(): boolean;
1088
1130
  get isAudioOnly(): boolean;
1089
1131
  get isMp3(): boolean;
1090
1132
  get isVideoOnly(): boolean;
@@ -1105,6 +1147,13 @@ declare abstract class ProbeBase {
1105
1147
  protected constructor(absolutePath: string);
1106
1148
  createConformingReadstream(): any;
1107
1149
  createTrackReadstream(trackIndex: number): any;
1150
+ /**
1151
+ * Produces a fragmented MP4 stream of the alpha matte for the first video stream.
1152
+ * Uses FFmpeg's `alphaextract` filter to isolate the alpha plane and encodes it
1153
+ * as H264 yuv420p — grayscale content means H264 compresses the constant U/V
1154
+ * chroma planes to near-zero bits.
1155
+ */
1156
+ createAlphaTrackReadstream(): any;
1108
1157
  createScrubTrackReadstream(): any;
1109
1158
  }
1110
1159
  declare class Probe extends ProbeBase {