@bylqwjc/media-editor-server 1.0.22 → 1.0.24

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.
@@ -1,1027 +0,0 @@
1
- import { z } from 'zod';
2
-
3
- /**
4
- * editor-core/state —— 视频编辑状态模型 v2(纯 TS,零框架依赖)
5
- *
6
- * SDK 分层约定:本目录(editor-core)是未来 Vue/任意框架适配的共享核心,
7
- * 只允许纯 TS + zod,禁止 import React/Next/DOM 类型。
8
- *
9
- * v2 = 多素材输出时间轴(CapCut 简化版):
10
- * - clips:视频片段列表,**数组顺序 = 输出拼接顺序**(x 轴是输出时间,不是源时间)。
11
- * 每个片段 = { srcIdx: 第几个上传的视频文件, in/out: 该源内的时间区间 }。
12
- * EditState 只存索引引用——File/objectURL 是浏览器运行时的事,不进状态。
13
- * - audioClips:音乐轨。startAt = 在输出时间轴上的落点;volume 0-2(导出真值,预览钳 1)。
14
- * - canvas:输出画布 = 第一个素材的分辨率(偶数)。所有片段先 cover 居中裁剪铺满画布,
15
- * 再统一过全局效果链 —— crop/rotation/outputSize 的「源 dims」一律指 canvas。
16
- * - 全局效果(crop/scale/rotation/flips/filters/overlays)作用于拼接后的整条输出。
17
- * - poster.time = 输出时间轴时刻。
18
- * overlays 坐标存「最终输出空间」,导出时客户端渲染成输出分辨率透明 PNG 烧入。
19
- */
20
-
21
- declare const Overlay: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
22
- rotation: z.ZodOptional<z.ZodNumber>;
23
- color: z.ZodString;
24
- width: z.ZodNumber;
25
- type: z.ZodLiteral<"pen">;
26
- points: z.ZodArray<z.ZodNumber, "many">;
27
- }, "strip", z.ZodTypeAny, {
28
- type: "pen";
29
- points: number[];
30
- color: string;
31
- width: number;
32
- rotation?: number | undefined;
33
- }, {
34
- type: "pen";
35
- points: number[];
36
- color: string;
37
- width: number;
38
- rotation?: number | undefined;
39
- }>, z.ZodObject<{
40
- rotation: z.ZodOptional<z.ZodNumber>;
41
- color: z.ZodString;
42
- width: z.ZodNumber;
43
- type: z.ZodLiteral<"line">;
44
- x1: z.ZodNumber;
45
- y1: z.ZodNumber;
46
- x2: z.ZodNumber;
47
- y2: z.ZodNumber;
48
- }, "strip", z.ZodTypeAny, {
49
- type: "line";
50
- color: string;
51
- width: number;
52
- x1: number;
53
- y1: number;
54
- x2: number;
55
- y2: number;
56
- rotation?: number | undefined;
57
- }, {
58
- type: "line";
59
- color: string;
60
- width: number;
61
- x1: number;
62
- y1: number;
63
- x2: number;
64
- y2: number;
65
- rotation?: number | undefined;
66
- }>, z.ZodObject<{
67
- rotation: z.ZodOptional<z.ZodNumber>;
68
- color: z.ZodString;
69
- width: z.ZodNumber;
70
- type: z.ZodLiteral<"arrow">;
71
- x1: z.ZodNumber;
72
- y1: z.ZodNumber;
73
- x2: z.ZodNumber;
74
- y2: z.ZodNumber;
75
- }, "strip", z.ZodTypeAny, {
76
- type: "arrow";
77
- color: string;
78
- width: number;
79
- x1: number;
80
- y1: number;
81
- x2: number;
82
- y2: number;
83
- rotation?: number | undefined;
84
- }, {
85
- type: "arrow";
86
- color: string;
87
- width: number;
88
- x1: number;
89
- y1: number;
90
- x2: number;
91
- y2: number;
92
- rotation?: number | undefined;
93
- }>, z.ZodObject<{
94
- rotation: z.ZodOptional<z.ZodNumber>;
95
- color: z.ZodString;
96
- width: z.ZodNumber;
97
- type: z.ZodLiteral<"rect">;
98
- x: z.ZodNumber;
99
- y: z.ZodNumber;
100
- w: z.ZodNumber;
101
- h: z.ZodNumber;
102
- }, "strip", z.ZodTypeAny, {
103
- type: "rect";
104
- color: string;
105
- width: number;
106
- x: number;
107
- y: number;
108
- w: number;
109
- h: number;
110
- rotation?: number | undefined;
111
- }, {
112
- type: "rect";
113
- color: string;
114
- width: number;
115
- x: number;
116
- y: number;
117
- w: number;
118
- h: number;
119
- rotation?: number | undefined;
120
- }>, z.ZodObject<{
121
- rotation: z.ZodOptional<z.ZodNumber>;
122
- color: z.ZodString;
123
- width: z.ZodNumber;
124
- type: z.ZodLiteral<"ellipse">;
125
- x: z.ZodNumber;
126
- y: z.ZodNumber;
127
- w: z.ZodNumber;
128
- h: z.ZodNumber;
129
- }, "strip", z.ZodTypeAny, {
130
- type: "ellipse";
131
- color: string;
132
- width: number;
133
- x: number;
134
- y: number;
135
- w: number;
136
- h: number;
137
- rotation?: number | undefined;
138
- }, {
139
- type: "ellipse";
140
- color: string;
141
- width: number;
142
- x: number;
143
- y: number;
144
- w: number;
145
- h: number;
146
- rotation?: number | undefined;
147
- }>, z.ZodObject<{
148
- rotation: z.ZodOptional<z.ZodNumber>;
149
- type: z.ZodLiteral<"text">;
150
- x: z.ZodNumber;
151
- y: z.ZodNumber;
152
- text: z.ZodString;
153
- color: z.ZodString;
154
- fontSize: z.ZodNumber;
155
- }, "strip", z.ZodTypeAny, {
156
- type: "text";
157
- color: string;
158
- x: number;
159
- y: number;
160
- text: string;
161
- fontSize: number;
162
- rotation?: number | undefined;
163
- }, {
164
- type: "text";
165
- color: string;
166
- x: number;
167
- y: number;
168
- text: string;
169
- fontSize: number;
170
- rotation?: number | undefined;
171
- }>, z.ZodObject<{
172
- rotation: z.ZodOptional<z.ZodNumber>;
173
- type: z.ZodLiteral<"sticker">;
174
- x: z.ZodNumber;
175
- y: z.ZodNumber;
176
- w: z.ZodNumber;
177
- h: z.ZodNumber;
178
- emoji: z.ZodOptional<z.ZodString>;
179
- src: z.ZodOptional<z.ZodString>;
180
- }, "strip", z.ZodTypeAny, {
181
- type: "sticker";
182
- x: number;
183
- y: number;
184
- w: number;
185
- h: number;
186
- rotation?: number | undefined;
187
- emoji?: string | undefined;
188
- src?: string | undefined;
189
- }, {
190
- type: "sticker";
191
- x: number;
192
- y: number;
193
- w: number;
194
- h: number;
195
- rotation?: number | undefined;
196
- emoji?: string | undefined;
197
- src?: string | undefined;
198
- }>]>;
199
- type OverlayT = z.infer<typeof Overlay>;
200
- /** 视频片段:srcIdx 指向上传文件序(服务端交叉校验 < 实际文件数) */
201
- declare const Clip: z.ZodObject<{
202
- srcIdx: z.ZodNumber;
203
- in: z.ZodNumber;
204
- out: z.ZodNumber;
205
- }, "strip", z.ZodTypeAny, {
206
- srcIdx: number;
207
- in: number;
208
- out: number;
209
- }, {
210
- srcIdx: number;
211
- in: number;
212
- out: number;
213
- }>;
214
- type ClipT = z.infer<typeof Clip>;
215
- /** 音乐片段:startAt = 输出时间轴落点;in/out = 音频源内区间 */
216
- declare const AudioClip: z.ZodObject<{
217
- srcIdx: z.ZodNumber;
218
- startAt: z.ZodNumber;
219
- in: z.ZodNumber;
220
- out: z.ZodNumber;
221
- volume: z.ZodNumber;
222
- }, "strip", z.ZodTypeAny, {
223
- srcIdx: number;
224
- in: number;
225
- out: number;
226
- startAt: number;
227
- volume: number;
228
- }, {
229
- srcIdx: number;
230
- in: number;
231
- out: number;
232
- startAt: number;
233
- volume: number;
234
- }>;
235
- type AudioClipT = z.infer<typeof AudioClip>;
236
- declare const VideoEditState: z.ZodEffects<z.ZodObject<{
237
- clips: z.ZodArray<z.ZodObject<{
238
- srcIdx: z.ZodNumber;
239
- in: z.ZodNumber;
240
- out: z.ZodNumber;
241
- }, "strip", z.ZodTypeAny, {
242
- srcIdx: number;
243
- in: number;
244
- out: number;
245
- }, {
246
- srcIdx: number;
247
- in: number;
248
- out: number;
249
- }>, "many">;
250
- audioClips: z.ZodDefault<z.ZodArray<z.ZodObject<{
251
- srcIdx: z.ZodNumber;
252
- startAt: z.ZodNumber;
253
- in: z.ZodNumber;
254
- out: z.ZodNumber;
255
- volume: z.ZodNumber;
256
- }, "strip", z.ZodTypeAny, {
257
- srcIdx: number;
258
- in: number;
259
- out: number;
260
- startAt: number;
261
- volume: number;
262
- }, {
263
- srcIdx: number;
264
- in: number;
265
- out: number;
266
- startAt: number;
267
- volume: number;
268
- }>, "many">>;
269
- /** 输出画布(=首素材分辨率,偶数);全局 crop/rotation 的"源 dims" */
270
- canvas: z.ZodObject<{
271
- w: z.ZodNumber;
272
- h: z.ZodNumber;
273
- }, "strip", z.ZodTypeAny, {
274
- w: number;
275
- h: number;
276
- }, {
277
- w: number;
278
- h: number;
279
- }>;
280
- crop: z.ZodOptional<z.ZodObject<{
281
- x: z.ZodNumber;
282
- y: z.ZodNumber;
283
- width: z.ZodNumber;
284
- height: z.ZodNumber;
285
- }, "strip", z.ZodTypeAny, {
286
- width: number;
287
- x: number;
288
- y: number;
289
- height: number;
290
- }, {
291
- width: number;
292
- x: number;
293
- y: number;
294
- height: number;
295
- }>>;
296
- scale: z.ZodOptional<z.ZodObject<{
297
- width: z.ZodNumber;
298
- height: z.ZodNumber;
299
- fit: z.ZodEnum<["contain", "cover", "force"]>;
300
- }, "strip", z.ZodTypeAny, {
301
- width: number;
302
- height: number;
303
- fit: "contain" | "cover" | "force";
304
- }, {
305
- width: number;
306
- height: number;
307
- fit: "contain" | "cover" | "force";
308
- }>>;
309
- /** 任意角度(度)。UI = 90° 步进按钮 + ±45° 刻度盘叠加 */
310
- rotation: z.ZodDefault<z.ZodNumber>;
311
- flipX: z.ZodDefault<z.ZodBoolean>;
312
- flipY: z.ZodDefault<z.ZodBoolean>;
313
- filters: z.ZodDefault<z.ZodObject<{
314
- brightness: z.ZodNumber;
315
- contrast: z.ZodNumber;
316
- saturation: z.ZodNumber;
317
- temperature: z.ZodDefault<z.ZodNumber>;
318
- tint: z.ZodDefault<z.ZodNumber>;
319
- vibrance: z.ZodDefault<z.ZodNumber>;
320
- gamma: z.ZodDefault<z.ZodNumber>;
321
- highlights: z.ZodDefault<z.ZodNumber>;
322
- shadows: z.ZodDefault<z.ZodNumber>;
323
- whites: z.ZodDefault<z.ZodNumber>;
324
- blacks: z.ZodDefault<z.ZodNumber>;
325
- lightSense: z.ZodDefault<z.ZodNumber>;
326
- sharpen: z.ZodDefault<z.ZodNumber>;
327
- clarity: z.ZodDefault<z.ZodNumber>;
328
- grain: z.ZodDefault<z.ZodNumber>;
329
- fade: z.ZodDefault<z.ZodNumber>;
330
- vignette: z.ZodDefault<z.ZodNumber>;
331
- }, "strip", z.ZodTypeAny, {
332
- brightness: number;
333
- contrast: number;
334
- saturation: number;
335
- temperature: number;
336
- tint: number;
337
- vibrance: number;
338
- gamma: number;
339
- highlights: number;
340
- shadows: number;
341
- whites: number;
342
- blacks: number;
343
- lightSense: number;
344
- sharpen: number;
345
- clarity: number;
346
- grain: number;
347
- fade: number;
348
- vignette: number;
349
- }, {
350
- brightness: number;
351
- contrast: number;
352
- saturation: number;
353
- temperature?: number | undefined;
354
- tint?: number | undefined;
355
- vibrance?: number | undefined;
356
- gamma?: number | undefined;
357
- highlights?: number | undefined;
358
- shadows?: number | undefined;
359
- whites?: number | undefined;
360
- blacks?: number | undefined;
361
- lightSense?: number | undefined;
362
- sharpen?: number | undefined;
363
- clarity?: number | undefined;
364
- grain?: number | undefined;
365
- fade?: number | undefined;
366
- vignette?: number | undefined;
367
- }>>;
368
- /** 预设滤镜 id(见 filters.ts);与 filters 手调叠加 */
369
- filterPreset: z.ZodOptional<z.ZodString>;
370
- overlays: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
371
- rotation: z.ZodOptional<z.ZodNumber>;
372
- color: z.ZodString;
373
- width: z.ZodNumber;
374
- type: z.ZodLiteral<"pen">;
375
- points: z.ZodArray<z.ZodNumber, "many">;
376
- }, "strip", z.ZodTypeAny, {
377
- type: "pen";
378
- points: number[];
379
- color: string;
380
- width: number;
381
- rotation?: number | undefined;
382
- }, {
383
- type: "pen";
384
- points: number[];
385
- color: string;
386
- width: number;
387
- rotation?: number | undefined;
388
- }>, z.ZodObject<{
389
- rotation: z.ZodOptional<z.ZodNumber>;
390
- color: z.ZodString;
391
- width: z.ZodNumber;
392
- type: z.ZodLiteral<"line">;
393
- x1: z.ZodNumber;
394
- y1: z.ZodNumber;
395
- x2: z.ZodNumber;
396
- y2: z.ZodNumber;
397
- }, "strip", z.ZodTypeAny, {
398
- type: "line";
399
- color: string;
400
- width: number;
401
- x1: number;
402
- y1: number;
403
- x2: number;
404
- y2: number;
405
- rotation?: number | undefined;
406
- }, {
407
- type: "line";
408
- color: string;
409
- width: number;
410
- x1: number;
411
- y1: number;
412
- x2: number;
413
- y2: number;
414
- rotation?: number | undefined;
415
- }>, z.ZodObject<{
416
- rotation: z.ZodOptional<z.ZodNumber>;
417
- color: z.ZodString;
418
- width: z.ZodNumber;
419
- type: z.ZodLiteral<"arrow">;
420
- x1: z.ZodNumber;
421
- y1: z.ZodNumber;
422
- x2: z.ZodNumber;
423
- y2: z.ZodNumber;
424
- }, "strip", z.ZodTypeAny, {
425
- type: "arrow";
426
- color: string;
427
- width: number;
428
- x1: number;
429
- y1: number;
430
- x2: number;
431
- y2: number;
432
- rotation?: number | undefined;
433
- }, {
434
- type: "arrow";
435
- color: string;
436
- width: number;
437
- x1: number;
438
- y1: number;
439
- x2: number;
440
- y2: number;
441
- rotation?: number | undefined;
442
- }>, z.ZodObject<{
443
- rotation: z.ZodOptional<z.ZodNumber>;
444
- color: z.ZodString;
445
- width: z.ZodNumber;
446
- type: z.ZodLiteral<"rect">;
447
- x: z.ZodNumber;
448
- y: z.ZodNumber;
449
- w: z.ZodNumber;
450
- h: z.ZodNumber;
451
- }, "strip", z.ZodTypeAny, {
452
- type: "rect";
453
- color: string;
454
- width: number;
455
- x: number;
456
- y: number;
457
- w: number;
458
- h: number;
459
- rotation?: number | undefined;
460
- }, {
461
- type: "rect";
462
- color: string;
463
- width: number;
464
- x: number;
465
- y: number;
466
- w: number;
467
- h: number;
468
- rotation?: number | undefined;
469
- }>, z.ZodObject<{
470
- rotation: z.ZodOptional<z.ZodNumber>;
471
- color: z.ZodString;
472
- width: z.ZodNumber;
473
- type: z.ZodLiteral<"ellipse">;
474
- x: z.ZodNumber;
475
- y: z.ZodNumber;
476
- w: z.ZodNumber;
477
- h: z.ZodNumber;
478
- }, "strip", z.ZodTypeAny, {
479
- type: "ellipse";
480
- color: string;
481
- width: number;
482
- x: number;
483
- y: number;
484
- w: number;
485
- h: number;
486
- rotation?: number | undefined;
487
- }, {
488
- type: "ellipse";
489
- color: string;
490
- width: number;
491
- x: number;
492
- y: number;
493
- w: number;
494
- h: number;
495
- rotation?: number | undefined;
496
- }>, z.ZodObject<{
497
- rotation: z.ZodOptional<z.ZodNumber>;
498
- type: z.ZodLiteral<"text">;
499
- x: z.ZodNumber;
500
- y: z.ZodNumber;
501
- text: z.ZodString;
502
- color: z.ZodString;
503
- fontSize: z.ZodNumber;
504
- }, "strip", z.ZodTypeAny, {
505
- type: "text";
506
- color: string;
507
- x: number;
508
- y: number;
509
- text: string;
510
- fontSize: number;
511
- rotation?: number | undefined;
512
- }, {
513
- type: "text";
514
- color: string;
515
- x: number;
516
- y: number;
517
- text: string;
518
- fontSize: number;
519
- rotation?: number | undefined;
520
- }>, z.ZodObject<{
521
- rotation: z.ZodOptional<z.ZodNumber>;
522
- type: z.ZodLiteral<"sticker">;
523
- x: z.ZodNumber;
524
- y: z.ZodNumber;
525
- w: z.ZodNumber;
526
- h: z.ZodNumber;
527
- emoji: z.ZodOptional<z.ZodString>;
528
- src: z.ZodOptional<z.ZodString>;
529
- }, "strip", z.ZodTypeAny, {
530
- type: "sticker";
531
- x: number;
532
- y: number;
533
- w: number;
534
- h: number;
535
- rotation?: number | undefined;
536
- emoji?: string | undefined;
537
- src?: string | undefined;
538
- }, {
539
- type: "sticker";
540
- x: number;
541
- y: number;
542
- w: number;
543
- h: number;
544
- rotation?: number | undefined;
545
- emoji?: string | undefined;
546
- src?: string | undefined;
547
- }>]>, "many">>;
548
- /** 原视频声音开关(与音乐混音共存) */
549
- keepAudio: z.ZodDefault<z.ZodBoolean>;
550
- /** 封面时刻 = 输出时间轴 */
551
- poster: z.ZodOptional<z.ZodObject<{
552
- time: z.ZodNumber;
553
- }, "strip", z.ZodTypeAny, {
554
- time: number;
555
- }, {
556
- time: number;
557
- }>>;
558
- }, "strip", z.ZodTypeAny, {
559
- rotation: number;
560
- clips: {
561
- srcIdx: number;
562
- in: number;
563
- out: number;
564
- }[];
565
- audioClips: {
566
- srcIdx: number;
567
- in: number;
568
- out: number;
569
- startAt: number;
570
- volume: number;
571
- }[];
572
- canvas: {
573
- w: number;
574
- h: number;
575
- };
576
- flipX: boolean;
577
- flipY: boolean;
578
- filters: {
579
- brightness: number;
580
- contrast: number;
581
- saturation: number;
582
- temperature: number;
583
- tint: number;
584
- vibrance: number;
585
- gamma: number;
586
- highlights: number;
587
- shadows: number;
588
- whites: number;
589
- blacks: number;
590
- lightSense: number;
591
- sharpen: number;
592
- clarity: number;
593
- grain: number;
594
- fade: number;
595
- vignette: number;
596
- };
597
- keepAudio: boolean;
598
- crop?: {
599
- width: number;
600
- x: number;
601
- y: number;
602
- height: number;
603
- } | undefined;
604
- scale?: {
605
- width: number;
606
- height: number;
607
- fit: "contain" | "cover" | "force";
608
- } | undefined;
609
- filterPreset?: string | undefined;
610
- overlays?: ({
611
- type: "pen";
612
- points: number[];
613
- color: string;
614
- width: number;
615
- rotation?: number | undefined;
616
- } | {
617
- type: "line";
618
- color: string;
619
- width: number;
620
- x1: number;
621
- y1: number;
622
- x2: number;
623
- y2: number;
624
- rotation?: number | undefined;
625
- } | {
626
- type: "arrow";
627
- color: string;
628
- width: number;
629
- x1: number;
630
- y1: number;
631
- x2: number;
632
- y2: number;
633
- rotation?: number | undefined;
634
- } | {
635
- type: "rect";
636
- color: string;
637
- width: number;
638
- x: number;
639
- y: number;
640
- w: number;
641
- h: number;
642
- rotation?: number | undefined;
643
- } | {
644
- type: "ellipse";
645
- color: string;
646
- width: number;
647
- x: number;
648
- y: number;
649
- w: number;
650
- h: number;
651
- rotation?: number | undefined;
652
- } | {
653
- type: "text";
654
- color: string;
655
- x: number;
656
- y: number;
657
- text: string;
658
- fontSize: number;
659
- rotation?: number | undefined;
660
- } | {
661
- type: "sticker";
662
- x: number;
663
- y: number;
664
- w: number;
665
- h: number;
666
- rotation?: number | undefined;
667
- emoji?: string | undefined;
668
- src?: string | undefined;
669
- })[] | undefined;
670
- poster?: {
671
- time: number;
672
- } | undefined;
673
- }, {
674
- clips: {
675
- srcIdx: number;
676
- in: number;
677
- out: number;
678
- }[];
679
- canvas: {
680
- w: number;
681
- h: number;
682
- };
683
- rotation?: number | undefined;
684
- audioClips?: {
685
- srcIdx: number;
686
- in: number;
687
- out: number;
688
- startAt: number;
689
- volume: number;
690
- }[] | undefined;
691
- crop?: {
692
- width: number;
693
- x: number;
694
- y: number;
695
- height: number;
696
- } | undefined;
697
- scale?: {
698
- width: number;
699
- height: number;
700
- fit: "contain" | "cover" | "force";
701
- } | undefined;
702
- flipX?: boolean | undefined;
703
- flipY?: boolean | undefined;
704
- filters?: {
705
- brightness: number;
706
- contrast: number;
707
- saturation: number;
708
- temperature?: number | undefined;
709
- tint?: number | undefined;
710
- vibrance?: number | undefined;
711
- gamma?: number | undefined;
712
- highlights?: number | undefined;
713
- shadows?: number | undefined;
714
- whites?: number | undefined;
715
- blacks?: number | undefined;
716
- lightSense?: number | undefined;
717
- sharpen?: number | undefined;
718
- clarity?: number | undefined;
719
- grain?: number | undefined;
720
- fade?: number | undefined;
721
- vignette?: number | undefined;
722
- } | undefined;
723
- filterPreset?: string | undefined;
724
- overlays?: ({
725
- type: "pen";
726
- points: number[];
727
- color: string;
728
- width: number;
729
- rotation?: number | undefined;
730
- } | {
731
- type: "line";
732
- color: string;
733
- width: number;
734
- x1: number;
735
- y1: number;
736
- x2: number;
737
- y2: number;
738
- rotation?: number | undefined;
739
- } | {
740
- type: "arrow";
741
- color: string;
742
- width: number;
743
- x1: number;
744
- y1: number;
745
- x2: number;
746
- y2: number;
747
- rotation?: number | undefined;
748
- } | {
749
- type: "rect";
750
- color: string;
751
- width: number;
752
- x: number;
753
- y: number;
754
- w: number;
755
- h: number;
756
- rotation?: number | undefined;
757
- } | {
758
- type: "ellipse";
759
- color: string;
760
- width: number;
761
- x: number;
762
- y: number;
763
- w: number;
764
- h: number;
765
- rotation?: number | undefined;
766
- } | {
767
- type: "text";
768
- color: string;
769
- x: number;
770
- y: number;
771
- text: string;
772
- fontSize: number;
773
- rotation?: number | undefined;
774
- } | {
775
- type: "sticker";
776
- x: number;
777
- y: number;
778
- w: number;
779
- h: number;
780
- rotation?: number | undefined;
781
- emoji?: string | undefined;
782
- src?: string | undefined;
783
- })[] | undefined;
784
- keepAudio?: boolean | undefined;
785
- poster?: {
786
- time: number;
787
- } | undefined;
788
- }>, {
789
- rotation: number;
790
- clips: {
791
- srcIdx: number;
792
- in: number;
793
- out: number;
794
- }[];
795
- audioClips: {
796
- srcIdx: number;
797
- in: number;
798
- out: number;
799
- startAt: number;
800
- volume: number;
801
- }[];
802
- canvas: {
803
- w: number;
804
- h: number;
805
- };
806
- flipX: boolean;
807
- flipY: boolean;
808
- filters: {
809
- brightness: number;
810
- contrast: number;
811
- saturation: number;
812
- temperature: number;
813
- tint: number;
814
- vibrance: number;
815
- gamma: number;
816
- highlights: number;
817
- shadows: number;
818
- whites: number;
819
- blacks: number;
820
- lightSense: number;
821
- sharpen: number;
822
- clarity: number;
823
- grain: number;
824
- fade: number;
825
- vignette: number;
826
- };
827
- keepAudio: boolean;
828
- crop?: {
829
- width: number;
830
- x: number;
831
- y: number;
832
- height: number;
833
- } | undefined;
834
- scale?: {
835
- width: number;
836
- height: number;
837
- fit: "contain" | "cover" | "force";
838
- } | undefined;
839
- filterPreset?: string | undefined;
840
- overlays?: ({
841
- type: "pen";
842
- points: number[];
843
- color: string;
844
- width: number;
845
- rotation?: number | undefined;
846
- } | {
847
- type: "line";
848
- color: string;
849
- width: number;
850
- x1: number;
851
- y1: number;
852
- x2: number;
853
- y2: number;
854
- rotation?: number | undefined;
855
- } | {
856
- type: "arrow";
857
- color: string;
858
- width: number;
859
- x1: number;
860
- y1: number;
861
- x2: number;
862
- y2: number;
863
- rotation?: number | undefined;
864
- } | {
865
- type: "rect";
866
- color: string;
867
- width: number;
868
- x: number;
869
- y: number;
870
- w: number;
871
- h: number;
872
- rotation?: number | undefined;
873
- } | {
874
- type: "ellipse";
875
- color: string;
876
- width: number;
877
- x: number;
878
- y: number;
879
- w: number;
880
- h: number;
881
- rotation?: number | undefined;
882
- } | {
883
- type: "text";
884
- color: string;
885
- x: number;
886
- y: number;
887
- text: string;
888
- fontSize: number;
889
- rotation?: number | undefined;
890
- } | {
891
- type: "sticker";
892
- x: number;
893
- y: number;
894
- w: number;
895
- h: number;
896
- rotation?: number | undefined;
897
- emoji?: string | undefined;
898
- src?: string | undefined;
899
- })[] | undefined;
900
- poster?: {
901
- time: number;
902
- } | undefined;
903
- }, {
904
- clips: {
905
- srcIdx: number;
906
- in: number;
907
- out: number;
908
- }[];
909
- canvas: {
910
- w: number;
911
- h: number;
912
- };
913
- rotation?: number | undefined;
914
- audioClips?: {
915
- srcIdx: number;
916
- in: number;
917
- out: number;
918
- startAt: number;
919
- volume: number;
920
- }[] | undefined;
921
- crop?: {
922
- width: number;
923
- x: number;
924
- y: number;
925
- height: number;
926
- } | undefined;
927
- scale?: {
928
- width: number;
929
- height: number;
930
- fit: "contain" | "cover" | "force";
931
- } | undefined;
932
- flipX?: boolean | undefined;
933
- flipY?: boolean | undefined;
934
- filters?: {
935
- brightness: number;
936
- contrast: number;
937
- saturation: number;
938
- temperature?: number | undefined;
939
- tint?: number | undefined;
940
- vibrance?: number | undefined;
941
- gamma?: number | undefined;
942
- highlights?: number | undefined;
943
- shadows?: number | undefined;
944
- whites?: number | undefined;
945
- blacks?: number | undefined;
946
- lightSense?: number | undefined;
947
- sharpen?: number | undefined;
948
- clarity?: number | undefined;
949
- grain?: number | undefined;
950
- fade?: number | undefined;
951
- vignette?: number | undefined;
952
- } | undefined;
953
- filterPreset?: string | undefined;
954
- overlays?: ({
955
- type: "pen";
956
- points: number[];
957
- color: string;
958
- width: number;
959
- rotation?: number | undefined;
960
- } | {
961
- type: "line";
962
- color: string;
963
- width: number;
964
- x1: number;
965
- y1: number;
966
- x2: number;
967
- y2: number;
968
- rotation?: number | undefined;
969
- } | {
970
- type: "arrow";
971
- color: string;
972
- width: number;
973
- x1: number;
974
- y1: number;
975
- x2: number;
976
- y2: number;
977
- rotation?: number | undefined;
978
- } | {
979
- type: "rect";
980
- color: string;
981
- width: number;
982
- x: number;
983
- y: number;
984
- w: number;
985
- h: number;
986
- rotation?: number | undefined;
987
- } | {
988
- type: "ellipse";
989
- color: string;
990
- width: number;
991
- x: number;
992
- y: number;
993
- w: number;
994
- h: number;
995
- rotation?: number | undefined;
996
- } | {
997
- type: "text";
998
- color: string;
999
- x: number;
1000
- y: number;
1001
- text: string;
1002
- fontSize: number;
1003
- rotation?: number | undefined;
1004
- } | {
1005
- type: "sticker";
1006
- x: number;
1007
- y: number;
1008
- w: number;
1009
- h: number;
1010
- rotation?: number | undefined;
1011
- emoji?: string | undefined;
1012
- src?: string | undefined;
1013
- })[] | undefined;
1014
- keepAudio?: boolean | undefined;
1015
- poster?: {
1016
- time: number;
1017
- } | undefined;
1018
- }>;
1019
- type VideoEditStateT = z.infer<typeof VideoEditState>;
1020
- /**
1021
- * 客户端初始占位:首个素材 metadata 加载前 clips 为空、canvas 为最小值,
1022
- * **不过 schema**(clips min1)——服务端只收显式提交的完整状态,不受影响;
1023
- * 首源加载完成后编辑器会用真实 clips/canvas 重建 history。
1024
- */
1025
- declare function defaultVideoEditState(): VideoEditStateT;
1026
-
1027
- export { type AudioClipT as A, type ClipT as C, type OverlayT as O, type VideoEditStateT as V, AudioClip as a, Clip as b, Overlay as c, VideoEditState as d, defaultVideoEditState as e };