loopwind 0.20.4 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/README.md +9 -2
  2. package/_dsgn/templates/dashed-stroke-test/template.tsx +73 -0
  3. package/_dsgn/templates/path-follow-test/template.tsx +176 -0
  4. package/_dsgn/templates/path-simple-test/template.tsx +98 -0
  5. package/_dsgn/templates/stroke-dash-test/meta.json +12 -0
  6. package/_dsgn/templates/stroke-dash-test/template.tsx +53 -0
  7. package/dist/cli.js +5 -3
  8. package/dist/cli.js.map +1 -1
  9. package/dist/commands/render.d.ts +1 -0
  10. package/dist/commands/render.d.ts.map +1 -1
  11. package/dist/commands/render.js +1 -0
  12. package/dist/commands/render.js.map +1 -1
  13. package/dist/lib/encode-worker.d.ts +2 -0
  14. package/dist/lib/encode-worker.d.ts.map +1 -0
  15. package/dist/lib/encode-worker.js +29 -0
  16. package/dist/lib/encode-worker.js.map +1 -0
  17. package/dist/lib/mjpeg-muxer.d.ts +46 -0
  18. package/dist/lib/mjpeg-muxer.d.ts.map +1 -0
  19. package/dist/lib/mjpeg-muxer.js +513 -0
  20. package/dist/lib/mjpeg-muxer.js.map +1 -0
  21. package/dist/lib/path-helpers.d.ts +71 -0
  22. package/dist/lib/path-helpers.d.ts.map +1 -0
  23. package/dist/lib/path-helpers.js +118 -0
  24. package/dist/lib/path-helpers.js.map +1 -0
  25. package/dist/lib/renderer.d.ts.map +1 -1
  26. package/dist/lib/renderer.js +59 -4
  27. package/dist/lib/renderer.js.map +1 -1
  28. package/dist/lib/tailwind.d.ts.map +1 -1
  29. package/dist/lib/tailwind.js +71 -0
  30. package/dist/lib/tailwind.js.map +1 -1
  31. package/dist/lib/text-helpers.d.ts +52 -0
  32. package/dist/lib/text-helpers.d.ts.map +1 -0
  33. package/dist/lib/text-helpers.js +74 -0
  34. package/dist/lib/text-helpers.js.map +1 -0
  35. package/dist/lib/utils.d.ts +0 -4
  36. package/dist/lib/utils.d.ts.map +1 -1
  37. package/dist/lib/utils.js +33 -0
  38. package/dist/lib/utils.js.map +1 -1
  39. package/dist/lib/video-preview.d.ts.map +1 -1
  40. package/dist/lib/video-preview.js +28 -16
  41. package/dist/lib/video-preview.js.map +1 -1
  42. package/dist/lib/video-renderer.d.ts +19 -1
  43. package/dist/lib/video-renderer.d.ts.map +1 -1
  44. package/dist/lib/video-renderer.js +188 -65
  45. package/dist/lib/video-renderer.js.map +1 -1
  46. package/dist/types/template.d.ts +121 -0
  47. package/dist/types/template.d.ts.map +1 -1
  48. package/package.json +1 -1
  49. package/website/.astro/content.db +0 -0
  50. package/website/.astro/integrations/astro_db/db.d.ts +15 -0
  51. package/website/package-lock.json +1 -1
package/README.md CHANGED
@@ -1041,7 +1041,7 @@ export default function Template({ title, frame, progress, tw, qr, template }) {
1041
1041
  ### Rendering Videos
1042
1042
 
1043
1043
  ```bash
1044
- # Render to MP4 (default)
1044
+ # Render to MP4 (default - serverless-compatible WASM encoder)
1045
1045
  loopwind render my-video '{"title":"Animated Title"}' -o output.mp4
1046
1046
 
1047
1047
  # Render to GIF (great for emails, GitHub, Slack)
@@ -1050,6 +1050,9 @@ loopwind render my-video '{"title":"Animated Title"}' --format gif -o output.gif
1050
1050
  # With custom quality settings
1051
1051
  loopwind render my-video props.json --crf 18 # Higher quality (lower CRF = better quality)
1052
1052
 
1053
+ # Fast encoding with FFmpeg (2x faster, requires FFmpeg installed)
1054
+ loopwind render my-video props.json --ffmpeg
1055
+
1053
1056
  # Export frames only (for manual encoding)
1054
1057
  loopwind render my-video props.json --frames-only -o frames/
1055
1058
  ```
@@ -1060,9 +1063,13 @@ loopwind render my-video props.json --frames-only -o frames/
1060
1063
 
1061
1064
  **How it works:**
1062
1065
  1. **SVG Generation**: All frames generated in parallel (~0.8s for 90 frames)
1063
- 2. **WASM Encoding**: Frames encoded to H.264 MP4 using pure JavaScript (~1.2s for 90 frames)
1066
+ 2. **H.264 Encoding**: Frames encoded to MP4 (~1.2s for 90 frames with WASM)
1064
1067
  3. **Total**: 3-second video renders in ~2 seconds on M1 Mac
1065
1068
 
1069
+ **Encoding options:**
1070
+ - **Default (WASM)**: Pure JavaScript encoder, works everywhere including serverless
1071
+ - **FFmpeg (`--ffmpeg`)**: 2x faster encoding, smaller files, requires FFmpeg installed
1072
+
1066
1073
  **Props available in video templates:**
1067
1074
  - `frame` - Current frame number (0 to totalFrames-1)
1068
1075
  - `progress` - Animation progress from 0 to 1
@@ -0,0 +1,73 @@
1
+ export const meta = {
2
+ name: "dashed-stroke-test",
3
+ description: "Animated dashed stroke patterns",
4
+ type: "video",
5
+ size: {
6
+ width: 1920,
7
+ height: 1080
8
+ },
9
+ props: {},
10
+ video: {
11
+ duration: 4,
12
+ fps: 30
13
+ }
14
+ };
15
+
16
+ export default function DashedStrokeTest({ tw, progress, frame }) {
17
+ // Calculate animated dash offset for marching ants effect
18
+ // Loop every 1 second (30 frames)
19
+ const dashOffset = -(frame % 30) * 2;
20
+
21
+ return (
22
+ <div style={tw('flex items-center justify-center w-full h-full bg-gray-900')}>
23
+ <svg width="800" height="600" viewBox="0 0 800 600">
24
+ {/* Marching ants around a rectangle */}
25
+ <rect
26
+ x="100"
27
+ y="100"
28
+ width="600"
29
+ height="400"
30
+ fill="none"
31
+ stroke="#3b82f6"
32
+ strokeWidth={4}
33
+ strokeDasharray="10 5"
34
+ strokeDashoffset={dashOffset}
35
+ />
36
+
37
+ {/* Animated dashed circle */}
38
+ <circle
39
+ cx="400"
40
+ cy="300"
41
+ r="150"
42
+ fill="none"
43
+ stroke="#10b981"
44
+ strokeWidth={6}
45
+ strokeDasharray="20 10"
46
+ strokeDashoffset={dashOffset * 1.5}
47
+ />
48
+
49
+ {/* Wavy path with animated dashes */}
50
+ <path
51
+ d="M 50 300 Q 150 200 250 300 T 450 300 T 650 300 T 850 300"
52
+ fill="none"
53
+ stroke="#f59e0b"
54
+ strokeWidth={5}
55
+ strokeDasharray="15 8"
56
+ strokeDashoffset={dashOffset * 0.8}
57
+ />
58
+
59
+ {/* Small circle with fast animation */}
60
+ <circle
61
+ cx="400"
62
+ cy="300"
63
+ r="80"
64
+ fill="none"
65
+ stroke="#ec4899"
66
+ strokeWidth={3}
67
+ strokeDasharray="5 3"
68
+ strokeDashoffset={dashOffset * 2}
69
+ />
70
+ </svg>
71
+ </div>
72
+ );
73
+ }
@@ -0,0 +1,176 @@
1
+ import React from 'react';
2
+
3
+ export const meta = {
4
+ name: "path-follow-test",
5
+ description: "Animate elements along SVG paths with rotation",
6
+ type: "video",
7
+ size: {
8
+ width: 1920,
9
+ height: 1080
10
+ },
11
+ props: {},
12
+ video: {
13
+ duration: 4,
14
+ fps: 30
15
+ }
16
+ };
17
+
18
+ // Calculate position on quadratic Bezier curve
19
+ function pointOnQuadraticBezier(p0, p1, p2, t) {
20
+ const x = (1 - t) * (1 - t) * p0.x + 2 * (1 - t) * t * p1.x + t * t * p2.x;
21
+ const y = (1 - t) * (1 - t) * p0.y + 2 * (1 - t) * t * p1.y + t * t * p2.y;
22
+ return { x, y };
23
+ }
24
+
25
+ // Calculate angle on quadratic Bezier curve
26
+ function angleOnQuadraticBezier(p0, p1, p2, t) {
27
+ const dx = 2 * (1 - t) * (p1.x - p0.x) + 2 * t * (p2.x - p1.x);
28
+ const dy = 2 * (1 - t) * (p1.y - p0.y) + 2 * t * (p2.y - p1.y);
29
+ return Math.atan2(dy, dx) * (180 / Math.PI);
30
+ }
31
+
32
+ // Calculate position on cubic Bezier curve
33
+ function pointOnCubicBezier(p0, p1, p2, p3, t) {
34
+ const mt = 1 - t;
35
+ const mt2 = mt * mt;
36
+ const mt3 = mt2 * mt;
37
+ const t2 = t * t;
38
+ const t3 = t2 * t;
39
+
40
+ const x = mt3 * p0.x + 3 * mt2 * t * p1.x + 3 * mt * t2 * p2.x + t3 * p3.x;
41
+ const y = mt3 * p0.y + 3 * mt2 * t * p1.y + 3 * mt * t2 * p2.y + t3 * p3.y;
42
+ return { x, y };
43
+ }
44
+
45
+ // Calculate angle on cubic Bezier curve
46
+ function angleOnCubicBezier(p0, p1, p2, p3, t) {
47
+ const mt = 1 - t;
48
+ const mt2 = mt * mt;
49
+ const t2 = t * t;
50
+
51
+ const dx = -3 * mt2 * p0.x + 3 * mt2 * p1.x - 6 * mt * t * p1.x - 3 * t2 * p2.x + 6 * mt * t * p2.x + 3 * t2 * p3.x;
52
+ const dy = -3 * mt2 * p0.y + 3 * mt2 * p1.y - 6 * mt * t * p1.y - 3 * t2 * p2.y + 6 * mt * t * p2.y + 3 * t2 * p3.y;
53
+ return Math.atan2(dy, dx) * (180 / Math.PI);
54
+ }
55
+
56
+ // Calculate position on circle
57
+ function pointOnCircle(cx, cy, radius, angleRadians) {
58
+ return {
59
+ x: cx + radius * Math.cos(angleRadians),
60
+ y: cy + radius * Math.sin(angleRadians)
61
+ };
62
+ }
63
+
64
+ export default function PathFollowTest({ tw, progress }) {
65
+ // Quadratic Bezier path (top curve)
66
+ const quad = {
67
+ p0: { x: 200, y: 400 },
68
+ p1: { x: 960, y: 150 },
69
+ p2: { x: 1720, y: 400 }
70
+ };
71
+ const quadPos = pointOnQuadraticBezier(quad.p0, quad.p1, quad.p2, progress);
72
+ const quadAngle = angleOnQuadraticBezier(quad.p0, quad.p1, quad.p2, progress);
73
+
74
+ // Cubic Bezier path (S curve)
75
+ const cubic = {
76
+ p0: { x: 200, y: 700 },
77
+ p1: { x: 600, y: 500 },
78
+ p2: { x: 1320, y: 900 },
79
+ p3: { x: 1720, y: 700 }
80
+ };
81
+ const cubicPos = pointOnCubicBezier(cubic.p0, cubic.p1, cubic.p2, cubic.p3, progress);
82
+ const cubicAngle = angleOnCubicBezier(cubic.p0, cubic.p1, cubic.p2, cubic.p3, progress);
83
+
84
+ // Circle path
85
+ const circle = { cx: 960, cy: 540, radius: 250 };
86
+ const circleAngle = progress * Math.PI * 2;
87
+ const circlePos = pointOnCircle(circle.cx, circle.cy, circle.radius, circleAngle);
88
+ const circleTangentAngle = (circleAngle * 180 / Math.PI) + 90;
89
+
90
+ return (
91
+ <div style={{ display: 'flex', ...tw('relative w-full h-full bg-gradient-to-br from-purple-900 to-blue-900') }}>
92
+ <svg
93
+ width="1920"
94
+ height="1080"
95
+ viewBox="0 0 1920 1080"
96
+ style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }}
97
+ >
98
+ {/* Draw the paths (semi-transparent) */}
99
+ <path
100
+ d={`M ${quad.p0.x} ${quad.p0.y} Q ${quad.p1.x} ${quad.p1.y} ${quad.p2.x} ${quad.p2.y}`}
101
+ stroke="rgba(255,255,255,0.3)"
102
+ strokeWidth={2}
103
+ fill="none"
104
+ strokeDasharray="5 5"
105
+ />
106
+
107
+ <path
108
+ d={`M ${cubic.p0.x} ${cubic.p0.y} C ${cubic.p1.x} ${cubic.p1.y} ${cubic.p2.x} ${cubic.p2.y} ${cubic.p3.x} ${cubic.p3.y}`}
109
+ stroke="rgba(255,255,255,0.3)"
110
+ strokeWidth={2}
111
+ fill="none"
112
+ strokeDasharray="5 5"
113
+ />
114
+
115
+ <circle
116
+ cx={circle.cx}
117
+ cy={circle.cy}
118
+ r={circle.radius}
119
+ stroke="rgba(255,255,255,0.3)"
120
+ strokeWidth={2}
121
+ fill="none"
122
+ strokeDasharray="5 5"
123
+ />
124
+ </svg>
125
+
126
+ {/* Rocket on quadratic bezier */}
127
+ <div
128
+ style={{
129
+ position: "absolute",
130
+ left: quadPos.x,
131
+ top: quadPos.y,
132
+ transform: `translate(-50%, -50%) rotate(${quadAngle}deg)`,
133
+ fontSize: '48px'
134
+ }}
135
+ >
136
+ 🚀
137
+ </div>
138
+
139
+ {/* Car on cubic bezier */}
140
+ <div
141
+ style={{
142
+ position: "absolute",
143
+ left: cubicPos.x,
144
+ top: cubicPos.y,
145
+ transform: `translate(-50%, -50%) rotate(${cubicAngle}deg)`,
146
+ fontSize: '48px'
147
+ }}
148
+ >
149
+ 🏎️
150
+ </div>
151
+
152
+ {/* Airplane on circle */}
153
+ <div
154
+ style={{
155
+ position: "absolute",
156
+ left: circlePos.x,
157
+ top: circlePos.y,
158
+ transform: `translate(-50%, -50%) rotate(${circleTangentAngle}deg)`,
159
+ fontSize: '48px'
160
+ }}
161
+ >
162
+ ✈️
163
+ </div>
164
+
165
+ {/* Text labels */}
166
+ <div style={tw('flex flex-col absolute top-8 left-8')}>
167
+ <h1 style={tw('text-4xl font-bold text-white mb-2')}>
168
+ Path Following Animation
169
+ </h1>
170
+ <p style={tw('text-xl text-white/80')}>
171
+ Progress: {Math.round(progress * 100)}%
172
+ </p>
173
+ </div>
174
+ </div>
175
+ );
176
+ }
@@ -0,0 +1,98 @@
1
+ import React from 'react';
2
+
3
+ export const meta = {
4
+ name: "path-simple-test",
5
+ description: "Simple path following with helpers",
6
+ type: "video",
7
+ size: {
8
+ width: 1920,
9
+ height: 1080
10
+ },
11
+ props: {},
12
+ video: {
13
+ duration: 4,
14
+ fps: 30
15
+ }
16
+ };
17
+
18
+ export default function PathSimpleTest({ tw, progress, path }) {
19
+ // Follow a quadratic curve - just define the points!
20
+ const rocket = path.followQuadratic(
21
+ { x: 200, y: 400 }, // Start
22
+ { x: 960, y: 150 }, // Control
23
+ { x: 1720, y: 400 }, // End
24
+ progress
25
+ );
26
+
27
+ // Follow a cubic Bezier S-curve
28
+ const car = path.followCubic(
29
+ { x: 200, y: 700 }, // Start
30
+ { x: 600, y: 500 }, // Control 1
31
+ { x: 1320, y: 900 }, // Control 2
32
+ { x: 1720, y: 700 }, // End
33
+ progress
34
+ );
35
+
36
+ // Follow a circle
37
+ const plane = path.followCircle(960, 540, 250, progress);
38
+
39
+ return (
40
+ <div style={{ display: 'flex', ...tw('relative w-full h-full bg-gradient-to-br from-purple-900 to-blue-900') }}>
41
+ {/* Draw the paths */}
42
+ <svg width="1920" height="1080" viewBox="0 0 1920 1080" style={{ position: 'absolute', top: 0, left: 0, width: '100%', height: '100%' }}>
43
+ <path d="M 200 400 Q 960 150 1720 400" stroke="rgba(255,255,255,0.3)" strokeWidth={2} fill="none" strokeDasharray="5 5" />
44
+ <path d="M 200 700 C 600 500 1320 900 1720 700" stroke="rgba(255,255,255,0.3)" strokeWidth={2} fill="none" strokeDasharray="5 5" />
45
+ <circle cx="960" cy="540" r="250" stroke="rgba(255,255,255,0.3)" strokeWidth={2} fill="none" strokeDasharray="5 5" />
46
+ </svg>
47
+
48
+ {/* Rocket */}
49
+ <div
50
+ style={{
51
+ position: "absolute",
52
+ left: rocket.x,
53
+ top: rocket.y,
54
+ transform: `translate(-50%, -50%) rotate(${rocket.angle}deg)`,
55
+ fontSize: '48px'
56
+ }}
57
+ >
58
+ 🚀
59
+ </div>
60
+
61
+ {/* Car */}
62
+ <div
63
+ style={{
64
+ position: "absolute",
65
+ left: car.x,
66
+ top: car.y,
67
+ transform: `translate(-50%, -50%) rotate(${car.angle}deg)`,
68
+ fontSize: '48px'
69
+ }}
70
+ >
71
+ 🏎️
72
+ </div>
73
+
74
+ {/* Airplane */}
75
+ <div
76
+ style={{
77
+ position: "absolute",
78
+ left: plane.x,
79
+ top: plane.y,
80
+ transform: `translate(-50%, -50%) rotate(${plane.angle}deg)`,
81
+ fontSize: '48px'
82
+ }}
83
+ >
84
+ ✈️
85
+ </div>
86
+
87
+ {/* Title */}
88
+ <div style={tw('flex flex-col absolute top-8 left-8')}>
89
+ <h1 style={tw('text-4xl font-bold text-white mb-2')}>
90
+ Simple Path Following
91
+ </h1>
92
+ <p style={tw('text-xl text-white/80')}>
93
+ Progress: {Math.round(progress * 100)}%
94
+ </p>
95
+ </div>
96
+ </div>
97
+ );
98
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "stroke-dash-test",
3
+ "description": "Test SVG stroke-dash animations",
4
+ "type": "video",
5
+ "props": {},
6
+ "video": {
7
+ "duration": 4000,
8
+ "fps": 30,
9
+ "width": 1920,
10
+ "height": 1080
11
+ }
12
+ }
@@ -0,0 +1,53 @@
1
+ export const meta = {
2
+ name: "stroke-dash-test",
3
+ description: "Test SVG stroke-dash animations",
4
+ type: "video",
5
+ size: {
6
+ width: 1920,
7
+ height: 1080
8
+ },
9
+ props: {},
10
+ video: {
11
+ duration: 4,
12
+ fps: 30
13
+ }
14
+ };
15
+
16
+ export default function StrokeDashTest({ tw }) {
17
+ return (
18
+ <div style={tw('flex items-center justify-center w-full h-full bg-gray-900')}>
19
+ <svg width="600" height="400" viewBox="0 0 600 400">
20
+ {/* Draw a checkmark */}
21
+ <path
22
+ d="M100 200 L 200 300 L 400 100"
23
+ stroke="#10b981"
24
+ strokeWidth={8}
25
+ fill="none"
26
+ strokeLinecap="round"
27
+ strokeLinejoin="round"
28
+ style={tw('ease-out enter-stroke-dash-[600]/0/1500')}
29
+ />
30
+
31
+ {/* Draw a circle after checkmark */}
32
+ <circle
33
+ cx="250"
34
+ cy="200"
35
+ r="150"
36
+ stroke="#3b82f6"
37
+ strokeWidth={6}
38
+ fill="none"
39
+ style={tw('ease-out enter-stroke-dash-[942]/1000/1500')}
40
+ />
41
+
42
+ {/* Looping star */}
43
+ <path
44
+ d="M450 50 L470 100 L525 100 L485 130 L505 180 L450 150 L395 180 L415 130 L375 100 L430 100 Z"
45
+ stroke="#f59e0b"
46
+ strokeWidth={4}
47
+ fill="none"
48
+ style={tw('loop-stroke-dash-[400]/3000')}
49
+ />
50
+ </svg>
51
+ </div>
52
+ );
53
+ }
package/dist/cli.js CHANGED
@@ -39,6 +39,7 @@ program
39
39
  .option('--format <format>', 'Output format (png, svg, webp, jpg, jpeg)', 'png')
40
40
  .option('--frames-only', 'Render video frames only (no encoding)')
41
41
  .option('--crf <number>', 'Video quality (0-51, lower = better quality)', '23')
42
+ .option('--ffmpeg', 'Use FFmpeg for faster encoding (requires FFmpeg installed)')
42
43
  .option('--debug', 'Enable Satori debug mode (shows element bounding boxes)')
43
44
  .addHelpText('after', `
44
45
  Examples:
@@ -48,11 +49,12 @@ Examples:
48
49
  $ loopwind render banner-hero '{"title":"Test"}' --format svg
49
50
  $ loopwind render banner-hero props.json --format webp --out banner.webp
50
51
 
51
- Videos (serverless-compatible, no ffmpeg required):
52
+ Videos (serverless-compatible by default):
52
53
  $ loopwind render my-video '{"title":"Video Title"}'
53
54
  $ loopwind render my-video props.json --out video.mp4
54
- $ loopwind render my-video '{"title":"Test"}' --crf 20 # Higher quality
55
- $ loopwind render my-video props.json --frames-only # Just export frames
55
+ $ loopwind render my-video '{"title":"Test"}' --crf 20 # Higher quality
56
+ $ loopwind render my-video props.json --ffmpeg # 2x faster (needs FFmpeg)
57
+ $ loopwind render my-video props.json --frames-only # Just export frames
56
58
  `)
57
59
  .action(renderCommand);
58
60
  // design validate
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAE1F,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,wFAAwF,CAAC;KACrG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;KAC5B,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,wBAAwB;AACxB,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,sBAAsB,EAAE,qBAAqB,EAAE,wBAAwB,CAAC;KAC/E,MAAM,CAAC,UAAU,CAAC,CAAC;AAEtB,cAAc;AACd,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,mCAAmC;AACnC,OAAO;KACJ,OAAO,CAAC,2BAA2B,CAAC;KACpC,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,oBAAoB,EAAE,iEAAiE,CAAC;KAC/F,MAAM,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;KAC9C,MAAM,CAAC,mBAAmB,EAAE,2CAA2C,EAAE,KAAK,CAAC;KAC/E,MAAM,CAAC,eAAe,EAAE,wCAAwC,CAAC;KACjE,MAAM,CAAC,gBAAgB,EAAE,8CAA8C,EAAE,IAAI,CAAC;KAC9E,MAAM,CAAC,SAAS,EAAE,yDAAyD,CAAC;KAC5E,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;CAavB,CAAC;KACC,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,kBAAkB;AAClB,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,eAAe,CAAC,CAAC;AAE3B,cAAc;AACd,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,oCAAoC;AACpC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AAEnC,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AACtC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AAE1F,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,wFAAwF,CAAC;KACrG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;KAC5B,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,wBAAwB;AACxB,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,sBAAsB,EAAE,qBAAqB,EAAE,wBAAwB,CAAC;KAC/E,MAAM,CAAC,UAAU,CAAC,CAAC;AAEtB,cAAc;AACd,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,mCAAmC;AACnC,OAAO;KACJ,OAAO,CAAC,2BAA2B,CAAC;KACpC,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,oBAAoB,EAAE,iEAAiE,CAAC;KAC/F,MAAM,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;KAC9C,MAAM,CAAC,mBAAmB,EAAE,2CAA2C,EAAE,KAAK,CAAC;KAC/E,MAAM,CAAC,eAAe,EAAE,wCAAwC,CAAC;KACjE,MAAM,CAAC,gBAAgB,EAAE,8CAA8C,EAAE,IAAI,CAAC;KAC9E,MAAM,CAAC,UAAU,EAAE,4DAA4D,CAAC;KAChF,MAAM,CAAC,SAAS,EAAE,yDAAyD,CAAC;KAC5E,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;CAcvB,CAAC;KACC,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,kBAAkB;AAClB,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,eAAe,CAAC,CAAC;AAE3B,cAAc;AACd,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,oCAAoC;AACpC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AAEnC,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -4,6 +4,7 @@ interface RenderOptions {
4
4
  format?: 'png' | 'svg' | 'webp' | 'jpg' | 'jpeg' | 'mp4' | 'gif';
5
5
  framesOnly?: boolean;
6
6
  crf?: number;
7
+ ffmpeg?: boolean;
7
8
  debug?: boolean;
8
9
  }
9
10
  export declare function renderCommand(templateName: string, propsArg: string | undefined, options: RenderOptions): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/commands/render.ts"],"names":[],"mappings":"AAYA,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IACjE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,aAAa,CACjC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CA+Pf"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/commands/render.ts"],"names":[],"mappings":"AAYA,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IACjE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,aAAa,CACjC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAgQf"}
@@ -154,6 +154,7 @@ export async function renderCommand(templateName, propsArg, options) {
154
154
  else {
155
155
  await renderVideo(templateName, props, outputPath, {
156
156
  quality: options.crf ? parseInt(String(options.crf), 10) : undefined,
157
+ fast: options.ffmpeg,
157
158
  onFrameProgress: (frame, total, phase) => {
158
159
  if (Date.now() - lastUpdate > 100) {
159
160
  if (phase === 'svg') {
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/commands/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/commands/render.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=encode-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encode-worker.d.ts","sourceRoot":"","sources":["../../src/lib/encode-worker.ts"],"names":[],"mappings":""}
@@ -0,0 +1,29 @@
1
+ import { parentPort, workerData } from 'worker_threads';
2
+ import HME from 'h264-mp4-encoder';
3
+ async function encodeChunk() {
4
+ const { frames, width, height, fps, quality, chunkIndex } = workerData;
5
+ const encoder = await HME.createH264MP4Encoder();
6
+ encoder.width = width;
7
+ encoder.height = height;
8
+ encoder.frameRate = fps;
9
+ encoder.quantizationParameter = quality;
10
+ encoder.speed = 10;
11
+ encoder.groupOfPictures = fps;
12
+ encoder.initialize();
13
+ for (let i = 0; i < frames.length; i++) {
14
+ encoder.addFrameRgba(frames[i]);
15
+ // Report progress every 10 frames
16
+ if (i % 10 === 0) {
17
+ parentPort?.postMessage({ type: 'progress', frame: i, total: frames.length, chunkIndex });
18
+ }
19
+ }
20
+ encoder.finalize();
21
+ const uint8Array = encoder.FS.readFile(encoder.outputFilename);
22
+ encoder.delete();
23
+ // Send result back to main thread
24
+ parentPort?.postMessage({ type: 'done', data: uint8Array, chunkIndex });
25
+ }
26
+ encodeChunk().catch(err => {
27
+ parentPort?.postMessage({ type: 'error', error: err.message });
28
+ });
29
+ //# sourceMappingURL=encode-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encode-worker.js","sourceRoot":"","sources":["../../src/lib/encode-worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,GAAG,MAAM,kBAAkB,CAAC;AAWnC,KAAK,UAAU,WAAW;IACxB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,UAAwB,CAAC;IAErF,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,oBAAoB,EAAE,CAAC;IACjD,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;IACtB,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IACxB,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC;IACxB,OAAO,CAAC,qBAAqB,GAAG,OAAO,CAAC;IACxC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;IACnB,OAAO,CAAC,eAAe,GAAG,GAAG,CAAC;IAC9B,OAAO,CAAC,UAAU,EAAE,CAAC;IAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,kCAAkC;QAClC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;YACjB,UAAU,EAAE,WAAW,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IAED,OAAO,CAAC,QAAQ,EAAE,CAAC;IACnB,MAAM,UAAU,GAAG,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/D,OAAO,CAAC,MAAM,EAAE,CAAC;IAEjB,kCAAkC;IAClC,UAAU,EAAE,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IACxB,UAAU,EAAE,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AACjE,CAAC,CAAC,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Simple MJPEG to MP4 muxer
3
+ * Pure TypeScript, no dependencies, serverless-compatible
4
+ *
5
+ * Creates MP4 files with MJPEG video codec (each frame is a JPEG)
6
+ * Much faster than H.264 encoding since Sharp handles JPEG natively
7
+ */
8
+ interface MuxerOptions {
9
+ width: number;
10
+ height: number;
11
+ fps: number;
12
+ }
13
+ export declare class MJPEGMuxer {
14
+ private width;
15
+ private height;
16
+ private fps;
17
+ private frames;
18
+ constructor(options: MuxerOptions);
19
+ addFrame(jpegBuffer: Buffer): void;
20
+ finalize(): Buffer;
21
+ private fixChunkOffset;
22
+ private buildFtyp;
23
+ private buildMoov;
24
+ private buildMvhd;
25
+ private buildTrak;
26
+ private buildTkhd;
27
+ private buildMdia;
28
+ private buildMdhd;
29
+ private buildHdlr;
30
+ private buildMinf;
31
+ private buildVmhd;
32
+ private buildDinf;
33
+ private buildStbl;
34
+ private buildStsd;
35
+ private buildStts;
36
+ private buildStsc;
37
+ private buildStsz;
38
+ private buildStco;
39
+ private buildMdat;
40
+ }
41
+ /**
42
+ * Create MJPEG MP4 from JPEG buffers
43
+ */
44
+ export declare function createMJPEGVideo(jpegFrames: Buffer[], options: MuxerOptions): Buffer;
45
+ export {};
46
+ //# sourceMappingURL=mjpeg-muxer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mjpeg-muxer.d.ts","sourceRoot":"","sources":["../../src/lib/mjpeg-muxer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,MAAM,CAAgB;gBAElB,OAAO,EAAE,YAAY;IAMjC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIlC,QAAQ,IAAI,MAAM;IAkClB,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,SAAS;IAgBjB,OAAO,CAAC,SAAS;IAkCjB,OAAO,CAAC,SAAS;IAgBjB,OAAO,CAAC,SAAS;IAgCjB,OAAO,CAAC,SAAS;IAkBjB,OAAO,CAAC,SAAS;IAkBjB,OAAO,CAAC,SAAS;IAkBjB,OAAO,CAAC,SAAS;IAkBjB,OAAO,CAAC,SAAS;IAgBjB,OAAO,CAAC,SAAS;IAwBjB,OAAO,CAAC,SAAS;IAsBjB,OAAO,CAAC,SAAS;IAyCjB,OAAO,CAAC,SAAS;IAgBjB,OAAO,CAAC,SAAS;IAiBjB,OAAO,CAAC,SAAS;IAmBjB,OAAO,CAAC,SAAS;IAiBjB,OAAO,CAAC,SAAS;CAqBlB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,YAAY,GACpB,MAAM,CAMR"}