@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.
- package/LICENSE-FULL.md +148 -0
- package/LICENSE.md +58 -0
- package/dist/Probe.cjs +63 -9
- package/dist/Probe.cjs.map +1 -1
- package/dist/Probe.d.cts +49 -0
- package/dist/Probe.d.ts +49 -0
- package/dist/Probe.js +59 -3
- package/dist/Probe.js.map +1 -1
- package/dist/VideoRenderOptions.cjs +2 -4
- package/dist/VideoRenderOptions.cjs.map +1 -1
- package/dist/VideoRenderOptions.js +1 -2
- package/dist/VideoRenderOptions.js.map +1 -1
- package/dist/_virtual/{rolldown_runtime.cjs → _rolldown/runtime.cjs} +2 -4
- package/dist/generateFragmentIndex.cjs +4 -12
- package/dist/generateFragmentIndex.cjs.map +1 -1
- package/dist/generateFragmentIndex.d.cts +1 -2
- package/dist/generateFragmentIndex.d.ts +1 -2
- package/dist/generateFragmentIndex.js +1 -2
- package/dist/generateFragmentIndex.js.map +1 -1
- package/dist/generateSingleTrack.cjs +7 -10
- package/dist/generateSingleTrack.cjs.map +1 -1
- package/dist/generateSingleTrack.js +2 -3
- package/dist/generateSingleTrack.js.map +1 -1
- package/dist/generateWebmSegmentIndex.cjs +346 -0
- package/dist/generateWebmSegmentIndex.cjs.map +1 -0
- package/dist/generateWebmSegmentIndex.js +343 -0
- package/dist/generateWebmSegmentIndex.js.map +1 -0
- package/dist/idempotentTask.cjs +5 -10
- package/dist/idempotentTask.cjs.map +1 -1
- package/dist/idempotentTask.d.cts +0 -1
- package/dist/idempotentTask.d.ts +0 -1
- package/dist/idempotentTask.js +1 -2
- package/dist/idempotentTask.js.map +1 -1
- package/dist/index.cjs +11 -11
- package/dist/index.js +1 -2
- package/dist/md5.cjs +3 -7
- package/dist/md5.cjs.map +1 -1
- package/dist/md5.js +1 -2
- package/dist/md5.js.map +1 -1
- package/dist/tasks/cacheImage.cjs +4 -6
- package/dist/tasks/cacheImage.cjs.map +1 -1
- package/dist/tasks/cacheImage.js +1 -2
- package/dist/tasks/cacheImage.js.map +1 -1
- package/dist/tasks/findOrCreateCaptions.cjs +5 -10
- package/dist/tasks/findOrCreateCaptions.cjs.map +1 -1
- package/dist/tasks/findOrCreateCaptions.js +1 -2
- package/dist/tasks/findOrCreateCaptions.js.map +1 -1
- package/dist/tasks/generateScrubTrack.cjs +6 -9
- package/dist/tasks/generateScrubTrack.cjs.map +1 -1
- package/dist/tasks/generateScrubTrack.js +1 -2
- package/dist/tasks/generateScrubTrack.js.map +1 -1
- package/dist/tasks/generateTrack.cjs +21 -9
- package/dist/tasks/generateTrack.cjs.map +1 -1
- package/dist/tasks/generateTrack.js +17 -4
- package/dist/tasks/generateTrack.js.map +1 -1
- package/dist/tasks/generateTrackFragmentIndex.cjs +26 -11
- package/dist/tasks/generateTrackFragmentIndex.cjs.map +1 -1
- package/dist/tasks/generateTrackFragmentIndex.js +21 -5
- package/dist/tasks/generateTrackFragmentIndex.js.map +1 -1
- package/dist/truncateDecimal.cjs +1 -2
- package/dist/truncateDecimal.cjs.map +1 -1
- package/dist/truncateDecimal.js +1 -1
- package/dist/truncateDecimal.js.map +1 -1
- package/package.json +1 -1
package/LICENSE-FULL.md
ADDED
|
@@ -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
|
|
2
|
-
const require_truncateDecimal = require(
|
|
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 =
|
|
6
|
+
zod = require_runtime.__toESM(zod);
|
|
9
7
|
let debug = require("debug");
|
|
10
|
-
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
|
package/dist/Probe.cjs.map
CHANGED
|
@@ -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 {
|