@gannochenko/staticstripes 0.0.22 → 0.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.
Files changed (56) hide show
  1. package/Makefile +8 -0
  2. package/dist/app-builder.d.ts +18 -0
  3. package/dist/app-builder.d.ts.map +1 -0
  4. package/dist/app-builder.js +94 -0
  5. package/dist/app-builder.js.map +1 -0
  6. package/dist/cli/commands/filters.d.ts +3 -0
  7. package/dist/cli/commands/filters.d.ts.map +1 -0
  8. package/dist/cli/commands/filters.js +21 -0
  9. package/dist/cli/commands/filters.js.map +1 -0
  10. package/dist/cli/commands/generate.d.ts.map +1 -1
  11. package/dist/cli/commands/generate.js +6 -1
  12. package/dist/cli/commands/generate.js.map +1 -1
  13. package/dist/cli/instagram/instagram-upload-strategy.d.ts +5 -0
  14. package/dist/cli/instagram/instagram-upload-strategy.d.ts.map +1 -1
  15. package/dist/cli/instagram/instagram-upload-strategy.js +46 -3
  16. package/dist/cli/instagram/instagram-upload-strategy.js.map +1 -1
  17. package/dist/cli.js +2 -0
  18. package/dist/cli.js.map +1 -1
  19. package/dist/ffmpeg.d.ts +32 -0
  20. package/dist/ffmpeg.d.ts.map +1 -1
  21. package/dist/ffmpeg.js +118 -0
  22. package/dist/ffmpeg.js.map +1 -1
  23. package/dist/html-project-parser.d.ts +36 -1
  24. package/dist/html-project-parser.d.ts.map +1 -1
  25. package/dist/html-project-parser.js +332 -15
  26. package/dist/html-project-parser.js.map +1 -1
  27. package/dist/project.d.ts +4 -1
  28. package/dist/project.d.ts.map +1 -1
  29. package/dist/project.js +50 -1
  30. package/dist/project.js.map +1 -1
  31. package/dist/sample-sequences.d.ts.map +1 -1
  32. package/dist/sample-sequences.js +293 -0
  33. package/dist/sample-sequences.js.map +1 -1
  34. package/dist/sequence.d.ts +4 -1
  35. package/dist/sequence.d.ts.map +1 -1
  36. package/dist/sequence.js +71 -21
  37. package/dist/sequence.js.map +1 -1
  38. package/dist/stream.d.ts +17 -0
  39. package/dist/stream.d.ts.map +1 -1
  40. package/dist/stream.js +28 -0
  41. package/dist/stream.js.map +1 -1
  42. package/dist/type.d.ts +29 -2
  43. package/dist/type.d.ts.map +1 -1
  44. package/package.json +1 -1
  45. package/src/app-builder.ts +113 -0
  46. package/src/cli/commands/filters.ts +21 -0
  47. package/src/cli/commands/generate.ts +10 -1
  48. package/src/cli/instagram/instagram-upload-strategy.ts +61 -1
  49. package/src/cli.ts +2 -0
  50. package/src/ffmpeg.ts +161 -0
  51. package/src/html-project-parser.ts +410 -28
  52. package/src/project.ts +62 -0
  53. package/src/sample-sequences.ts +300 -0
  54. package/src/sequence.ts +78 -22
  55. package/src/stream.ts +50 -0
  56. package/src/type.ts +31 -2
@@ -28,8 +28,19 @@ const getSampleSequences = (project, buf, expressionContext, outputName) => {
28
28
  objectFitContainAmbientBrightness: -0.1,
29
29
  objectFitContainAmbientSaturation: 0.7,
30
30
  objectFitContainPillarboxColor: '#000000',
31
+ objectFitKenBurns: 'zoom-in',
32
+ objectFitKenBurnsZoom: 30,
33
+ objectFitKenBurnsEffectDuration: 0,
34
+ objectFitKenBurnsEasing: 'linear',
35
+ objectFitKenBurnsFocalX: 50,
36
+ objectFitKenBurnsFocalY: 50,
37
+ objectFitKenBurnsPanStartX: 0,
38
+ objectFitKenBurnsPanStartY: 0,
39
+ objectFitKenBurnsPanEndX: 100,
40
+ objectFitKenBurnsPanEndY: 100,
31
41
  chromakey: false,
32
42
  chromakeyBlend: 0.1,
43
+ sound: 'on',
33
44
  chromakeySimilarity: 0.1,
34
45
  chromakeyColor: '#000000',
35
46
  },
@@ -51,8 +62,19 @@ const getSampleSequences = (project, buf, expressionContext, outputName) => {
51
62
  objectFitContainAmbientBrightness: -0.1,
52
63
  objectFitContainAmbientSaturation: 0.7,
53
64
  objectFitContainPillarboxColor: '#000000',
65
+ objectFitKenBurns: 'zoom-in',
66
+ objectFitKenBurnsZoom: 30,
67
+ objectFitKenBurnsEffectDuration: 0,
68
+ objectFitKenBurnsEasing: 'linear',
69
+ objectFitKenBurnsFocalX: 50,
70
+ objectFitKenBurnsFocalY: 50,
71
+ objectFitKenBurnsPanStartX: 0,
72
+ objectFitKenBurnsPanStartY: 0,
73
+ objectFitKenBurnsPanEndX: 100,
74
+ objectFitKenBurnsPanEndY: 100,
54
75
  chromakey: false,
55
76
  chromakeyBlend: 0.1,
77
+ sound: 'on',
56
78
  chromakeySimilarity: 0.1,
57
79
  chromakeyColor: '#000000',
58
80
  },
@@ -74,10 +96,21 @@ const getSampleSequences = (project, buf, expressionContext, outputName) => {
74
96
  objectFitContainAmbientBrightness: -0.1,
75
97
  objectFitContainAmbientSaturation: 0.7,
76
98
  objectFitContainPillarboxColor: '#000000',
99
+ objectFitKenBurns: 'zoom-in',
100
+ objectFitKenBurnsZoom: 30,
101
+ objectFitKenBurnsEffectDuration: 0,
102
+ objectFitKenBurnsEasing: 'linear',
103
+ objectFitKenBurnsFocalX: 50,
104
+ objectFitKenBurnsFocalY: 50,
105
+ objectFitKenBurnsPanStartX: 0,
106
+ objectFitKenBurnsPanStartY: 0,
107
+ objectFitKenBurnsPanEndX: 100,
108
+ objectFitKenBurnsPanEndY: 100,
77
109
  chromakey: true,
78
110
  chromakeyBlend: 0.1,
79
111
  chromakeySimilarity: 0.1,
80
112
  chromakeyColor: '#000000',
113
+ sound: 'on',
81
114
  },
82
115
  {
83
116
  id: 'f_04',
@@ -97,8 +130,19 @@ const getSampleSequences = (project, buf, expressionContext, outputName) => {
97
130
  objectFitContainAmbientBrightness: -0.1,
98
131
  objectFitContainAmbientSaturation: 0.7,
99
132
  objectFitContainPillarboxColor: '#000000',
133
+ objectFitKenBurns: 'zoom-in',
134
+ objectFitKenBurnsZoom: 30,
135
+ objectFitKenBurnsEffectDuration: 0,
136
+ objectFitKenBurnsEasing: 'linear',
137
+ objectFitKenBurnsFocalX: 50,
138
+ objectFitKenBurnsFocalY: 50,
139
+ objectFitKenBurnsPanStartX: 0,
140
+ objectFitKenBurnsPanStartY: 0,
141
+ objectFitKenBurnsPanEndX: 100,
142
+ objectFitKenBurnsPanEndY: 100,
100
143
  chromakey: false,
101
144
  chromakeyBlend: 0.1,
145
+ sound: 'on',
102
146
  chromakeySimilarity: 0.1,
103
147
  chromakeyColor: '#000000',
104
148
  },
@@ -120,8 +164,19 @@ const getSampleSequences = (project, buf, expressionContext, outputName) => {
120
164
  objectFitContainAmbientBrightness: -0.1,
121
165
  objectFitContainAmbientSaturation: 0.7,
122
166
  objectFitContainPillarboxColor: '#000000',
167
+ objectFitKenBurns: 'zoom-in',
168
+ objectFitKenBurnsZoom: 30,
169
+ objectFitKenBurnsEffectDuration: 0,
170
+ objectFitKenBurnsEasing: 'linear',
171
+ objectFitKenBurnsFocalX: 50,
172
+ objectFitKenBurnsFocalY: 50,
173
+ objectFitKenBurnsPanStartX: 0,
174
+ objectFitKenBurnsPanStartY: 0,
175
+ objectFitKenBurnsPanEndX: 100,
176
+ objectFitKenBurnsPanEndY: 100,
123
177
  chromakey: false,
124
178
  chromakeyBlend: 0.1,
179
+ sound: 'on',
125
180
  chromakeySimilarity: 0.1,
126
181
  chromakeyColor: '#000000',
127
182
  },
@@ -148,8 +203,19 @@ const getSampleSequences = (project, buf, expressionContext, outputName) => {
148
203
  objectFitContainAmbientBrightness: -0.1,
149
204
  objectFitContainAmbientSaturation: 0.7,
150
205
  objectFitContainPillarboxColor: '#000000',
206
+ objectFitKenBurns: 'zoom-in',
207
+ objectFitKenBurnsZoom: 30,
208
+ objectFitKenBurnsEffectDuration: 0,
209
+ objectFitKenBurnsEasing: 'linear',
210
+ objectFitKenBurnsFocalX: 50,
211
+ objectFitKenBurnsFocalY: 50,
212
+ objectFitKenBurnsPanStartX: 0,
213
+ objectFitKenBurnsPanStartY: 0,
214
+ objectFitKenBurnsPanEndX: 100,
215
+ objectFitKenBurnsPanEndY: 100,
151
216
  chromakey: false,
152
217
  chromakeyBlend: 0.1,
218
+ sound: 'on',
153
219
  chromakeySimilarity: 0.1,
154
220
  chromakeyColor: '#000000',
155
221
  },
@@ -176,14 +242,241 @@ const getSampleSequences = (project, buf, expressionContext, outputName) => {
176
242
  objectFitContainAmbientBrightness: -0.1,
177
243
  objectFitContainAmbientSaturation: 0.7,
178
244
  objectFitContainPillarboxColor: '#000000',
245
+ objectFitKenBurns: 'zoom-in',
246
+ objectFitKenBurnsZoom: 30,
247
+ objectFitKenBurnsEffectDuration: 0,
248
+ objectFitKenBurnsEasing: 'linear',
249
+ objectFitKenBurnsFocalX: 50,
250
+ objectFitKenBurnsFocalY: 50,
251
+ objectFitKenBurnsPanStartX: 0,
252
+ objectFitKenBurnsPanStartY: 0,
253
+ objectFitKenBurnsPanEndX: 100,
254
+ objectFitKenBurnsPanEndY: 100,
179
255
  chromakey: false,
180
256
  chromakeyBlend: 0.1,
257
+ sound: 'on',
181
258
  chromakeySimilarity: 0.1,
182
259
  chromakeyColor: '#000000',
183
260
  },
184
261
  ],
185
262
  }, output, project.getAssetManager(), expressionContext);
186
263
  seq3.build();
264
+ // Ken Burns effect test sequence - using intro_image for all effect types
265
+ const seq4 = new sequence_1.Sequence(buf, {
266
+ fragments: [
267
+ // zoom-in effect with custom focal point
268
+ {
269
+ id: 'kb_zoom_in',
270
+ enabled: true,
271
+ assetName: 'intro_image',
272
+ duration: 3000,
273
+ trimLeft: 0,
274
+ overlayLeft: 0,
275
+ overlayZIndex: 1,
276
+ transitionIn: '',
277
+ transitionInDuration: 0,
278
+ transitionOut: '',
279
+ transitionOutDuration: 0,
280
+ objectFit: 'ken-burns',
281
+ objectFitContain: 'ambient',
282
+ objectFitContainAmbientBlurStrength: 25,
283
+ objectFitContainAmbientBrightness: -0.1,
284
+ objectFitContainAmbientSaturation: 0.7,
285
+ objectFitContainPillarboxColor: '#000000',
286
+ objectFitKenBurns: 'zoom-in',
287
+ objectFitKenBurnsZoom: 50,
288
+ objectFitKenBurnsEffectDuration: 1000,
289
+ objectFitKenBurnsEasing: 'ease-in-out',
290
+ objectFitKenBurnsFocalX: 30,
291
+ objectFitKenBurnsFocalY: 40,
292
+ objectFitKenBurnsPanStartX: 0,
293
+ objectFitKenBurnsPanStartY: 0,
294
+ objectFitKenBurnsPanEndX: 100,
295
+ objectFitKenBurnsPanEndY: 100,
296
+ chromakey: false,
297
+ chromakeyBlend: 0.1,
298
+ sound: 'on',
299
+ chromakeySimilarity: 0.1,
300
+ chromakeyColor: '#000000',
301
+ },
302
+ // zoom-out effect with center focal point
303
+ {
304
+ id: 'kb_zoom_out',
305
+ enabled: true,
306
+ assetName: 'intro_image',
307
+ duration: 3000,
308
+ trimLeft: 0,
309
+ overlayLeft: 0,
310
+ overlayZIndex: 1,
311
+ transitionIn: '',
312
+ transitionInDuration: 0,
313
+ transitionOut: '',
314
+ transitionOutDuration: 0,
315
+ objectFit: 'ken-burns',
316
+ objectFitContain: 'ambient',
317
+ objectFitContainAmbientBlurStrength: 25,
318
+ objectFitContainAmbientBrightness: -0.1,
319
+ objectFitContainAmbientSaturation: 0.7,
320
+ objectFitContainPillarboxColor: '#000000',
321
+ objectFitKenBurns: 'zoom-out',
322
+ objectFitKenBurnsZoom: 40,
323
+ objectFitKenBurnsEffectDuration: 2000,
324
+ objectFitKenBurnsEasing: 'ease-in',
325
+ objectFitKenBurnsFocalX: 50,
326
+ objectFitKenBurnsFocalY: 50,
327
+ objectFitKenBurnsPanStartX: 0,
328
+ objectFitKenBurnsPanStartY: 0,
329
+ objectFitKenBurnsPanEndX: 100,
330
+ objectFitKenBurnsPanEndY: 100,
331
+ chromakey: false,
332
+ chromakeyBlend: 0.1,
333
+ sound: 'on',
334
+ chromakeySimilarity: 0.1,
335
+ chromakeyColor: '#000000',
336
+ },
337
+ // pan-left effect
338
+ {
339
+ id: 'kb_pan_left',
340
+ enabled: true,
341
+ assetName: 'intro_image',
342
+ duration: 3000,
343
+ trimLeft: 0,
344
+ overlayLeft: 0,
345
+ overlayZIndex: 1,
346
+ transitionIn: '',
347
+ transitionInDuration: 0,
348
+ transitionOut: '',
349
+ transitionOutDuration: 0,
350
+ objectFit: 'ken-burns',
351
+ objectFitContain: 'ambient',
352
+ objectFitContainAmbientBlurStrength: 25,
353
+ objectFitContainAmbientBrightness: -0.1,
354
+ objectFitContainAmbientSaturation: 0.7,
355
+ objectFitContainPillarboxColor: '#000000',
356
+ objectFitKenBurns: 'pan-left',
357
+ objectFitKenBurnsZoom: 30,
358
+ objectFitKenBurnsEffectDuration: 1500,
359
+ objectFitKenBurnsEasing: 'linear',
360
+ objectFitKenBurnsFocalX: 50,
361
+ objectFitKenBurnsFocalY: 50,
362
+ objectFitKenBurnsPanStartX: 0,
363
+ objectFitKenBurnsPanStartY: 0,
364
+ objectFitKenBurnsPanEndX: 100,
365
+ objectFitKenBurnsPanEndY: 100,
366
+ chromakey: false,
367
+ chromakeyBlend: 0.1,
368
+ sound: 'on',
369
+ chromakeySimilarity: 0.1,
370
+ chromakeyColor: '#000000',
371
+ },
372
+ // pan-right effect
373
+ {
374
+ id: 'kb_pan_right',
375
+ enabled: true,
376
+ assetName: 'intro_image',
377
+ duration: 3000,
378
+ trimLeft: 0,
379
+ overlayLeft: 0,
380
+ overlayZIndex: 1,
381
+ transitionIn: '',
382
+ transitionInDuration: 0,
383
+ transitionOut: '',
384
+ transitionOutDuration: 0,
385
+ objectFit: 'ken-burns',
386
+ objectFitContain: 'ambient',
387
+ objectFitContainAmbientBlurStrength: 25,
388
+ objectFitContainAmbientBrightness: -0.1,
389
+ objectFitContainAmbientSaturation: 0.7,
390
+ objectFitContainPillarboxColor: '#000000',
391
+ objectFitKenBurns: 'pan-right',
392
+ objectFitKenBurnsZoom: 50,
393
+ objectFitKenBurnsEffectDuration: 1500,
394
+ objectFitKenBurnsEasing: 'ease-out',
395
+ objectFitKenBurnsFocalX: 50,
396
+ objectFitKenBurnsFocalY: 50,
397
+ objectFitKenBurnsPanStartX: 0,
398
+ objectFitKenBurnsPanStartY: 0,
399
+ objectFitKenBurnsPanEndX: 100,
400
+ objectFitKenBurnsPanEndY: 100,
401
+ chromakey: false,
402
+ chromakeyBlend: 0.1,
403
+ sound: 'on',
404
+ chromakeySimilarity: 0.1,
405
+ chromakeyColor: '#000000',
406
+ },
407
+ // pan-top effect
408
+ {
409
+ id: 'kb_pan_top',
410
+ enabled: true,
411
+ assetName: 'intro_image',
412
+ duration: 3000,
413
+ trimLeft: 0,
414
+ overlayLeft: 0,
415
+ overlayZIndex: 1,
416
+ transitionIn: '',
417
+ transitionInDuration: 0,
418
+ transitionOut: '',
419
+ transitionOutDuration: 0,
420
+ objectFit: 'ken-burns',
421
+ objectFitContain: 'ambient',
422
+ objectFitContainAmbientBlurStrength: 25,
423
+ objectFitContainAmbientBrightness: -0.1,
424
+ objectFitContainAmbientSaturation: 0.7,
425
+ objectFitContainPillarboxColor: '#000000',
426
+ objectFitKenBurns: 'pan-top',
427
+ objectFitKenBurnsZoom: 30,
428
+ objectFitKenBurnsEffectDuration: 1500,
429
+ objectFitKenBurnsEasing: 'ease-in',
430
+ objectFitKenBurnsFocalX: 50,
431
+ objectFitKenBurnsFocalY: 50,
432
+ objectFitKenBurnsPanStartX: 0,
433
+ objectFitKenBurnsPanStartY: 0,
434
+ objectFitKenBurnsPanEndX: 100,
435
+ objectFitKenBurnsPanEndY: 100,
436
+ chromakey: false,
437
+ chromakeyBlend: 0.1,
438
+ sound: 'on',
439
+ chromakeySimilarity: 0.1,
440
+ chromakeyColor: '#000000',
441
+ },
442
+ // pan-bottom effect
443
+ {
444
+ id: 'kb_pan_bottom',
445
+ enabled: true,
446
+ assetName: 'intro_image',
447
+ duration: 3000,
448
+ trimLeft: 0,
449
+ overlayLeft: 0,
450
+ overlayZIndex: 1,
451
+ transitionIn: '',
452
+ transitionInDuration: 0,
453
+ transitionOut: '',
454
+ transitionOutDuration: 0,
455
+ objectFit: 'ken-burns',
456
+ objectFitContain: 'ambient',
457
+ objectFitContainAmbientBlurStrength: 25,
458
+ objectFitContainAmbientBrightness: -0.1,
459
+ objectFitContainAmbientSaturation: 0.7,
460
+ objectFitContainPillarboxColor: '#000000',
461
+ objectFitKenBurns: 'pan-bottom',
462
+ objectFitKenBurnsZoom: 40,
463
+ objectFitKenBurnsEffectDuration: 1500,
464
+ objectFitKenBurnsEasing: 'ease-in-out',
465
+ objectFitKenBurnsFocalX: 50,
466
+ objectFitKenBurnsFocalY: 50,
467
+ objectFitKenBurnsPanStartX: 0,
468
+ objectFitKenBurnsPanStartY: 0,
469
+ objectFitKenBurnsPanEndX: 100,
470
+ objectFitKenBurnsPanEndY: 100,
471
+ chromakey: false,
472
+ chromakeyBlend: 0.1,
473
+ sound: 'on',
474
+ chromakeySimilarity: 0.1,
475
+ chromakeyColor: '#000000',
476
+ },
477
+ ],
478
+ }, output, project.getAssetManager(), expressionContext);
479
+ seq4.build();
187
480
  seq1.overlayWith(seq2);
188
481
  seq1.overlayWith(seq3);
189
482
  seq1.getVideoStream().endTo({
@@ -1 +1 @@
1
- {"version":3,"file":"sample-sequences.js","sourceRoot":"","sources":["../src/sample-sequences.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sample-sequences.js","sourceRoot":"","sources":["../src/sample-sequences.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { AssetManager } from './asset-manager';
2
2
  import { ExpressionContext } from './expression-parser';
3
3
  import { FilterBuffer, Stream } from './stream';
4
- import { Output, SequenceDefinition } from './type';
4
+ import { Output, SequenceDefinition, FragmentDebugInfo } from './type';
5
5
  export declare class Sequence {
6
6
  private buf;
7
7
  private definition;
@@ -11,11 +11,14 @@ export declare class Sequence {
11
11
  private time;
12
12
  private videoStream;
13
13
  private audioStream;
14
+ private debugInfo;
14
15
  constructor(buf: FilterBuffer, definition: SequenceDefinition, output: Output, assetManager: AssetManager, expressionContext: ExpressionContext);
15
16
  build(): void;
16
17
  isEmpty(): boolean;
17
18
  overlayWith(sequence: Sequence): void;
18
19
  getVideoStream(): Stream;
19
20
  getAudioStream(): Stream;
21
+ getDebugInfo(): FragmentDebugInfo[];
22
+ getTotalDuration(): number;
20
23
  }
21
24
  //# sourceMappingURL=sequence.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sequence.d.ts","sourceRoot":"","sources":["../src/sequence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAEL,iBAAiB,EAElB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAEL,YAAY,EAMZ,MAAM,EAEP,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAEpD,qBAAa,QAAQ;IAOjB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,iBAAiB;IAV3B,OAAO,CAAC,IAAI,CAAa;IAEzB,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,WAAW,CAAU;gBAGnB,GAAG,EAAE,YAAY,EACjB,UAAU,EAAE,kBAAkB,EAC9B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,iBAAiB,EAAE,iBAAiB;IAG9C,KAAK;IAgRL,OAAO;IAWP,WAAW,CAAC,QAAQ,EAAE,QAAQ;IAKvB,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;CAGhC"}
1
+ {"version":3,"file":"sequence.d.ts","sourceRoot":"","sources":["../src/sequence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAEL,iBAAiB,EAElB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAEL,YAAY,EAMZ,MAAM,EAEP,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAEvE,qBAAa,QAAQ;IAQjB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,iBAAiB;IAX3B,OAAO,CAAC,IAAI,CAAa;IAEzB,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,SAAS,CAA2B;gBAGlC,GAAG,EAAE,YAAY,EACjB,UAAU,EAAE,kBAAkB,EAC9B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,iBAAiB,EAAE,iBAAiB;IAG9C,KAAK;IA+TL,OAAO;IAWP,WAAW,CAAC,QAAQ,EAAE,QAAQ;IAKvB,cAAc,IAAI,MAAM;IAIxB,cAAc,IAAI,MAAM;IAIxB,YAAY,IAAI,iBAAiB,EAAE;IAInC,gBAAgB,IAAI,MAAM;CAGlC"}
package/dist/sequence.js CHANGED
@@ -12,6 +12,7 @@ class Sequence {
12
12
  time = 0; // time is absolute
13
13
  videoStream;
14
14
  audioStream;
15
+ debugInfo = []; // Collect debug info during build
15
16
  constructor(buf, definition, output, assetManager, expressionContext) {
16
17
  this.buf = buf;
17
18
  this.definition = definition;
@@ -26,13 +27,14 @@ class Sequence {
26
27
  return;
27
28
  }
28
29
  const calculatedOverlayLeft = (0, expression_parser_1.calculateFinalValue)(fragment.overlayLeft, this.expressionContext);
30
+ const calculatedDuration = (0, expression_parser_1.calculateFinalValue)(fragment.duration, this.expressionContext);
29
31
  if (fragment.id === 'outro_message') {
30
32
  debugger;
31
33
  }
32
34
  const timeContext = {
33
35
  start: 0,
34
36
  end: 0,
35
- duration: fragment.duration,
37
+ duration: calculatedDuration,
36
38
  };
37
39
  const asset = this.assetManager.getAssetByName(fragment.assetName);
38
40
  if (!asset) {
@@ -45,31 +47,41 @@ class Sequence {
45
47
  }
46
48
  else {
47
49
  // Create blank transparent video stream for audio-only assets
48
- currentVideoStream = (0, stream_1.makeBlankStream)(fragment.duration, this.output.resolution.width, this.output.resolution.height, this.output.fps, this.buf);
50
+ currentVideoStream = (0, stream_1.makeBlankStream)(calculatedDuration, this.output.resolution.width, this.output.resolution.height, this.output.fps, this.buf);
49
51
  }
50
52
  // Create audio stream: use actual audio if available, otherwise create silent stream
53
+ // If fragment has -sound: off, always use silence
51
54
  let currentAudioStream;
52
- if (asset.hasAudio) {
55
+ if (fragment.sound === 'off') {
56
+ // Force silent audio when -sound: off
57
+ currentAudioStream = (0, stream_1.makeSilentStream)(calculatedDuration, this.buf);
58
+ }
59
+ else if (asset.hasAudio) {
53
60
  currentAudioStream = (0, stream_1.makeStream)(this.assetManager.getAudioInputLabelByAssetName(fragment.assetName), this.buf);
54
61
  }
55
62
  else {
56
63
  // Create silent audio stream matching the video duration
57
- currentAudioStream = (0, stream_1.makeSilentStream)(fragment.duration, this.buf);
64
+ currentAudioStream = (0, stream_1.makeSilentStream)(calculatedDuration, this.buf);
58
65
  }
59
66
  // duration and clipping adjustment
60
- if (fragment.trimLeft != 0 || fragment.duration < asset.duration) {
67
+ if (fragment.trimLeft != 0 || calculatedDuration < asset.duration) {
61
68
  // console.log('fragment.trimLeft=' + fragment.trimLeft);
62
- // console.log('fragment.duration=' + fragment.duration);
69
+ // console.log('fragment.duration=' + calculatedDuration);
63
70
  // console.log('asset.duration=' + asset.duration);
64
71
  // Only trim video if it came from an actual source
65
72
  if (asset.hasVideo) {
66
- currentVideoStream.trim(fragment.trimLeft, fragment.trimLeft + fragment.duration);
73
+ currentVideoStream.trim(fragment.trimLeft, fragment.trimLeft + calculatedDuration);
67
74
  }
68
- // Only trim audio if it came from an actual source
69
- if (asset.hasAudio) {
70
- currentAudioStream.trim(fragment.trimLeft, fragment.trimLeft + fragment.duration);
75
+ // Only trim audio if it came from an actual source AND sound is not off
76
+ if (asset.hasAudio && fragment.sound !== 'off') {
77
+ currentAudioStream.trim(fragment.trimLeft, fragment.trimLeft + calculatedDuration);
71
78
  }
72
79
  }
80
+ // Convert deprecated JPEG pixel format (yuvj420p) to standard yuv420p early
81
+ // This prevents swscaler warnings from appearing in all subsequent filters
82
+ if (asset.hasVideo && asset.type === 'image') {
83
+ currentVideoStream.convertPixelFormat('yuv420p');
84
+ }
73
85
  // Apply visual filter early for static images (before padding/cloning)
74
86
  // This is more efficient as ffmpeg processes the filter once, then clones the filtered frame
75
87
  if (asset.hasVideo &&
@@ -78,11 +90,13 @@ class Sequence {
78
90
  currentVideoStream.filter(fragment.visualFilter);
79
91
  }
80
92
  if (asset.duration === 0 &&
81
- fragment.duration > 0 &&
82
- asset.type === 'image') {
93
+ calculatedDuration > 0 &&
94
+ asset.type === 'image' &&
95
+ fragment.objectFit !== 'ken-burns') {
83
96
  // special case for images - extend static image to desired duration
97
+ // Skip tpad for Ken Burns - zoompan will generate the frames
84
98
  currentVideoStream.tPad({
85
- start: fragment.duration,
99
+ start: calculatedDuration,
86
100
  startMode: 'clone',
87
101
  });
88
102
  }
@@ -91,7 +105,26 @@ class Sequence {
91
105
  // fps reduction
92
106
  currentVideoStream.fps(this.output.fps);
93
107
  // fitting the video stream into the output frame
94
- if (fragment.objectFit === 'cover') {
108
+ if (fragment.objectFit === 'ken-burns') {
109
+ // Ken Burns effect (zoom/pan)
110
+ currentVideoStream.kenBurns({
111
+ effect: fragment.objectFitKenBurns,
112
+ zoom: fragment.objectFitKenBurnsZoom,
113
+ effectDuration: fragment.objectFitKenBurnsEffectDuration,
114
+ fragmentDuration: calculatedDuration,
115
+ easing: fragment.objectFitKenBurnsEasing,
116
+ width: this.output.resolution.width,
117
+ height: this.output.resolution.height,
118
+ fps: this.output.fps,
119
+ focalX: fragment.objectFitKenBurnsFocalX,
120
+ focalY: fragment.objectFitKenBurnsFocalY,
121
+ panStartX: fragment.objectFitKenBurnsPanStartX,
122
+ panStartY: fragment.objectFitKenBurnsPanStartY,
123
+ panEndX: fragment.objectFitKenBurnsPanEndX,
124
+ panEndY: fragment.objectFitKenBurnsPanEndY,
125
+ });
126
+ }
127
+ else if (fragment.objectFit === 'cover') {
95
128
  currentVideoStream.fitOutputCover(this.output.resolution);
96
129
  }
97
130
  else {
@@ -152,7 +185,7 @@ class Sequence {
152
185
  fades: [
153
186
  {
154
187
  type: 'out',
155
- startTime: fragment.duration - fragment.transitionOutDuration,
188
+ startTime: calculatedDuration - fragment.transitionOutDuration,
156
189
  duration: fragment.transitionOutDuration,
157
190
  },
158
191
  ],
@@ -161,7 +194,7 @@ class Sequence {
161
194
  fades: [
162
195
  {
163
196
  type: 'out',
164
- startTime: fragment.duration - fragment.transitionOutDuration,
197
+ startTime: calculatedDuration - fragment.transitionOutDuration,
165
198
  duration: fragment.transitionOutDuration,
166
199
  },
167
200
  ],
@@ -187,21 +220,21 @@ class Sequence {
187
220
  const otherStreamOffsetLeft = this.time + calculatedOverlayLeft;
188
221
  // console.log('this.time=' + this.time);
189
222
  // console.log('streamDuration=' + this.time);
190
- // console.log('otherStreamDuration=' + fragment.duration);
223
+ // console.log('otherStreamDuration=' + calculatedDuration);
191
224
  // console.log('otherStreamOffsetLeft=' + otherStreamOffsetLeft);
192
225
  // use overlay
193
226
  this.videoStream.overlayStream(currentVideoStream, {
194
227
  flipLayers: fragment.overlayZIndex < 0,
195
228
  offset: {
196
229
  streamDuration: this.time,
197
- otherStreamDuration: fragment.duration,
230
+ otherStreamDuration: calculatedDuration,
198
231
  otherStreamOffsetLeft: otherStreamOffsetLeft,
199
232
  },
200
233
  });
201
234
  this.audioStream.overlayStream(currentAudioStream, {
202
235
  offset: {
203
236
  streamDuration: this.time,
204
- otherStreamDuration: fragment.duration,
237
+ otherStreamDuration: calculatedDuration,
205
238
  otherStreamOffsetLeft: otherStreamOffsetLeft,
206
239
  },
207
240
  });
@@ -235,11 +268,22 @@ class Sequence {
235
268
  this.audioStream = currentAudioStream;
236
269
  }
237
270
  timeContext.start = this.time + calculatedOverlayLeft;
238
- timeContext.end = this.time + fragment.duration + calculatedOverlayLeft;
239
- this.time += fragment.duration + calculatedOverlayLeft;
271
+ timeContext.end = this.time + calculatedDuration + calculatedOverlayLeft;
272
+ this.time += calculatedDuration + calculatedOverlayLeft;
240
273
  this.expressionContext.fragments.set(fragment.id, {
241
274
  time: timeContext,
242
275
  });
276
+ // Collect debug info
277
+ this.debugInfo.push({
278
+ id: fragment.id,
279
+ assetName: fragment.assetName,
280
+ startTime: timeContext.start,
281
+ endTime: timeContext.end,
282
+ duration: calculatedDuration,
283
+ trimLeft: fragment.trimLeft,
284
+ overlayLeft: calculatedOverlayLeft,
285
+ enabled: fragment.enabled,
286
+ });
243
287
  // console.log('new time=' + this.time);
244
288
  firstOne = false;
245
289
  });
@@ -264,6 +308,12 @@ class Sequence {
264
308
  getAudioStream() {
265
309
  return this.audioStream;
266
310
  }
311
+ getDebugInfo() {
312
+ return this.debugInfo;
313
+ }
314
+ getTotalDuration() {
315
+ return this.time;
316
+ }
267
317
  }
268
318
  exports.Sequence = Sequence;
269
319
  //# sourceMappingURL=sequence.js.map