@revideo/create 0.5.11-beta.1106 → 0.10.1-alpha.1114

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 (156) hide show
  1. package/examples/avatar-with-background/package.json +7 -14
  2. package/examples/avatar-with-background/src/{scenes/example.tsx → project.tsx} +19 -3
  3. package/examples/avatar-with-background/src/render.ts +4 -3
  4. package/examples/avatar-with-background/tsconfig.json +2 -1
  5. package/examples/default/package.json +6 -6
  6. package/examples/default/src/project.tsx +2 -2
  7. package/examples/github-stars-celebration/package.json +7 -11
  8. package/examples/github-stars-celebration/src/{scenes/example.tsx → project.tsx} +24 -4
  9. package/examples/github-stars-celebration/src/render.ts +1 -1
  10. package/examples/github-stars-celebration/tsconfig.json +2 -1
  11. package/examples/marketing-templates/marketing-template/README.md +19 -0
  12. package/examples/marketing-templates/marketing-template/package.json +7 -11
  13. package/examples/marketing-templates/marketing-template/src/{scenes/example.tsx → project.tsx} +23 -3
  14. package/examples/marketing-templates/marketing-template/src/render.ts +1 -1
  15. package/examples/marketing-templates/marketing-template/tsconfig.json +2 -1
  16. package/examples/marketing-templates/multiple-videos-in-one/README.md +19 -0
  17. package/examples/marketing-templates/multiple-videos-in-one/package.json +7 -11
  18. package/examples/marketing-templates/multiple-videos-in-one/src/{scenes/example.tsx → project.tsx} +21 -3
  19. package/examples/marketing-templates/multiple-videos-in-one/src/render.ts +1 -1
  20. package/examples/marketing-templates/multiple-videos-in-one/tsconfig.json +2 -1
  21. package/examples/minimal-drag-drop/README.md +14 -18
  22. package/examples/minimal-drag-drop/{next/app → app}/page.tsx +51 -39
  23. package/examples/minimal-drag-drop/{next/next-env.d.ts → next-env.d.ts} +1 -1
  24. package/examples/minimal-drag-drop/{next/package.json → package.json} +9 -4
  25. package/examples/minimal-drag-drop/revideo/project.tsx +54 -0
  26. package/examples/parallelized-aws-lambda/Dockerfile +0 -2
  27. package/examples/parallelized-aws-lambda/README.md +331 -100
  28. package/examples/parallelized-aws-lambda/revideo-project/package.json +9 -11
  29. package/examples/parallelized-aws-lambda/revideo-project/src/lambda.ts +2 -3
  30. package/examples/parallelized-aws-lambda/revideo-project/src/{scenes/example.tsx → project.tsx} +9 -5
  31. package/examples/parallelized-aws-lambda/revideo-project/src/render.ts +1 -1
  32. package/examples/parallelized-aws-lambda/revideo-project/tsconfig.json +1 -0
  33. package/examples/rive-explanation-video/README.md +0 -3
  34. package/examples/rive-explanation-video/package.json +8 -12
  35. package/examples/rive-explanation-video/src/project.tsx +234 -0
  36. package/examples/rive-explanation-video/src/render.ts +1 -1
  37. package/examples/rive-explanation-video/tsconfig.json +2 -1
  38. package/examples/saas-template/package.json +39 -39
  39. package/examples/stitching-videos/README.md +15 -3
  40. package/examples/stitching-videos/package.json +7 -10
  41. package/examples/stitching-videos/src/{scenes/example.tsx → project.tsx} +36 -3
  42. package/examples/stitching-videos/src/render.ts +4 -16
  43. package/examples/stitching-videos/tsconfig.json +2 -1
  44. package/examples/three-js-example/package.json +10 -13
  45. package/examples/three-js-example/src/project.tsx +105 -0
  46. package/examples/three-js-example/src/render.ts +1 -1
  47. package/examples/three-js-example/tsconfig.json +2 -1
  48. package/examples/youtube-shorts/README.md +14 -60
  49. package/examples/youtube-shorts/package.json +8 -12
  50. package/examples/youtube-shorts/src/{scenes/example.tsx → project.tsx} +20 -3
  51. package/examples/youtube-shorts/src/render.ts +11 -8
  52. package/examples/youtube-shorts/src/utils.ts +1 -1
  53. package/examples/youtube-shorts/tsconfig.json +2 -1
  54. package/index.js +2 -26
  55. package/package.json +9 -9
  56. package/examples/avatar-with-background/src/project.meta +0 -31
  57. package/examples/avatar-with-background/src/project.ts +0 -6
  58. package/examples/avatar-with-background/src/revideo.d.ts +0 -1
  59. package/examples/avatar-with-background/src/scenes/example.meta +0 -5
  60. package/examples/avatar-with-background/vite.config.ts +0 -8
  61. package/examples/github-stars-celebration/src/project.meta +0 -28
  62. package/examples/github-stars-celebration/src/project.ts +0 -8
  63. package/examples/github-stars-celebration/src/revideo.d.ts +0 -1
  64. package/examples/github-stars-celebration/src/scenes/example.meta +0 -5
  65. package/examples/github-stars-celebration/vite.config.ts +0 -8
  66. package/examples/google-cloud-run-parallelized/README.md +0 -127
  67. package/examples/google-cloud-run-parallelized/render-orchestrator/Dockerfile +0 -56
  68. package/examples/google-cloud-run-parallelized/render-orchestrator/package.json +0 -22
  69. package/examples/google-cloud-run-parallelized/render-orchestrator/src/index.ts +0 -72
  70. package/examples/google-cloud-run-parallelized/render-orchestrator/src/revideo.d.ts +0 -1
  71. package/examples/google-cloud-run-parallelized/render-orchestrator/tsconfig.json +0 -10
  72. package/examples/google-cloud-run-parallelized/render-worker/.gcloudignore +0 -17
  73. package/examples/google-cloud-run-parallelized/render-worker/.puppeteerrc.cjs +0 -9
  74. package/examples/google-cloud-run-parallelized/render-worker/package.json +0 -30
  75. package/examples/google-cloud-run-parallelized/render-worker/src/index.ts +0 -45
  76. package/examples/google-cloud-run-parallelized/render-worker/src/project.meta +0 -31
  77. package/examples/google-cloud-run-parallelized/render-worker/src/project.ts +0 -6
  78. package/examples/google-cloud-run-parallelized/render-worker/src/render.ts +0 -14
  79. package/examples/google-cloud-run-parallelized/render-worker/src/revideo.d.ts +0 -1
  80. package/examples/google-cloud-run-parallelized/render-worker/src/scenes/example.tsx +0 -30
  81. package/examples/google-cloud-run-parallelized/render-worker/tsconfig.json +0 -13
  82. package/examples/google-cloud-run-parallelized/render-worker/vite.config.ts +0 -9
  83. package/examples/marketing-templates/marketing-template/src/globals.css +0 -0
  84. package/examples/marketing-templates/marketing-template/src/project.meta +0 -28
  85. package/examples/marketing-templates/marketing-template/src/project.ts +0 -9
  86. package/examples/marketing-templates/marketing-template/src/revideo.d.ts +0 -1
  87. package/examples/marketing-templates/marketing-template/src/scenes/example.meta +0 -5
  88. package/examples/marketing-templates/marketing-template/vite.config.ts +0 -9
  89. package/examples/marketing-templates/multiple-videos-in-one/src/project.meta +0 -28
  90. package/examples/marketing-templates/multiple-videos-in-one/src/project.ts +0 -9
  91. package/examples/marketing-templates/multiple-videos-in-one/src/revideo.d.ts +0 -1
  92. package/examples/marketing-templates/multiple-videos-in-one/src/scenes/example.meta +0 -5
  93. package/examples/marketing-templates/multiple-videos-in-one/vite.config.ts +0 -9
  94. package/examples/minimal-drag-drop/next/package-lock.json +0 -5577
  95. package/examples/minimal-drag-drop/next/public/favicon.ico +0 -0
  96. package/examples/minimal-drag-drop/next/public/next.svg +0 -1
  97. package/examples/minimal-drag-drop/next/public/vercel.svg +0 -1
  98. package/examples/minimal-drag-drop/revideo/package-lock.json +0 -3771
  99. package/examples/minimal-drag-drop/revideo/package.json +0 -24
  100. package/examples/minimal-drag-drop/revideo/src/project.meta +0 -28
  101. package/examples/minimal-drag-drop/revideo/src/project.ts +0 -9
  102. package/examples/minimal-drag-drop/revideo/src/render.ts +0 -15
  103. package/examples/minimal-drag-drop/revideo/src/revideo.d.ts +0 -1
  104. package/examples/minimal-drag-drop/revideo/src/scenes/example.meta +0 -5
  105. package/examples/minimal-drag-drop/revideo/src/scenes/example.tsx +0 -44
  106. package/examples/minimal-drag-drop/revideo/tsconfig.json +0 -9
  107. package/examples/minimal-drag-drop/revideo/vite.config.ts +0 -6
  108. package/examples/parallelized-aws-lambda/revideo-project/.puppeteerrc.cjs +0 -9
  109. package/examples/parallelized-aws-lambda/revideo-project/src/project.meta +0 -28
  110. package/examples/parallelized-aws-lambda/revideo-project/src/project.ts +0 -7
  111. package/examples/parallelized-aws-lambda/revideo-project/src/revideo.d.ts +0 -1
  112. package/examples/parallelized-aws-lambda/revideo-project/src/scenes/example.meta +0 -5
  113. package/examples/parallelized-aws-lambda/revideo-project/vite.config.ts +0 -9
  114. package/examples/reddit-post-video/README.md +0 -84
  115. package/examples/reddit-post-video/package-lock.json +0 -2941
  116. package/examples/reddit-post-video/package.json +0 -27
  117. package/examples/reddit-post-video/src/global.css +0 -1
  118. package/examples/reddit-post-video/src/metadata.json +0 -576
  119. package/examples/reddit-post-video/src/project.meta +0 -31
  120. package/examples/reddit-post-video/src/project.ts +0 -9
  121. package/examples/reddit-post-video/src/render.ts +0 -157
  122. package/examples/reddit-post-video/src/revideo.d.ts +0 -1
  123. package/examples/reddit-post-video/src/scenes/example.meta +0 -5
  124. package/examples/reddit-post-video/src/scenes/example.tsx +0 -74
  125. package/examples/reddit-post-video/tsconfig.json +0 -9
  126. package/examples/reddit-post-video/vite.config.ts +0 -6
  127. package/examples/rive-explanation-video/src/project.meta +0 -31
  128. package/examples/rive-explanation-video/src/project.ts +0 -8
  129. package/examples/rive-explanation-video/src/revideo.d.ts +0 -1
  130. package/examples/rive-explanation-video/src/scenes/example.meta +0 -5
  131. package/examples/rive-explanation-video/src/scenes/example.tsx +0 -218
  132. package/examples/rive-explanation-video/vite.config.ts +0 -8
  133. package/examples/stitching-videos/src/project.meta +0 -28
  134. package/examples/stitching-videos/src/project.ts +0 -20
  135. package/examples/stitching-videos/src/revideo.d.ts +0 -1
  136. package/examples/stitching-videos/vite.config.ts +0 -8
  137. package/examples/three-js-example/README.md +0 -8
  138. package/examples/three-js-example/src/project.meta +0 -31
  139. package/examples/three-js-example/src/project.ts +0 -8
  140. package/examples/three-js-example/src/revideo.d.ts +0 -1
  141. package/examples/three-js-example/src/scenes/basic3D.meta +0 -5
  142. package/examples/three-js-example/src/scenes/basic3D.tsx +0 -89
  143. package/examples/three-js-example/vite.config.ts +0 -6
  144. package/examples/youtube-shorts/src/project.meta +0 -28
  145. package/examples/youtube-shorts/src/project.ts +0 -9
  146. package/examples/youtube-shorts/src/revideo.d.ts +0 -1
  147. package/examples/youtube-shorts/vite.config.ts +0 -8
  148. /package/examples/minimal-drag-drop/{next/app → app}/api/render/route.ts +0 -0
  149. /package/examples/minimal-drag-drop/{next/app → app}/globals.css +0 -0
  150. /package/examples/minimal-drag-drop/{next/app → app}/layout.tsx +0 -0
  151. /package/examples/minimal-drag-drop/{next/next.config.mjs → next.config.mjs} +0 -0
  152. /package/examples/minimal-drag-drop/{next/postcss.config.js → postcss.config.js} +0 -0
  153. /package/examples/minimal-drag-drop/revideo/{src/global.css → global.css} +0 -0
  154. /package/examples/minimal-drag-drop/{next/tailwind.config.ts → tailwind.config.ts} +0 -0
  155. /package/examples/minimal-drag-drop/{next/tsconfig.json → tsconfig.json} +0 -0
  156. /package/examples/minimal-drag-drop/{next/utils → utils}/parse.ts +0 -0
@@ -1,26 +1,19 @@
1
1
  {
2
- "name": "avatar-with-background",
2
+ "name": "revideo-app",
3
3
  "private": true,
4
4
  "version": "0.0.0",
5
5
  "scripts": {
6
- "start": "vite",
7
- "serve": "vite",
8
- "build": "tsc && vite build",
6
+ "start": "revideo editor --projectFile ./src/project.tsx",
9
7
  "render": "tsc && node dist/render.js"
10
8
  },
11
9
  "dependencies": {
12
- "@deepgram/sdk": "^3.3.0",
13
- "@revideo/2d": "0.5.10",
14
- "@revideo/cli": "0.5.10",
15
- "@revideo/core": "0.5.10",
16
- "@revideo/ffmpeg": "0.5.10",
17
- "@revideo/renderer": "0.5.10",
18
- "@revideo/vite-plugin": "0.5.10",
19
- "dotenv": "^16.4.5",
20
- "openai": "^4.39.0"
10
+ "@revideo/core": "0.10.1",
11
+ "@revideo/2d": "0.10.1",
12
+ "@revideo/renderer": "0.10.1"
21
13
  },
22
14
  "devDependencies": {
23
- "@revideo/ui": "0.5.10",
15
+ "@revideo/ui": "0.10.1",
16
+ "@revideo/cli": "0.10.1",
24
17
  "typescript": "5.5.4",
25
18
  "vite": "^4.5"
26
19
  }
@@ -1,7 +1,10 @@
1
- import { Img, Video, makeScene2D } from '@revideo/2d';
2
- import { waitFor, createRef, useScene } from '@revideo/core'
1
+ import {Img, makeScene2D, Video} from '@revideo/2d';
2
+ import {useScene, createRef, waitFor, makeProject, Vector2} from '@revideo/core';
3
3
 
4
- export default makeScene2D(function* (view) {
4
+ /**
5
+ * The Revideo scene
6
+ */
7
+ const scene = makeScene2D('scene', function* (view) {
5
8
  const avatarRef = createRef<Video>();
6
9
  const backgroundRef = createRef<Img>();
7
10
 
@@ -26,3 +29,16 @@ export default makeScene2D(function* (view) {
26
29
 
27
30
  yield* waitFor(avatarRef().getDuration());
28
31
  });
32
+
33
+ /**
34
+ * The final revideo project
35
+ */
36
+ export default makeProject({
37
+ scenes: [scene],
38
+ settings: {
39
+ // Example settings:
40
+ shared: {
41
+ size: {x: 1080, y: 1080},
42
+ },
43
+ },
44
+ });
@@ -3,12 +3,13 @@ import {renderVideo} from '@revideo/renderer';
3
3
  async function render() {
4
4
  console.log('Rendering video...');
5
5
 
6
+ // This is the main function that renders the video
6
7
  const file = await renderVideo({
7
- projectFile: './src/project.ts',
8
- settings: { logProgress: true }
8
+ projectFile: './src/project.tsx',
9
+ settings: {logProgress: true},
9
10
  });
10
11
 
11
12
  console.log(`Rendered video to ${file}`);
12
13
  }
13
14
 
14
- render();
15
+ render();
@@ -4,6 +4,7 @@
4
4
  "compilerOptions": {
5
5
  "noEmit": false,
6
6
  "outDir": "dist",
7
- "module": "CommonJS"
7
+ "module": "CommonJS",
8
+ "skipLibCheck": true
8
9
  }
9
10
  }
@@ -7,14 +7,14 @@
7
7
  "render": "tsc && node dist/render.js"
8
8
  },
9
9
  "dependencies": {
10
- "@revideo/core": "0.6.0",
11
- "@revideo/2d": "0.6.0",
12
- "@revideo/renderer": "0.6.0"
10
+ "@revideo/core": "0.10.1",
11
+ "@revideo/2d": "0.10.1",
12
+ "@revideo/renderer": "0.10.1"
13
13
  },
14
14
  "devDependencies": {
15
- "@revideo/ui": "0.6.0",
16
- "@revideo/cli": "0.6.0",
15
+ "@revideo/ui": "0.10.1",
16
+ "@revideo/cli": "0.10.1",
17
17
  "typescript": "5.5.4",
18
18
  "vite": "^4.5"
19
19
  }
20
- }
20
+ }
@@ -1,4 +1,4 @@
1
- import {makeProject, Vector2} from '@revideo/core';
1
+ import {makeProject} from '@revideo/core';
2
2
 
3
3
  import {Audio, Img, makeScene2D, Video} from '@revideo/2d';
4
4
  import {all, chain, createRef, waitFor} from '@revideo/core';
@@ -50,7 +50,7 @@ export default makeProject({
50
50
  settings: {
51
51
  // Example settings:
52
52
  shared: {
53
- size: new Vector2(1920, 1080),
53
+ size: {x: 1920, y: 1080},
54
54
  },
55
55
  },
56
56
  });
@@ -1,23 +1,19 @@
1
1
  {
2
- "name": "github-stars-celebration",
2
+ "name": "revideo-app",
3
3
  "private": true,
4
4
  "version": "0.0.0",
5
5
  "scripts": {
6
- "start": "vite",
7
- "serve": "vite",
8
- "build": "tsc && vite build",
6
+ "start": "revideo editor --projectFile ./src/project.tsx",
9
7
  "render": "tsc && node dist/render.js"
10
8
  },
11
9
  "dependencies": {
12
- "@revideo/core": "0.5.10",
13
- "@revideo/2d": "0.5.10",
14
- "@revideo/renderer": "0.5.10",
15
- "@revideo/vite-plugin": "0.5.10",
16
- "@revideo/ffmpeg": "0.5.10"
10
+ "@revideo/core": "0.10.1",
11
+ "@revideo/2d": "0.10.1",
12
+ "@revideo/renderer": "0.10.1"
17
13
  },
18
14
  "devDependencies": {
19
- "@revideo/ui": "0.5.10",
20
- "@revideo/cli": "0.5.10",
15
+ "@revideo/ui": "0.10.1",
16
+ "@revideo/cli": "0.10.1",
21
17
  "typescript": "5.5.4",
22
18
  "vite": "^4.5"
23
19
  }
@@ -1,12 +1,19 @@
1
- import {Audio, Img, Txt, makeScene2D} from '@revideo/2d';
2
- import {all, useScene, createRef, waitFor, easeInExpo, easeInCubic} from '@revideo/core';
1
+ import {makeProject} from '@revideo/core';
3
2
 
4
- export default makeScene2D(function* (view) {
3
+ import {Img, makeScene2D, Txt} from '@revideo/2d';
4
+ import {all, useScene, createRef, easeInCubic} from '@revideo/core';
5
+ import './global.css';
6
+
7
+ /**
8
+ * The Revideo scene
9
+ */
10
+ const scene = makeScene2D('scene', function* (view) {
5
11
  const rocketRef = createRef<Img>();
6
12
  const earthRef = createRef<Img>();
7
13
  const txtRef = createRef<Txt>();
8
14
  const logoRef = createRef<Img>();
9
15
 
16
+ view.fill("#000000")
10
17
 
11
18
  yield view.add(
12
19
  <>
@@ -46,6 +53,19 @@ export default makeScene2D(function* (view) {
46
53
  />,
47
54
  );
48
55
 
49
-
50
56
  yield* all(txtRef().position.y(150, 2), logoRef().width("30%", 2));
51
57
  });
58
+
59
+
60
+ /**
61
+ * The final revideo project
62
+ */
63
+ export default makeProject({
64
+ scenes: [scene],
65
+ settings: {
66
+ // Example settings:
67
+ shared: {
68
+ size: {x: 1920, y: 1080},
69
+ },
70
+ },
71
+ });
@@ -5,7 +5,7 @@ async function render() {
5
5
 
6
6
  // This is the main function that renders the video
7
7
  const file = await renderVideo({
8
- projectFile: './src/project.ts',
8
+ projectFile: './src/project.tsx',
9
9
  settings: {logProgress: true},
10
10
  });
11
11
 
@@ -4,6 +4,7 @@
4
4
  "compilerOptions": {
5
5
  "noEmit": false,
6
6
  "outDir": "dist",
7
- "module": "CommonJS"
7
+ "module": "CommonJS",
8
+ "skipLibCheck": true
8
9
  }
9
10
  }
@@ -0,0 +1,19 @@
1
+ # Revideo Minimal Starter Template
2
+
3
+ This is a minimal Revideo starter project. It can be bootstrapped using
4
+ `npm init @revideo@latest` and selecting the minimal template.
5
+
6
+ It includes a simple scene with a background video, music and the Revideo logo.
7
+ You can get started by editing the `project.tsx` file in the `src` folder.
8
+
9
+ You can run the Revideo editor using `npm start` and render the final video
10
+ using `npm run render`.
11
+
12
+ If you want to see what's possible with Revideo, check out the other templates
13
+ in the [Revideo Examples repository](https://github.com/redotvideo/examples), or
14
+ the [Revideo documentation](https://docs.re.video).
15
+
16
+ If you want to include your Revideo project in a website, you can use the
17
+ Next.js template. It can be found in the Revideo Examples repository or
18
+ bootstrapped using `npm init @revideo@latest` and selecting the Next.js
19
+ template.
@@ -1,23 +1,19 @@
1
1
  {
2
- "name": "veed-template",
2
+ "name": "revideo-app",
3
3
  "private": true,
4
4
  "version": "0.0.0",
5
5
  "scripts": {
6
- "start": "vite",
7
- "serve": "vite",
8
- "build": "tsc && vite build",
6
+ "start": "revideo editor --projectFile ./src/project.tsx",
9
7
  "render": "tsc && node dist/render.js"
10
8
  },
11
9
  "dependencies": {
12
- "@revideo/core": "0.5.10",
13
- "@revideo/2d": "0.5.10",
14
- "@revideo/renderer": "0.5.10",
15
- "@revideo/vite-plugin": "0.5.10",
16
- "@revideo/ffmpeg": "0.5.10"
10
+ "@revideo/core": "0.10.1",
11
+ "@revideo/2d": "0.10.1",
12
+ "@revideo/renderer": "0.10.1"
17
13
  },
18
14
  "devDependencies": {
19
- "@revideo/ui": "0.5.10",
20
- "@revideo/cli": "0.5.10",
15
+ "@revideo/ui": "0.10.1",
16
+ "@revideo/cli": "0.10.1",
21
17
  "typescript": "5.5.4",
22
18
  "vite": "^4.5"
23
19
  }
@@ -1,7 +1,12 @@
1
- import {Grid, Img, Rect, Txt, View2D, makeScene2D} from '@revideo/2d';
2
- import {all, chain, useScene, createRef, waitFor} from '@revideo/core';
1
+ import {makeProject} from '@revideo/core';
3
2
 
4
- export default makeScene2D(function* (view) {
3
+ import {Grid, Rect, Img, makeScene2D, View2D, Txt} from '@revideo/2d';
4
+ import {all, useScene, createRef, waitFor} from '@revideo/core';
5
+
6
+ /**
7
+ * The Revideo scene
8
+ */
9
+ const scene = makeScene2D('scene', function* (view) {
5
10
  const logoRef = createRef<Img>();
6
11
  const grid = createRef<Grid>();
7
12
  const headingRef = createRef<Txt>()
@@ -49,6 +54,7 @@ export default makeScene2D(function* (view) {
49
54
  yield* waitFor(1);
50
55
  });
51
56
 
57
+
52
58
  function* addItems(view: View2D, texts: string[]){
53
59
  let yPos = 0;
54
60
  for(let i=0; i< texts.length; i++){
@@ -65,3 +71,17 @@ function* addItems(view: View2D, texts: string[]){
65
71
  }
66
72
 
67
73
  }
74
+
75
+
76
+ /**
77
+ * The final revideo project
78
+ */
79
+ export default makeProject({
80
+ scenes: [scene],
81
+ settings: {
82
+ // Example settings:
83
+ shared: {
84
+ size: {x: 1920, y: 1080},
85
+ },
86
+ },
87
+ });
@@ -5,7 +5,7 @@ async function render() {
5
5
 
6
6
  // This is the main function that renders the video
7
7
  const file = await renderVideo({
8
- projectFile: "./src/project.ts",
8
+ projectFile: './src/project.tsx',
9
9
  settings: {logProgress: true},
10
10
  });
11
11
 
@@ -4,6 +4,7 @@
4
4
  "compilerOptions": {
5
5
  "noEmit": false,
6
6
  "outDir": "dist",
7
- "module": "CommonJS"
7
+ "module": "CommonJS",
8
+ "skipLibCheck": true
8
9
  }
9
10
  }
@@ -0,0 +1,19 @@
1
+ # Revideo Minimal Starter Template
2
+
3
+ This is a minimal Revideo starter project. It can be bootstrapped using
4
+ `npm init @revideo@latest` and selecting the minimal template.
5
+
6
+ It includes a simple scene with a background video, music and the Revideo logo.
7
+ You can get started by editing the `project.tsx` file in the `src` folder.
8
+
9
+ You can run the Revideo editor using `npm start` and render the final video
10
+ using `npm run render`.
11
+
12
+ If you want to see what's possible with Revideo, check out the other templates
13
+ in the [Revideo Examples repository](https://github.com/redotvideo/examples), or
14
+ the [Revideo documentation](https://docs.re.video).
15
+
16
+ If you want to include your Revideo project in a website, you can use the
17
+ Next.js template. It can be found in the Revideo Examples repository or
18
+ bootstrapped using `npm init @revideo@latest` and selecting the Next.js
19
+ template.
@@ -1,23 +1,19 @@
1
1
  {
2
- "name": "veed-template",
2
+ "name": "revideo-app",
3
3
  "private": true,
4
4
  "version": "0.0.0",
5
5
  "scripts": {
6
- "start": "vite",
7
- "serve": "vite",
8
- "build": "tsc && vite build",
6
+ "start": "revideo editor --projectFile ./src/project.tsx",
9
7
  "render": "tsc && node dist/render.js"
10
8
  },
11
9
  "dependencies": {
12
- "@revideo/core": "0.5.10",
13
- "@revideo/2d": "0.5.10",
14
- "@revideo/renderer": "0.5.10",
15
- "@revideo/vite-plugin": "0.5.10",
16
- "@revideo/ffmpeg": "0.5.10"
10
+ "@revideo/core": "0.10.1",
11
+ "@revideo/2d": "0.10.1",
12
+ "@revideo/renderer": "0.10.1"
17
13
  },
18
14
  "devDependencies": {
19
- "@revideo/ui": "0.5.10",
20
- "@revideo/cli": "0.5.10",
15
+ "@revideo/ui": "0.10.1",
16
+ "@revideo/cli": "0.10.1",
21
17
  "typescript": "5.5.4",
22
18
  "vite": "^4.5"
23
19
  }
@@ -1,7 +1,12 @@
1
- import {Grid, Img, Rect, Txt, View2D, makeScene2D} from '@revideo/2d';
2
- import {all, chain, useScene, createRef, waitFor, Reference} from '@revideo/core';
1
+ import {makeProject, Vector2} from '@revideo/core';
3
2
 
4
- export default makeScene2D(function* (view) {
3
+ import {Txt, Rect, View2D, Grid, makeScene2D} from '@revideo/2d';
4
+ import {all, useScene, Reference, createRef, waitFor} from '@revideo/core';
5
+
6
+ /**
7
+ * The Revideo scene
8
+ */
9
+ const scene = makeScene2D('scene', function* (view) {
5
10
 
6
11
 
7
12
  const backgroundRef = createRef<Rect>();
@@ -120,3 +125,16 @@ function* addItems(background: Reference<Rect>, backgroundColor: string, texts:
120
125
  }
121
126
 
122
127
  }
128
+
129
+ /**
130
+ * The final revideo project
131
+ */
132
+ export default makeProject({
133
+ scenes: [scene],
134
+ settings: {
135
+ // Example settings:
136
+ shared: {
137
+ size: new Vector2(1920, 1080),
138
+ },
139
+ },
140
+ });
@@ -5,7 +5,7 @@ async function render() {
5
5
 
6
6
  // This is the main function that renders the video
7
7
  const file = await renderVideo({
8
- projectFile: './src/project.ts',
8
+ projectFile: './src/project.tsx',
9
9
  settings: {logProgress: true},
10
10
  });
11
11
 
@@ -4,6 +4,7 @@
4
4
  "compilerOptions": {
5
5
  "noEmit": false,
6
6
  "outDir": "dist",
7
- "module": "CommonJS"
7
+ "module": "CommonJS",
8
+ "skipLibCheck": true
8
9
  }
9
10
  }
@@ -1,29 +1,25 @@
1
- # Minimal Drag-and-Drop Example
1
+ # Revideo Next.js Template
2
2
 
3
- This is an adapted version of the [Revideo](https://github.com/redotvideo/revideo) [NextJS SaaS template](https://github.com/redotvideo/examples/saas-template), demonstrating how you can build drag-and-drop editing functionality with Revideo.
4
-
5
- https://github.com/user-attachments/assets/347cea86-a849-4938-9143-892134bc3276
3
+ This is a [Revideo](https://github.com/redotvideo/revideo) NextJS project that implements basic drag-and-drop functionality.
6
4
 
7
5
  ## Getting Started
8
6
 
9
- First, install the dependencies both in the next/ and the revideo/ directories:
7
+ First, install the dependencies:
10
8
 
11
9
  ```bash
12
- (cd next && npm install) &&
13
- (cd revideo && npm install)
10
+ npm install
14
11
  ```
15
12
 
16
- Then, serve the Revideo project using the CLI:
17
-
18
- ```bash
19
- (cd revideo && npx revideo serve)
20
- ```
13
+ This project comes with the following commands:
21
14
 
22
- Now you can start your NextJS app using the following command:
15
+ - `npm run dev` - Start the Next.js development server
16
+ - `npm run build` - Build the Next.js project
17
+ - `npm run start` - Start the Next.js production server
18
+ - `npm run revideo:serve` - Start the Revideo render api (required for the render button on the Next.js page to work)
19
+ - `npm run revideo:editor` - Start the Revideo editor, which you can use to inspect and preview your Revideo code
23
20
 
24
- ```bash
25
- (cd next && npm run dev)
26
- ```
21
+ ## Building with Revideo
27
22
 
28
- Open [http://localhost:3000](http://localhost:3000) with your browser to see the
29
- result. Happy developing!
23
+ If you want to see what's possible with Revideo, check out the other templates
24
+ in the [Revideo Examples repository](https://github.com/redotvideo/examples), or
25
+ the [Revideo documentation](https://docs.re.video).
@@ -1,11 +1,12 @@
1
1
  'use client';
2
2
 
3
3
  import {Player} from '@revideo/player-react';
4
- import {useState, useEffect} from 'react';
4
+ import {useState, useEffect, useRef} from 'react';
5
5
  import {LoaderCircle} from 'lucide-react';
6
6
  import { parseStream } from '../utils/parse';
7
7
  import {Player as CorePlayer} from '@revideo/core';
8
8
  import {Scene2D, Shape} from '@revideo/2d';
9
+ import project from '@/revideo/project';
9
10
 
10
11
 
11
12
  function Button({
@@ -53,7 +54,10 @@ export default function Home() {
53
54
  height: number;
54
55
  } | null>(null);
55
56
 
57
+ const playerContainerRef = useRef<HTMLDivElement>(null);
58
+
56
59
  useEffect(() => {
60
+ console.log("changing", "playerrect", "dimensions", playerRect, dimensions);
57
61
  if (playerRect) {
58
62
  setTransformMatrix(createTransformationMatrix(playerRect, dimensions));
59
63
  }
@@ -73,6 +77,9 @@ export default function Home() {
73
77
  };
74
78
 
75
79
  const handlePointerDown = (event: React.PointerEvent<HTMLDivElement>) => {
80
+ console.log("hiiii")
81
+ console.log("playerrect", playerRect);
82
+ console.log("transformmatrix", transformMatrix);
76
83
  if (playerRect && transformMatrix) {
77
84
  const { x: playerX, y: playerY } = transformPoint(
78
85
  event.clientX,
@@ -80,10 +87,16 @@ export default function Home() {
80
87
  transformMatrix
81
88
  );
82
89
 
90
+ console.log("AHHH")
91
+
92
+ console.log("pos", playerX, playerY);
93
+
83
94
  let hitNode = (corePlayer?.playback.currentScene as Scene2D).getNodeByPosition(playerX, playerY) as Shape;
84
95
  while (hitNode) {
96
+ console.log("joo");
85
97
  // We want to avoid getting TxtLeaf nodes, but only their parent Txt nodes
86
98
  if (nodes.has(hitNode.key)) {
99
+ console.log("jaaa", hitNode.key);
87
100
  setDraggingNode(hitNode);
88
101
  const node = nodes.get(hitNode.key);
89
102
  setDragOffset({ x: playerX - node.x, y: playerY - node.y });
@@ -190,45 +203,44 @@ export default function Home() {
190
203
 
191
204
  return (
192
205
  <>
193
- <div className="m-auto p-12 max-w-6xl flex flex-col gap-y-4">
194
- <div
195
- className="rounded-lg overflow-hidden w-[100%] py-20 bg-gray-100 flex items-center justify-center"
196
- onPointerDown={handlePointerDown}
197
- onPointerMove={handlePointerMove}
198
- onPointerUp={() => {
199
- setDraggingNode(null);
200
- setDragOffset(null);
206
+ <div className="m-auto p-12 max-w-6xl flex flex-col gap-y-4">
207
+ <div
208
+ className="rounded-lg overflow-hidden w-[100%] py-20 bg-gray-100 flex items-center justify-center"
209
+ onPointerDown={handlePointerDown}
210
+ onPointerMove={handlePointerMove}
211
+ onPointerUp={() => {
212
+ setDraggingNode(null);
213
+ setDragOffset(null);
214
+ }}
215
+ >
216
+ <div className='w-[80%] h-[80%]' ref={playerContainerRef}>
217
+ <Player
218
+ project={project}
219
+ controls={false}
220
+ playing={playing}
221
+ width={dimensions.x}
222
+ height={dimensions.y}
223
+ variables={{
224
+ nodes: Object.fromEntries(nodes),
225
+ }}
226
+ onPlayerReady={handlePlayerReady}
227
+ onPlayerResize={(rect: DOMRect) => {
228
+ setPlayerRect(rect);
229
+ }}
230
+ />
231
+ {(selectedNode && playerRect) && (
232
+ <div
233
+ className="absolute border-2 border-[#5bbad5] pointer-events-none"
234
+ style={{
235
+ left: `${selectedNode.x-selectedNode.width/2}px`,
236
+ top: `${selectedNode.y-selectedNode.height/2}px`,
237
+ width: `${selectedNode.width}px`,
238
+ height: `${selectedNode.height}px`,
201
239
  }}
202
- >
203
- <div className='w-[80%] h-[80%]'>
204
- <Player
205
- src="http://localhost:4000/player/"
206
- controls={false}
207
- playing={playing}
208
- width={dimensions.x}
209
- height={dimensions.y}
210
- variables={{
211
- nodes: Object.fromEntries(nodes),
212
- }}
213
- onPlayerReady={handlePlayerReady}
214
- onPlayerResize={(rect: DOMRect) => {
215
- setPlayerRect(rect);
216
- }}
217
- />
218
- {(selectedNode && playerRect) && (
219
- <div
220
- className="absolute border-2 border-[#5bbad5] pointer-events-none"
221
- style={{
222
- left: `${selectedNode.x-selectedNode.width/2}px`,
223
- top: `${selectedNode.y-selectedNode.height/2}px`,
224
- width: `${selectedNode.width}px`,
225
- height: `${selectedNode.height}px`,
226
- }}
227
- />
228
- )}
229
-
230
- </div>
231
- </div>
240
+ />
241
+ )}
242
+ </div>
243
+ </div>
232
244
  <div className="flex gap-x-4">
233
245
  {/* Progress bar */}
234
246
  <div className="text-sm flex-1 bg-gray-100 rounded-md overflow-hidden">
@@ -2,4 +2,4 @@
2
2
  /// <reference types="next/image-types/global" />
3
3
 
4
4
  // NOTE: This file should not be edited
5
- // see https://nextjs.org/docs/basic-features/typescript for more information.
5
+ // see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information.