@nodetool-ai/video-nodes 0.8.1

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 (152) hide show
  1. package/README.md +58 -0
  2. package/dist/.nodetool-build-stamp +1 -0
  3. package/dist/index.d.ts +9 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +11 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/nodes/ffmpeg-helpers.d.ts +77 -0
  8. package/dist/nodes/ffmpeg-helpers.d.ts.map +1 -0
  9. package/dist/nodes/ffmpeg-helpers.js +220 -0
  10. package/dist/nodes/ffmpeg-helpers.js.map +1 -0
  11. package/dist/nodes/lib-video-download.d.ts +29 -0
  12. package/dist/nodes/lib-video-download.d.ts.map +1 -0
  13. package/dist/nodes/lib-video-download.js +353 -0
  14. package/dist/nodes/lib-video-download.js.map +1 -0
  15. package/dist/nodes/model3d/analysis.d.ts +16 -0
  16. package/dist/nodes/model3d/analysis.d.ts.map +1 -0
  17. package/dist/nodes/model3d/analysis.js +38 -0
  18. package/dist/nodes/model3d/analysis.js.map +1 -0
  19. package/dist/nodes/model3d/base.d.ts +28 -0
  20. package/dist/nodes/model3d/base.d.ts.map +1 -0
  21. package/dist/nodes/model3d/base.js +20 -0
  22. package/dist/nodes/model3d/base.js.map +1 -0
  23. package/dist/nodes/model3d/boolean-ops.d.ts +2 -0
  24. package/dist/nodes/model3d/boolean-ops.d.ts.map +1 -0
  25. package/dist/nodes/model3d/boolean-ops.js +172 -0
  26. package/dist/nodes/model3d/boolean-ops.js.map +1 -0
  27. package/dist/nodes/model3d/cleanup.d.ts +56 -0
  28. package/dist/nodes/model3d/cleanup.d.ts.map +1 -0
  29. package/dist/nodes/model3d/cleanup.js +144 -0
  30. package/dist/nodes/model3d/cleanup.js.map +1 -0
  31. package/dist/nodes/model3d/convert.d.ts +27 -0
  32. package/dist/nodes/model3d/convert.d.ts.map +1 -0
  33. package/dist/nodes/model3d/convert.js +66 -0
  34. package/dist/nodes/model3d/convert.js.map +1 -0
  35. package/dist/nodes/model3d/defaults.d.ts +34 -0
  36. package/dist/nodes/model3d/defaults.d.ts.map +1 -0
  37. package/dist/nodes/model3d/defaults.js +28 -0
  38. package/dist/nodes/model3d/defaults.js.map +1 -0
  39. package/dist/nodes/model3d/document-ops.d.ts +4 -0
  40. package/dist/nodes/model3d/document-ops.d.ts.map +1 -0
  41. package/dist/nodes/model3d/document-ops.js +40 -0
  42. package/dist/nodes/model3d/document-ops.js.map +1 -0
  43. package/dist/nodes/model3d/generation.d.ts +56 -0
  44. package/dist/nodes/model3d/generation.d.ts.map +1 -0
  45. package/dist/nodes/model3d/generation.js +203 -0
  46. package/dist/nodes/model3d/generation.js.map +1 -0
  47. package/dist/nodes/model3d/glb.d.ts +29 -0
  48. package/dist/nodes/model3d/glb.d.ts.map +1 -0
  49. package/dist/nodes/model3d/glb.js +255 -0
  50. package/dist/nodes/model3d/glb.js.map +1 -0
  51. package/dist/nodes/model3d/index.d.ts +22 -0
  52. package/dist/nodes/model3d/index.d.ts.map +1 -0
  53. package/dist/nodes/model3d/index.js +41 -0
  54. package/dist/nodes/model3d/index.js.map +1 -0
  55. package/dist/nodes/model3d/io.d.ts +81 -0
  56. package/dist/nodes/model3d/io.d.ts.map +1 -0
  57. package/dist/nodes/model3d/io.js +162 -0
  58. package/dist/nodes/model3d/io.js.map +1 -0
  59. package/dist/nodes/model3d/mesh-ops.d.ts +40 -0
  60. package/dist/nodes/model3d/mesh-ops.d.ts.map +1 -0
  61. package/dist/nodes/model3d/mesh-ops.js +775 -0
  62. package/dist/nodes/model3d/mesh-ops.js.map +1 -0
  63. package/dist/nodes/model3d/nodes.d.ts +2 -0
  64. package/dist/nodes/model3d/nodes.d.ts.map +1 -0
  65. package/dist/nodes/model3d/nodes.js +2 -0
  66. package/dist/nodes/model3d/nodes.js.map +1 -0
  67. package/dist/nodes/model3d/ops.d.ts +44 -0
  68. package/dist/nodes/model3d/ops.d.ts.map +1 -0
  69. package/dist/nodes/model3d/ops.js +142 -0
  70. package/dist/nodes/model3d/ops.js.map +1 -0
  71. package/dist/nodes/model3d/render.d.ts +51 -0
  72. package/dist/nodes/model3d/render.d.ts.map +1 -0
  73. package/dist/nodes/model3d/render.js +124 -0
  74. package/dist/nodes/model3d/render.js.map +1 -0
  75. package/dist/nodes/model3d/render3d-core.d.ts +177 -0
  76. package/dist/nodes/model3d/render3d-core.d.ts.map +1 -0
  77. package/dist/nodes/model3d/render3d-core.js +366 -0
  78. package/dist/nodes/model3d/render3d-core.js.map +1 -0
  79. package/dist/nodes/model3d/render3d-headless.d.ts +75 -0
  80. package/dist/nodes/model3d/render3d-headless.d.ts.map +1 -0
  81. package/dist/nodes/model3d/render3d-headless.js +190 -0
  82. package/dist/nodes/model3d/render3d-headless.js.map +1 -0
  83. package/dist/nodes/model3d/render3d-page.d.ts +16 -0
  84. package/dist/nodes/model3d/render3d-page.d.ts.map +1 -0
  85. package/dist/nodes/model3d/render3d-page.js +51 -0
  86. package/dist/nodes/model3d/render3d-page.js.map +1 -0
  87. package/dist/nodes/model3d/transforms.d.ts +56 -0
  88. package/dist/nodes/model3d/transforms.d.ts.map +1 -0
  89. package/dist/nodes/model3d/transforms.js +148 -0
  90. package/dist/nodes/model3d/transforms.js.map +1 -0
  91. package/dist/nodes/model3d/types.d.ts +82 -0
  92. package/dist/nodes/model3d/types.d.ts.map +1 -0
  93. package/dist/nodes/model3d/types.js +2 -0
  94. package/dist/nodes/model3d/types.js.map +1 -0
  95. package/dist/nodes/model3d/utils.d.ts +46 -0
  96. package/dist/nodes/model3d/utils.d.ts.map +1 -0
  97. package/dist/nodes/model3d/utils.js +190 -0
  98. package/dist/nodes/model3d/utils.js.map +1 -0
  99. package/dist/nodes/model3d.d.ts +2 -0
  100. package/dist/nodes/model3d.d.ts.map +1 -0
  101. package/dist/nodes/model3d.js +2 -0
  102. package/dist/nodes/model3d.js.map +1 -0
  103. package/dist/nodes/placeholder-values.d.ts +10 -0
  104. package/dist/nodes/placeholder-values.d.ts.map +1 -0
  105. package/dist/nodes/placeholder-values.js +19 -0
  106. package/dist/nodes/placeholder-values.js.map +1 -0
  107. package/dist/nodes/script.d.ts +161 -0
  108. package/dist/nodes/script.d.ts.map +1 -0
  109. package/dist/nodes/script.js +673 -0
  110. package/dist/nodes/script.js.map +1 -0
  111. package/dist/nodes/storyboard.d.ts +269 -0
  112. package/dist/nodes/storyboard.d.ts.map +1 -0
  113. package/dist/nodes/storyboard.js +1017 -0
  114. package/dist/nodes/storyboard.js.map +1 -0
  115. package/dist/nodes/timeline/assetFiles.d.ts +19 -0
  116. package/dist/nodes/timeline/assetFiles.d.ts.map +1 -0
  117. package/dist/nodes/timeline/assetFiles.js +52 -0
  118. package/dist/nodes/timeline/assetFiles.js.map +1 -0
  119. package/dist/nodes/timeline/compositeRender.d.ts +60 -0
  120. package/dist/nodes/timeline/compositeRender.d.ts.map +1 -0
  121. package/dist/nodes/timeline/compositeRender.js +508 -0
  122. package/dist/nodes/timeline/compositeRender.js.map +1 -0
  123. package/dist/nodes/timeline/contactSheet.d.ts +43 -0
  124. package/dist/nodes/timeline/contactSheet.d.ts.map +1 -0
  125. package/dist/nodes/timeline/contactSheet.js +78 -0
  126. package/dist/nodes/timeline/contactSheet.js.map +1 -0
  127. package/dist/nodes/timeline/outputFormats.d.ts +69 -0
  128. package/dist/nodes/timeline/outputFormats.d.ts.map +1 -0
  129. package/dist/nodes/timeline/outputFormats.js +173 -0
  130. package/dist/nodes/timeline/outputFormats.js.map +1 -0
  131. package/dist/nodes/timeline/pngSequence.d.ts +44 -0
  132. package/dist/nodes/timeline/pngSequence.d.ts.map +1 -0
  133. package/dist/nodes/timeline/pngSequence.js +172 -0
  134. package/dist/nodes/timeline/pngSequence.js.map +1 -0
  135. package/dist/nodes/timeline/rasterizers.d.ts +47 -0
  136. package/dist/nodes/timeline/rasterizers.d.ts.map +1 -0
  137. package/dist/nodes/timeline/rasterizers.js +103 -0
  138. package/dist/nodes/timeline/rasterizers.js.map +1 -0
  139. package/dist/nodes/timeline/rawFrames.d.ts +149 -0
  140. package/dist/nodes/timeline/rawFrames.d.ts.map +1 -0
  141. package/dist/nodes/timeline/rawFrames.js +598 -0
  142. package/dist/nodes/timeline/rawFrames.js.map +1 -0
  143. package/dist/nodes/timeline.d.ts +206 -0
  144. package/dist/nodes/timeline.d.ts.map +1 -0
  145. package/dist/nodes/timeline.js +1395 -0
  146. package/dist/nodes/timeline.js.map +1 -0
  147. package/dist/nodes/video.d.ts +705 -0
  148. package/dist/nodes/video.d.ts.map +1 -0
  149. package/dist/nodes/video.js +2672 -0
  150. package/dist/nodes/video.js.map +1 -0
  151. package/dist/render3d-page.js +4118 -0
  152. package/package.json +95 -0
@@ -0,0 +1,705 @@
1
+ import { BaseNode } from "@nodetool-ai/node-sdk";
2
+ import type { Entity, InputMode, FolderRef } from "@nodetool-ai/protocol";
3
+ import type { VideoRef, ImageRef, AudioRef, StreamingInputs, StreamingOutputs } from "@nodetool-ai/node-sdk";
4
+ import type { ProcessingContext } from "@nodetool-ai/runtime";
5
+ /** Structural type for the `video_model` prop (provider + model id). */
6
+ interface VideoModelRef {
7
+ type: "video_model";
8
+ provider?: string;
9
+ id?: string;
10
+ name?: string;
11
+ path?: string | null;
12
+ supported_tasks?: unknown[];
13
+ }
14
+ /** Structural type for the `color` prop. */
15
+ interface ColorRef {
16
+ type: "color";
17
+ value?: string;
18
+ }
19
+ /** Structural type for the `font` prop. */
20
+ interface FontLike {
21
+ type: "font";
22
+ name?: string;
23
+ source?: string;
24
+ url?: string;
25
+ weight?: string;
26
+ }
27
+ /** Structural type for a subtitle `audio_chunk`. */
28
+ interface SubtitleChunk {
29
+ text?: string;
30
+ content?: string;
31
+ timestamp?: unknown[];
32
+ start?: number;
33
+ end?: number;
34
+ }
35
+ /**
36
+ * Parse cropdetect's suggested crop from ffmpeg stderr. cropdetect logs one
37
+ * `crop=w:h:x:y` per analyzed frame; the last suggestion reflects the full
38
+ * analysis, so return that. Null when no suggestion is present.
39
+ */
40
+ export declare function parseCropDetectCrop(stderr: string): string | null;
41
+ /**
42
+ * Base for every ffmpeg-backed node. Carries only the runtime gate; each node
43
+ * declares its own props and `process()`.
44
+ */
45
+ declare abstract class VideoTransformNode extends BaseNode {
46
+ static readonly requiredRuntimes: string[];
47
+ }
48
+ /** Output handles TextToVideoNode.process() emits. */
49
+ type TextToVideoNodeOutputs = {
50
+ output: VideoRef;
51
+ };
52
+ export declare class TextToVideoNode extends BaseNode {
53
+ static readonly nodeType = "nodetool.video.TextToVideo";
54
+ static readonly body = "content_card";
55
+ static readonly title = "Text To Video";
56
+ static readonly description = "Generate videos from text prompts using any supported video provider. Automatically routes to the appropriate backend (Gemini Veo, HuggingFace).\n video, generation, AI, text-to-video, t2v";
57
+ static readonly metadataOutputTypes: {
58
+ output: string;
59
+ };
60
+ static readonly inlineFields: string[];
61
+ static readonly inputFields: string[];
62
+ static readonly autoSaveAsset = true;
63
+ model: VideoModelRef;
64
+ prompt: string;
65
+ negative_prompt: string;
66
+ entities: Entity[];
67
+ aspect_ratio: string;
68
+ resolution: string;
69
+ duration: number;
70
+ timeout_seconds: number;
71
+ process(context?: ProcessingContext): Promise<TextToVideoNodeOutputs>;
72
+ }
73
+ /** Output handles ImageToVideoNode.process() emits. */
74
+ type ImageToVideoNodeOutputs = {
75
+ output: VideoRef;
76
+ };
77
+ export declare class ImageToVideoNode extends BaseNode {
78
+ static readonly nodeType = "nodetool.video.ImageToVideo";
79
+ static readonly body = "content_card";
80
+ static readonly title = "Image To Video";
81
+ static readonly description = "Animate static images into video with AI-powered motion using any supported video provider.\n video, image-to-video, i2v, animation, ai, generation, sora, veo";
82
+ static readonly metadataOutputTypes: {
83
+ output: string;
84
+ };
85
+ static readonly inlineFields: string[];
86
+ static readonly inputFields: string[];
87
+ static readonly autoSaveAsset = true;
88
+ image: ImageRef[];
89
+ model: VideoModelRef;
90
+ prompt: string;
91
+ negative_prompt: string;
92
+ entities: Entity[];
93
+ aspect_ratio: string;
94
+ resolution: string;
95
+ duration: number;
96
+ timeout_seconds: number;
97
+ process(context?: ProcessingContext): Promise<ImageToVideoNodeOutputs>;
98
+ }
99
+ /** Output handles ReferenceToVideoNode.process() emits. */
100
+ type ReferenceToVideoNodeOutputs = {
101
+ output: VideoRef;
102
+ };
103
+ export declare class ReferenceToVideoNode extends BaseNode {
104
+ static readonly nodeType = "nodetool.video.ReferenceToVideo";
105
+ static readonly body = "content_card";
106
+ static readonly title = "Reference To Video";
107
+ static readonly description = "Generate video using ordered image and video references for identity, style, scene, motion, or audio conditioning.\n video, reference-to-video, r2v, generation, ai";
108
+ static readonly metadataOutputTypes: {
109
+ output: string;
110
+ };
111
+ static readonly inlineFields: string[];
112
+ static readonly inputFields: string[];
113
+ static readonly autoSaveAsset = true;
114
+ reference_images: ImageRef[];
115
+ reference_videos: VideoRef[];
116
+ model: VideoModelRef;
117
+ prompt: string;
118
+ use_reference_video_audio: boolean;
119
+ negative_prompt: string;
120
+ entities: Entity[];
121
+ aspect_ratio: string;
122
+ resolution: string;
123
+ duration: number;
124
+ timeout_seconds: number;
125
+ process(context?: ProcessingContext): Promise<ReferenceToVideoNodeOutputs>;
126
+ }
127
+ /** Output handles LoadVideoFileNode.process() emits. */
128
+ type LoadVideoFileNodeOutputs = {
129
+ output: VideoRef;
130
+ };
131
+ export declare class LoadVideoFileNode extends BaseNode {
132
+ static readonly nodeType = "nodetool.video.LoadVideoFile";
133
+ static readonly title = "Load Video File";
134
+ static readonly description = "Read a video file from disk.\n video, input, load, file";
135
+ static readonly metadataOutputTypes: {
136
+ output: string;
137
+ };
138
+ static readonly inlineFields: string[];
139
+ static readonly inputFields: string[];
140
+ path: string;
141
+ process(): Promise<LoadVideoFileNodeOutputs>;
142
+ }
143
+ /** Output handles SaveVideoFileVideoNode.process() emits. */
144
+ type SaveVideoFileVideoNodeOutputs = {
145
+ output: VideoRef;
146
+ };
147
+ export declare class SaveVideoFileVideoNode extends BaseNode {
148
+ static readonly nodeType = "nodetool.video.SaveVideoFile";
149
+ static readonly title = "Save Video File";
150
+ static readonly description = "Write a video file to disk.\n video, output, save, file\n\n The filename can include time and date variables:\n %Y - Year, %m - Month, %d - Day\n %H - Hour, %M - Minute, %S - Second";
151
+ static readonly metadataOutputTypes: {
152
+ output: string;
153
+ };
154
+ static readonly inlineFields: string[];
155
+ static readonly inputFields: string[];
156
+ video: VideoRef;
157
+ save_to_workspace: boolean;
158
+ folder: string;
159
+ filename: string;
160
+ process(context?: ProcessingContext): Promise<SaveVideoFileVideoNodeOutputs>;
161
+ }
162
+ export declare class LoadVideoAssetsNode extends BaseNode {
163
+ static readonly nodeType = "nodetool.video.LoadVideoAssets";
164
+ static readonly title = "Load Video Folder";
165
+ static readonly description = "Load video files from an asset folder.\n load, video, file, import";
166
+ static readonly metadataOutputTypes: {
167
+ video: string;
168
+ name: string;
169
+ videos: string;
170
+ names: string;
171
+ };
172
+ static readonly inlineFields: string[];
173
+ static readonly inputFields: string[];
174
+ static readonly inputMode: InputMode;
175
+ static readonly outputCorrelation: {
176
+ video: {
177
+ kind: "iteration";
178
+ source: string;
179
+ group: string;
180
+ };
181
+ name: {
182
+ kind: "iteration";
183
+ source: string;
184
+ group: string;
185
+ };
186
+ videos: {
187
+ kind: "single";
188
+ source: string;
189
+ };
190
+ names: {
191
+ kind: "single";
192
+ source: string;
193
+ };
194
+ };
195
+ folder: FolderRef;
196
+ process(): Promise<Record<string, unknown>>;
197
+ private _loadVideos;
198
+ genProcess(): AsyncGenerator<Record<string, unknown>>;
199
+ }
200
+ /** Output handles SaveVideoNode.process() emits. */
201
+ type SaveVideoNodeOutputs = {
202
+ output: VideoRef;
203
+ };
204
+ export declare class SaveVideoNode extends BaseNode {
205
+ static readonly nodeType = "nodetool.video.SaveVideo";
206
+ static readonly title = "Save Video Asset";
207
+ static readonly description = "Save a video to an asset folder.\n video, save, file, output";
208
+ static readonly metadataOutputTypes: {
209
+ output: string;
210
+ };
211
+ static readonly inlineFields: string[];
212
+ static readonly inputFields: string[];
213
+ video: VideoRef;
214
+ folder: FolderRef;
215
+ name: string;
216
+ process(context?: ProcessingContext): Promise<SaveVideoNodeOutputs>;
217
+ }
218
+ /** Output handles ForEachFrameNode.genProcess() emits. */
219
+ type ForEachFrameNodeStreamOutputs = {
220
+ frame: {
221
+ type: string;
222
+ data: string;
223
+ };
224
+ index: number;
225
+ fps: number;
226
+ };
227
+ export declare class ForEachFrameNode extends VideoTransformNode {
228
+ static readonly nodeType = "nodetool.video.ForEachFrame";
229
+ static readonly title = "For Each Frame";
230
+ static readonly description = "Extract frames from a video file with ffmpeg.\n video, frames, extract, sequence";
231
+ static readonly metadataOutputTypes: {
232
+ frame: string;
233
+ index: string;
234
+ fps: string;
235
+ };
236
+ static readonly inlineFields: string[];
237
+ static readonly inputFields: string[];
238
+ static readonly inputMode: InputMode;
239
+ static readonly outputCorrelation: {
240
+ frame: {
241
+ kind: "iteration";
242
+ source: string;
243
+ group: string;
244
+ };
245
+ index: {
246
+ kind: "iteration";
247
+ source: string;
248
+ group: string;
249
+ };
250
+ fps: {
251
+ kind: "single";
252
+ source: string;
253
+ };
254
+ };
255
+ video: VideoRef;
256
+ start: number;
257
+ end: number;
258
+ process(context?: ProcessingContext): Promise<Record<string, unknown>>;
259
+ genProcess(context?: ProcessingContext): AsyncGenerator<ForEachFrameNodeStreamOutputs>;
260
+ }
261
+ /** Output handles FpsNode.process() emits. */
262
+ type FpsNodeOutputs = {
263
+ output: number;
264
+ };
265
+ export declare class FpsNode extends VideoTransformNode {
266
+ static readonly nodeType = "nodetool.video.Fps";
267
+ static readonly title = "Fps";
268
+ static readonly description = "Get the frames per second (FPS) of a video file.\n video, analysis, frames, fps";
269
+ static readonly metadataOutputTypes: {
270
+ output: string;
271
+ };
272
+ static readonly inlineFields: string[];
273
+ static readonly inputFields: string[];
274
+ video: VideoRef;
275
+ process(context?: ProcessingContext): Promise<FpsNodeOutputs>;
276
+ }
277
+ /** Output handles FrameToVideoNode.process() emits. */
278
+ type FrameToVideoNodeOutputs = {
279
+ output: VideoRef;
280
+ };
281
+ export declare class FrameToVideoNode extends VideoTransformNode {
282
+ static readonly nodeType = "nodetool.video.FrameToVideo";
283
+ static readonly title = "Frame To Video";
284
+ static readonly description = "Combine a sequence of frames into a single video file.\n video, frames, combine, sequence";
285
+ static readonly isStreamingInput = true;
286
+ static readonly inputMode: InputMode;
287
+ static readonly outputCorrelation: {
288
+ output: {
289
+ kind: "aggregate";
290
+ source: string;
291
+ collapse: "innermost";
292
+ };
293
+ };
294
+ static readonly metadataOutputTypes: {
295
+ output: string;
296
+ };
297
+ static readonly inlineFields: string[];
298
+ static readonly inputFields: string[];
299
+ frame: ImageRef | ImageRef[];
300
+ fps: number;
301
+ run(inputs: StreamingInputs, outputs: StreamingOutputs, _context?: ProcessingContext): Promise<void>;
302
+ process(): Promise<FrameToVideoNodeOutputs>;
303
+ }
304
+ /** Output handles ConcatVideoNode.process() emits. */
305
+ type ConcatVideoNodeOutputs = {
306
+ output: VideoRef;
307
+ };
308
+ export declare class ConcatVideoNode extends VideoTransformNode {
309
+ static readonly nodeType = "nodetool.video.Concat";
310
+ static readonly body = "content_card";
311
+ static readonly title = "Concatenate Video";
312
+ static readonly description = "Concatenate multiple video files into a single video, including audio when available. Add inputs dynamically with the \u201Cadd video input\u201D button, or wire a list of videos into a single input.\n video, concat, merge, combine, audio, +";
313
+ static readonly metadataOutputTypes: {
314
+ output: string;
315
+ };
316
+ static readonly inlineFields: string[];
317
+ static readonly inputFields: string[];
318
+ static readonly supportsDynamicInputs = true;
319
+ process(context?: ProcessingContext): Promise<ConcatVideoNodeOutputs>;
320
+ }
321
+ /** Output handles TrimVideoNode.process() emits. */
322
+ type TrimVideoNodeOutputs = {
323
+ output: VideoRef;
324
+ };
325
+ export declare class TrimVideoNode extends VideoTransformNode {
326
+ static readonly nodeType = "nodetool.video.Trim";
327
+ static readonly title = "Trim";
328
+ static readonly description = "Trim a video to a specific start and end time.\n video, trim, cut, segment";
329
+ static readonly metadataOutputTypes: {
330
+ output: string;
331
+ };
332
+ static readonly inputFields: string[];
333
+ video: VideoRef;
334
+ start_time: number;
335
+ end_time: number;
336
+ accurate: boolean;
337
+ process(context?: ProcessingContext): Promise<TrimVideoNodeOutputs>;
338
+ }
339
+ /** Output handles ResizeVideoNode.process() emits. */
340
+ type ResizeVideoNodeOutputs = {
341
+ output: VideoRef;
342
+ };
343
+ export declare class ResizeVideoNode extends VideoTransformNode {
344
+ static readonly nodeType = "nodetool.video.Resize";
345
+ static readonly title = "Resize";
346
+ static readonly description = "Resize a video to a specific width and height.\n video, resize, scale, dimensions";
347
+ static readonly metadataOutputTypes: {
348
+ output: string;
349
+ };
350
+ video: VideoRef;
351
+ width: number;
352
+ height: number;
353
+ process(context?: ProcessingContext): Promise<ResizeVideoNodeOutputs>;
354
+ }
355
+ /** Output handles RotateVideoNode.process() emits. */
356
+ type RotateVideoNodeOutputs = {
357
+ output: VideoRef;
358
+ };
359
+ export declare class RotateVideoNode extends VideoTransformNode {
360
+ static readonly nodeType = "nodetool.video.Rotate";
361
+ static readonly title = "Rotate";
362
+ static readonly description = "Rotate a video by a specified angle.\n video, rotate, orientation, transform";
363
+ static readonly metadataOutputTypes: {
364
+ output: string;
365
+ };
366
+ video: VideoRef;
367
+ angle: number;
368
+ process(context?: ProcessingContext): Promise<RotateVideoNodeOutputs>;
369
+ }
370
+ /** Output handles SetSpeedVideoNode.process() emits. */
371
+ type SetSpeedVideoNodeOutputs = {
372
+ output: VideoRef;
373
+ };
374
+ export declare class SetSpeedVideoNode extends VideoTransformNode {
375
+ static readonly nodeType = "nodetool.video.SetSpeed";
376
+ static readonly title = "Set Speed";
377
+ static readonly description = "Adjust the playback speed of a video.\n video, speed, tempo, time";
378
+ static readonly metadataOutputTypes: {
379
+ output: string;
380
+ };
381
+ video: VideoRef;
382
+ speed_factor: number;
383
+ process(context?: ProcessingContext): Promise<SetSpeedVideoNodeOutputs>;
384
+ }
385
+ /** Output handles OverlayVideoNode.process() emits. */
386
+ type OverlayVideoNodeOutputs = {
387
+ output: VideoRef;
388
+ };
389
+ export declare class OverlayVideoNode extends VideoTransformNode {
390
+ static readonly nodeType = "nodetool.video.Overlay";
391
+ static readonly title = "Overlay";
392
+ static readonly description = "Overlay one video on top of another, including audio overlay when available.\n video, overlay, composite, picture-in-picture, audio";
393
+ static readonly metadataOutputTypes: {
394
+ output: string;
395
+ };
396
+ main_video: VideoRef;
397
+ overlay_video: VideoRef;
398
+ x: number;
399
+ y: number;
400
+ scale: number;
401
+ overlay_audio_volume: number;
402
+ process(context?: ProcessingContext): Promise<OverlayVideoNodeOutputs>;
403
+ }
404
+ /** Output handles ColorBalanceVideoNode.process() emits. */
405
+ type ColorBalanceVideoNodeOutputs = {
406
+ output: VideoRef;
407
+ };
408
+ export declare class ColorBalanceVideoNode extends VideoTransformNode {
409
+ static readonly nodeType = "nodetool.video.ColorBalance";
410
+ static readonly title = "Color Balance";
411
+ static readonly description = "Adjust the color balance of a video.\n video, color, balance, adjustment";
412
+ static readonly metadataOutputTypes: {
413
+ output: string;
414
+ };
415
+ video: VideoRef;
416
+ red_adjust: number;
417
+ green_adjust: number;
418
+ blue_adjust: number;
419
+ process(context?: ProcessingContext): Promise<ColorBalanceVideoNodeOutputs>;
420
+ }
421
+ /** Output handles DenoiseVideoNode.process() emits. */
422
+ type DenoiseVideoNodeOutputs = {
423
+ output: VideoRef;
424
+ };
425
+ export declare class DenoiseVideoNode extends VideoTransformNode {
426
+ static readonly nodeType = "nodetool.video.Denoise";
427
+ static readonly title = "Denoise";
428
+ static readonly description = "Apply noise reduction to a video.\n video, denoise, clean, enhance";
429
+ static readonly metadataOutputTypes: {
430
+ output: string;
431
+ };
432
+ video: VideoRef;
433
+ strength: number;
434
+ process(context?: ProcessingContext): Promise<DenoiseVideoNodeOutputs>;
435
+ }
436
+ /** Output handles StabilizeVideoNode.process() emits. */
437
+ type StabilizeVideoNodeOutputs = {
438
+ output: VideoRef;
439
+ };
440
+ export declare class StabilizeVideoNode extends VideoTransformNode {
441
+ static readonly nodeType = "nodetool.video.Stabilize";
442
+ static readonly title = "Stabilize";
443
+ static readonly description = "Apply video stabilization to reduce camera shake and jitter.\n video, stabilize, smooth, shake-reduction";
444
+ static readonly metadataOutputTypes: {
445
+ output: string;
446
+ };
447
+ video: VideoRef;
448
+ smoothing: number;
449
+ crop_black: boolean;
450
+ process(context?: ProcessingContext): Promise<StabilizeVideoNodeOutputs>;
451
+ }
452
+ /** Output handles SharpnessVideoNode.process() emits. */
453
+ type SharpnessVideoNodeOutputs = {
454
+ output: VideoRef;
455
+ };
456
+ export declare class SharpnessVideoNode extends VideoTransformNode {
457
+ static readonly nodeType = "nodetool.video.Sharpness";
458
+ static readonly title = "Sharpness";
459
+ static readonly description = "Adjust the sharpness of a video.\n video, sharpen, enhance, detail";
460
+ static readonly metadataOutputTypes: {
461
+ output: string;
462
+ };
463
+ video: VideoRef;
464
+ luma_amount: number;
465
+ chroma_amount: number;
466
+ process(context?: ProcessingContext): Promise<SharpnessVideoNodeOutputs>;
467
+ }
468
+ /** Output handles BlurVideoNode.process() emits. */
469
+ type BlurVideoNodeOutputs = {
470
+ output: VideoRef;
471
+ };
472
+ export declare class BlurVideoNode extends VideoTransformNode {
473
+ static readonly nodeType = "nodetool.video.Blur";
474
+ static readonly title = "Blur";
475
+ static readonly description = "Apply a blur effect to a video.\n video, blur, smooth, soften";
476
+ static readonly metadataOutputTypes: {
477
+ output: string;
478
+ };
479
+ video: VideoRef;
480
+ strength: number;
481
+ process(context?: ProcessingContext): Promise<BlurVideoNodeOutputs>;
482
+ }
483
+ /** Output handles SaturationVideoNode.process() emits. */
484
+ type SaturationVideoNodeOutputs = {
485
+ output: VideoRef;
486
+ };
487
+ export declare class SaturationVideoNode extends VideoTransformNode {
488
+ static readonly nodeType = "nodetool.video.Saturation";
489
+ static readonly title = "Saturation";
490
+ static readonly description = "Adjust the color saturation of a video.\n video, saturation, color, enhance";
491
+ static readonly metadataOutputTypes: {
492
+ output: string;
493
+ };
494
+ video: VideoRef;
495
+ saturation: number;
496
+ process(context?: ProcessingContext): Promise<SaturationVideoNodeOutputs>;
497
+ }
498
+ /** Output handles AddSubtitlesVideoNode.process() emits. */
499
+ type AddSubtitlesVideoNodeOutputs = {
500
+ output: VideoRef;
501
+ };
502
+ export declare class AddSubtitlesVideoNode extends VideoTransformNode {
503
+ static readonly nodeType = "nodetool.video.AddSubtitles";
504
+ static readonly title = "Add Subtitles";
505
+ static readonly description = "Add subtitles to a video.\n video, subtitles, text, caption";
506
+ static readonly metadataOutputTypes: {
507
+ output: string;
508
+ };
509
+ video: VideoRef;
510
+ chunks: SubtitleChunk[];
511
+ font: FontLike;
512
+ align: string;
513
+ font_size: number;
514
+ font_color: ColorRef;
515
+ process(context?: ProcessingContext): Promise<AddSubtitlesVideoNodeOutputs>;
516
+ }
517
+ /** Output handles ReverseVideoNode.process() emits. */
518
+ type ReverseVideoNodeOutputs = {
519
+ output: VideoRef;
520
+ };
521
+ export declare class ReverseVideoNode extends VideoTransformNode {
522
+ static readonly nodeType = "nodetool.video.Reverse";
523
+ static readonly title = "Reverse";
524
+ static readonly description = "Reverse the playback of a video.\n video, reverse, backwards, effect";
525
+ static readonly metadataOutputTypes: {
526
+ output: string;
527
+ };
528
+ static readonly inputFields: string[];
529
+ video: VideoRef;
530
+ process(context?: ProcessingContext): Promise<ReverseVideoNodeOutputs>;
531
+ }
532
+ /** Output handles TransitionVideoNode.process() emits. */
533
+ type TransitionVideoNodeOutputs = {
534
+ output: VideoRef;
535
+ };
536
+ export declare class TransitionVideoNode extends VideoTransformNode {
537
+ static readonly nodeType = "nodetool.video.Transition";
538
+ static readonly title = "Transition";
539
+ static readonly description = "Create a transition effect between two videos, including audio transition when available.\n video, transition, effect, merge, audio";
540
+ static readonly metadataOutputTypes: {
541
+ output: string;
542
+ };
543
+ video_a: VideoRef;
544
+ video_b: VideoRef;
545
+ transition_type: string;
546
+ duration: number;
547
+ process(context?: ProcessingContext): Promise<TransitionVideoNodeOutputs>;
548
+ }
549
+ /** Output handles AddAudioVideoNode.process() emits. */
550
+ type AddAudioVideoNodeOutputs = {
551
+ output: VideoRef;
552
+ };
553
+ export declare class AddAudioVideoNode extends VideoTransformNode {
554
+ static readonly nodeType = "nodetool.video.AddAudio";
555
+ static readonly title = "Add Audio";
556
+ static readonly description = "Add an audio track to a video, replacing or mixing with existing audio.\n video, audio, soundtrack, merge";
557
+ static readonly metadataOutputTypes: {
558
+ output: string;
559
+ };
560
+ static readonly inputFields: string[];
561
+ video: VideoRef;
562
+ audio: AudioRef;
563
+ volume: number;
564
+ mix: boolean;
565
+ output_length: string;
566
+ process(context?: ProcessingContext): Promise<AddAudioVideoNodeOutputs>;
567
+ }
568
+ /** Output handles ChromaKeyVideoNode.process() emits. */
569
+ type ChromaKeyVideoNodeOutputs = {
570
+ output: VideoRef;
571
+ };
572
+ export declare class ChromaKeyVideoNode extends VideoTransformNode {
573
+ static readonly nodeType = "nodetool.video.ChromaKey";
574
+ static readonly title = "Chroma Key";
575
+ static readonly description = "Apply chroma key (green screen) effect to a video. The MP4 output has no alpha channel, so the keyed-out area renders black \u2014 composite it over a background with the Overlay node.\n video, chroma key, green screen, compositing";
576
+ static readonly metadataOutputTypes: {
577
+ output: string;
578
+ };
579
+ video: VideoRef;
580
+ key_color: ColorRef;
581
+ similarity: number;
582
+ blend: number;
583
+ process(context?: ProcessingContext): Promise<ChromaKeyVideoNodeOutputs>;
584
+ }
585
+ /** Output handles ExtractAudioVideoNode.process() emits. */
586
+ type ExtractAudioVideoNodeOutputs = {
587
+ output: {
588
+ type: string;
589
+ data: null;
590
+ uri: string;
591
+ asset_id: null;
592
+ metadata: null;
593
+ } | {
594
+ type: string;
595
+ data: string;
596
+ uri: string;
597
+ asset_id: null;
598
+ metadata: null;
599
+ };
600
+ };
601
+ export declare class ExtractAudioVideoNode extends VideoTransformNode {
602
+ static readonly nodeType = "nodetool.video.ExtractAudio";
603
+ static readonly title = "Extract Audio";
604
+ static readonly description = "Separate and extract audio track from a video file.\n video, audio, extract, separate, split";
605
+ static readonly metadataOutputTypes: {
606
+ output: string;
607
+ };
608
+ static readonly inputFields: string[];
609
+ video: VideoRef;
610
+ process(context?: ProcessingContext): Promise<ExtractAudioVideoNodeOutputs>;
611
+ }
612
+ /** Output handles ExtractFrameVideoNode.process() emits. */
613
+ type ExtractFrameVideoNodeOutputs = {
614
+ output: {
615
+ type: string;
616
+ data: null;
617
+ } | {
618
+ type: string;
619
+ data: string;
620
+ };
621
+ };
622
+ export declare class ExtractFrameVideoNode extends VideoTransformNode {
623
+ static readonly nodeType = "nodetool.video.ExtractFrame";
624
+ static readonly title = "Extract Video Frame";
625
+ static readonly description = "Extract a single frame from a video at a specific time position.\n video, frame, extract, screenshot, thumbnail, capture";
626
+ static readonly metadataOutputTypes: {
627
+ output: string;
628
+ };
629
+ static readonly inputFields: string[];
630
+ video: VideoRef;
631
+ time: number;
632
+ process(context?: ProcessingContext): Promise<ExtractFrameVideoNodeOutputs>;
633
+ }
634
+ /** Output handles GetVideoInfoNode.process() emits. */
635
+ type GetVideoInfoNodeOutputs = {
636
+ duration: number;
637
+ width: number;
638
+ height: number;
639
+ fps: number;
640
+ frame_count: number;
641
+ codec: string;
642
+ has_audio: boolean;
643
+ };
644
+ export declare class GetVideoInfoNode extends VideoTransformNode {
645
+ static readonly nodeType = "nodetool.video.GetVideoInfo";
646
+ static readonly title = "Get Video Info";
647
+ static readonly description = "Get metadata about a video file including duration, resolution, frame rate, and codec.\n video, info, metadata, duration, resolution, fps, codec, analysis";
648
+ static readonly metadataOutputTypes: {
649
+ duration: string;
650
+ width: string;
651
+ height: string;
652
+ fps: string;
653
+ frame_count: string;
654
+ codec: string;
655
+ has_audio: string;
656
+ };
657
+ static readonly inputFields: string[];
658
+ video: VideoRef;
659
+ process(context?: ProcessingContext): Promise<GetVideoInfoNodeOutputs>;
660
+ }
661
+ /** Output handles VideoToVideoNode.process() emits. */
662
+ type VideoToVideoNodeOutputs = {
663
+ output: VideoRef;
664
+ };
665
+ export declare class VideoToVideoNode extends BaseNode {
666
+ static readonly nodeType = "nodetool.video.VideoToVideo";
667
+ static readonly body = "content_card";
668
+ static readonly title = "Video To Video";
669
+ static readonly description = "Restyle or edit an existing video with a text prompt using any supported video provider.\n video, video-to-video, v2v, restyle, style-transfer, AI";
670
+ static readonly metadataOutputTypes: {
671
+ output: string;
672
+ };
673
+ static readonly inlineFields: string[];
674
+ static readonly inputFields: string[];
675
+ static readonly autoSaveAsset = true;
676
+ model: VideoModelRef;
677
+ video: VideoRef;
678
+ prompt: string;
679
+ negative_prompt: string;
680
+ strength: number;
681
+ process(context?: ProcessingContext): Promise<VideoToVideoNodeOutputs>;
682
+ }
683
+ /** Output handles LipSyncNode.process() emits. */
684
+ type LipSyncNodeOutputs = {
685
+ output: VideoRef;
686
+ };
687
+ export declare class LipSyncNode extends BaseNode {
688
+ static readonly nodeType = "nodetool.video.LipSync";
689
+ static readonly body = "content_card";
690
+ static readonly title = "Lip Sync";
691
+ static readonly description = "Drive a face in a video to match speech in an audio track using any supported lip-sync provider.\n video, lip-sync, lipsync, talking-head, dubbing, AI";
692
+ static readonly metadataOutputTypes: {
693
+ output: string;
694
+ };
695
+ static readonly inlineFields: string[];
696
+ static readonly inputFields: string[];
697
+ static readonly autoSaveAsset = true;
698
+ model: VideoModelRef;
699
+ video: VideoRef;
700
+ audio: AudioRef;
701
+ process(context?: ProcessingContext): Promise<LipSyncNodeOutputs>;
702
+ }
703
+ export declare const VIDEO_NODES: readonly [typeof TextToVideoNode, typeof ImageToVideoNode, typeof ReferenceToVideoNode, typeof LoadVideoFileNode, typeof SaveVideoFileVideoNode, typeof LoadVideoAssetsNode, typeof SaveVideoNode, typeof ForEachFrameNode, typeof FpsNode, typeof FrameToVideoNode, typeof ConcatVideoNode, typeof TrimVideoNode, typeof ResizeVideoNode, typeof RotateVideoNode, typeof SetSpeedVideoNode, typeof OverlayVideoNode, typeof ColorBalanceVideoNode, typeof DenoiseVideoNode, typeof StabilizeVideoNode, typeof SharpnessVideoNode, typeof BlurVideoNode, typeof SaturationVideoNode, typeof AddSubtitlesVideoNode, typeof ReverseVideoNode, typeof TransitionVideoNode, typeof AddAudioVideoNode, typeof ChromaKeyVideoNode, typeof ExtractAudioVideoNode, typeof ExtractFrameVideoNode, typeof GetVideoInfoNode, typeof VideoToVideoNode, typeof LipSyncNode];
704
+ export {};
705
+ //# sourceMappingURL=video.d.ts.map