├── marketing-templates
├── marketing-template
│ ├── src
│ │ ├── globals.css
│ │ ├── revideo.d.ts
│ │ ├── scenes
│ │ │ ├── example.meta
│ │ │ └── example.tsx
│ │ ├── project.ts
│ │ ├── render.ts
│ │ └── project.meta
│ ├── vite.config.ts
│ ├── tsconfig.json
│ └── package.json
├── multiple-videos-in-one
│ ├── src
│ │ ├── revideo.d.ts
│ │ ├── scenes
│ │ │ ├── example.meta
│ │ │ └── example.tsx
│ │ ├── project.ts
│ │ ├── render.ts
│ │ └── project.meta
│ ├── vite.config.ts
│ ├── tsconfig.json
│ └── package.json
└── README.md
├── default
├── src
│ ├── revideo.d.ts
│ ├── project.ts
│ ├── render.ts
│ ├── project.meta
│ └── scenes
│ │ └── example.tsx
├── vite.config.ts
├── tsconfig.json
└── package.json
├── google-cloud-run-parallelized
├── render-worker
│ ├── .gitignore
│ ├── src
│ │ ├── revideo.d.ts
│ │ ├── project.ts
│ │ ├── render.ts
│ │ ├── project.meta
│ │ ├── scenes
│ │ │ └── example.tsx
│ │ └── index.ts
│ ├── vite.config.ts
│ ├── .puppeteerrc.cjs
│ ├── tsconfig.json
│ ├── .gcloudignore
│ └── package.json
├── render-orchestrator
│ ├── src
│ │ ├── revideo.d.ts
│ │ └── index.ts
│ ├── tsconfig.json
│ ├── package.json
│ └── Dockerfile
└── README.md
├── parallelized-aws-lambda
├── .dockerignore
├── revideo-project
│ ├── src
│ │ ├── revideo.d.ts
│ │ ├── scenes
│ │ │ ├── example.meta
│ │ │ └── example.tsx
│ │ ├── project.ts
│ │ ├── render.ts
│ │ ├── project.meta
│ │ └── lambda.ts
│ ├── vite.config.ts
│ ├── tsconfig.json
│ ├── .puppeteerrc.cjs
│ └── package.json
├── Dockerfile
├── Dockerfile.base
└── README.md
├── reddit-post-video
├── src
│ ├── revideo.d.ts
│ ├── scenes
│ │ ├── example.meta
│ │ └── example.tsx
│ ├── global.css
│ ├── project.ts
│ ├── project.meta
│ ├── render.ts
│ └── metadata.json
├── vite.config.ts
├── tsconfig.json
├── package.json
└── README.md
├── youtube-shorts
├── src
│ ├── revideo.d.ts
│ ├── scenes
│ │ ├── example.meta
│ │ └── example.tsx
│ ├── project.ts
│ ├── global.css
│ ├── project.meta
│ ├── render.ts
│ ├── utils.ts
│ └── metadata.json
├── vite.config.ts
├── tsconfig.json
├── package.json
└── README.md
├── stitching-videos
├── src
│ ├── revideo.d.ts
│ ├── project.ts
│ ├── project.meta
│ ├── render.ts
│ └── scenes
│ │ └── example.tsx
├── vite.config.ts
├── tsconfig.json
├── README.md
└── package.json
├── avatar-with-background
├── src
│ ├── revideo.d.ts
│ ├── scenes
│ │ ├── example.meta
│ │ └── example.tsx
│ ├── project.ts
│ ├── render.ts
│ └── project.meta
├── vite.config.ts
├── tsconfig.json
└── package.json
├── github-stars-celebration
├── src
│ ├── revideo.d.ts
│ ├── scenes
│ │ ├── example.meta
│ │ └── example.tsx
│ ├── global.css
│ ├── project.ts
│ ├── render.ts
│ └── project.meta
├── public
│ ├── earth.png
│ └── rocket.png
├── vite.config.ts
├── tsconfig.json
└── package.json
├── saas-template
├── revideo
│ ├── src
│ │ ├── revideo.d.ts
│ │ ├── scenes
│ │ │ ├── example.meta
│ │ │ └── example.tsx
│ │ ├── global.css
│ │ ├── project.ts
│ │ ├── render.ts
│ │ └── project.meta
│ ├── vite.config.ts
│ ├── tsconfig.json
│ └── package.json
├── next
│ ├── app
│ │ ├── globals.css
│ │ ├── api
│ │ │ └── render
│ │ │ │ └── route.ts
│ │ ├── layout.tsx
│ │ ├── actions.tsx
│ │ └── page.tsx
│ ├── public
│ │ ├── favicon.ico
│ │ ├── vercel.svg
│ │ └── next.svg
│ ├── postcss.config.js
│ ├── next.config.mjs
│ ├── .gitignore
│ ├── tsconfig.json
│ ├── tailwind.config.ts
│ ├── utils
│ │ └── parse.ts
│ └── package.json
├── .prettierrc
└── README.md
├── .gitignore
├── README.md
├── logo.svg
└── logo_dark.svg
/marketing-templates/marketing-template/src/globals.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/default/src/revideo.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/google-cloud-run-parallelized/render-worker/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | dist/
--------------------------------------------------------------------------------
/parallelized-aws-lambda/.dockerignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | dist
3 | package-lock.json
--------------------------------------------------------------------------------
/reddit-post-video/src/revideo.d.ts:
--------------------------------------------------------------------------------
1 | ///
--------------------------------------------------------------------------------
/youtube-shorts/src/revideo.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/stitching-videos/src/revideo.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/avatar-with-background/src/revideo.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/github-stars-celebration/src/revideo.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/saas-template/revideo/src/revideo.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/google-cloud-run-parallelized/render-worker/src/revideo.d.ts:
--------------------------------------------------------------------------------
1 | ///
--------------------------------------------------------------------------------
/marketing-templates/marketing-template/src/revideo.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/parallelized-aws-lambda/revideo-project/src/revideo.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/saas-template/next/app/globals.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | dist
3 | .env
4 | */public/*
5 | !public/.gitkeep
6 | output
7 | .DS_store
8 | .cache
--------------------------------------------------------------------------------
/google-cloud-run-parallelized/render-orchestrator/src/revideo.d.ts:
--------------------------------------------------------------------------------
1 | ///
--------------------------------------------------------------------------------
/marketing-templates/multiple-videos-in-one/src/revideo.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 |
--------------------------------------------------------------------------------
/youtube-shorts/src/scenes/example.meta:
--------------------------------------------------------------------------------
1 | {
2 | "version": 0,
3 | "timeEvents": [],
4 | "seed": 961005229
5 | }
--------------------------------------------------------------------------------
/reddit-post-video/src/scenes/example.meta:
--------------------------------------------------------------------------------
1 | {
2 | "version": 0,
3 | "timeEvents": [],
4 | "seed": 3377806303
5 | }
--------------------------------------------------------------------------------
/avatar-with-background/src/scenes/example.meta:
--------------------------------------------------------------------------------
1 | {
2 | "version": 0,
3 | "timeEvents": [],
4 | "seed": 483310598
5 | }
--------------------------------------------------------------------------------
/saas-template/revideo/src/scenes/example.meta:
--------------------------------------------------------------------------------
1 | {
2 | "version": 0,
3 | "timeEvents": [],
4 | "seed": 2330707904
5 | }
--------------------------------------------------------------------------------
/github-stars-celebration/src/scenes/example.meta:
--------------------------------------------------------------------------------
1 | {
2 | "version": 0,
3 | "timeEvents": [],
4 | "seed": 2126556333
5 | }
--------------------------------------------------------------------------------
/saas-template/next/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/K-Jadeja/revideo/main/saas-template/next/public/favicon.ico
--------------------------------------------------------------------------------
/saas-template/revideo/src/global.css:
--------------------------------------------------------------------------------
1 | @import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap');
2 |
--------------------------------------------------------------------------------
/github-stars-celebration/public/earth.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/K-Jadeja/revideo/main/github-stars-celebration/public/earth.png
--------------------------------------------------------------------------------
/github-stars-celebration/public/rocket.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/K-Jadeja/revideo/main/github-stars-celebration/public/rocket.png
--------------------------------------------------------------------------------
/github-stars-celebration/src/global.css:
--------------------------------------------------------------------------------
1 | @import url('https://fonts.googleapis.com/css2?family=Lexend:wght@100..900&display=swap');
2 |
--------------------------------------------------------------------------------
/marketing-templates/marketing-template/src/scenes/example.meta:
--------------------------------------------------------------------------------
1 | {
2 | "version": 0,
3 | "timeEvents": [],
4 | "seed": 2008807484
5 | }
--------------------------------------------------------------------------------
/parallelized-aws-lambda/revideo-project/src/scenes/example.meta:
--------------------------------------------------------------------------------
1 | {
2 | "version": 0,
3 | "timeEvents": [],
4 | "seed": 307431050
5 | }
--------------------------------------------------------------------------------
/saas-template/next/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | },
6 | };
7 |
--------------------------------------------------------------------------------
/marketing-templates/multiple-videos-in-one/src/scenes/example.meta:
--------------------------------------------------------------------------------
1 | {
2 | "version": 0,
3 | "timeEvents": [],
4 | "seed": 2008807484
5 | }
--------------------------------------------------------------------------------
/saas-template/next/next.config.mjs:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {};
3 |
4 | export default nextConfig;
5 |
--------------------------------------------------------------------------------
/reddit-post-video/src/global.css:
--------------------------------------------------------------------------------
1 | @import url('https://fonts.googleapis.com/css2?family=Lexend:wght@100..900&family=Raleway:ital,wght@0,100..900;1,100..900&display=swap');
2 |
--------------------------------------------------------------------------------
/default/src/project.ts:
--------------------------------------------------------------------------------
1 | import {makeProject} from '@revideo/core';
2 |
3 | import example from './scenes/example?scene';
4 |
5 | export default makeProject({
6 | scenes: [example],
7 | });
8 |
--------------------------------------------------------------------------------
/avatar-with-background/src/project.ts:
--------------------------------------------------------------------------------
1 | import {makeProject} from '@revideo/core';
2 | import example from './scenes/example?scene';
3 |
4 | export default makeProject({
5 | scenes: [example]
6 | });
7 |
--------------------------------------------------------------------------------
/default/vite.config.ts:
--------------------------------------------------------------------------------
1 | import {defineConfig} from 'vite';
2 | import motionCanvas from '@revideo/vite-plugin';
3 |
4 | export default defineConfig({
5 | plugins: [
6 | motionCanvas(),
7 | ],
8 | });
--------------------------------------------------------------------------------
/reddit-post-video/vite.config.ts:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "vite";
2 | import motionCanvas from "@revideo/vite-plugin";
3 |
4 | export default defineConfig({
5 | plugins: [motionCanvas()],
6 | });
7 |
--------------------------------------------------------------------------------
/saas-template/revideo/vite.config.ts:
--------------------------------------------------------------------------------
1 | import {defineConfig} from 'vite';
2 | import motionCanvas from '@revideo/vite-plugin';
3 |
4 | export default defineConfig({
5 | plugins: [motionCanvas()],
6 | });
7 |
--------------------------------------------------------------------------------
/youtube-shorts/vite.config.ts:
--------------------------------------------------------------------------------
1 | import {defineConfig} from 'vite';
2 | import motionCanvas from '@revideo/vite-plugin';
3 |
4 | export default defineConfig({
5 | plugins: [
6 | motionCanvas()
7 | ],
8 | });
9 |
--------------------------------------------------------------------------------
/github-stars-celebration/vite.config.ts:
--------------------------------------------------------------------------------
1 | import {defineConfig} from 'vite';
2 | import motionCanvas from '@revideo/vite-plugin';
3 |
4 | export default defineConfig({
5 | plugins: [
6 | motionCanvas(),
7 | ],
8 | });
--------------------------------------------------------------------------------
/stitching-videos/vite.config.ts:
--------------------------------------------------------------------------------
1 | import {defineConfig} from 'vite';
2 | import motionCanvas from '@revideo/vite-plugin';
3 |
4 | export default defineConfig({
5 | plugins: [
6 | motionCanvas(),
7 | ],
8 | });
9 |
--------------------------------------------------------------------------------
/avatar-with-background/vite.config.ts:
--------------------------------------------------------------------------------
1 | import {defineConfig} from 'vite';
2 | import motionCanvas from '@revideo/vite-plugin';
3 |
4 | export default defineConfig({
5 | plugins: [
6 | motionCanvas(),
7 | ],
8 | });
9 |
--------------------------------------------------------------------------------
/google-cloud-run-parallelized/render-worker/src/project.ts:
--------------------------------------------------------------------------------
1 | import {makeProject} from '@revideo/core';
2 | import example from './scenes/example?scene';
3 |
4 | export default makeProject({
5 | scenes: [example]
6 | });
7 |
--------------------------------------------------------------------------------
/parallelized-aws-lambda/revideo-project/src/project.ts:
--------------------------------------------------------------------------------
1 | import {makeProject} from '@revideo/core';
2 |
3 | import example from './scenes/example?scene';
4 |
5 | export default makeProject({
6 | scenes: [example],
7 | });
8 |
--------------------------------------------------------------------------------
/saas-template/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "useTabs": true,
3 | "semi": true,
4 | "singleQuote": true,
5 | "quoteProps": "as-needed",
6 | "trailingComma": "all",
7 | "bracketSpacing": false,
8 | "printWidth": 100
9 | }
10 |
--------------------------------------------------------------------------------
/default/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@revideo/2d/tsconfig.project.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "noEmit": false,
6 | "outDir": "dist",
7 | "module": "CommonJS"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/github-stars-celebration/src/project.ts:
--------------------------------------------------------------------------------
1 | import {makeProject} from '@revideo/core';
2 | import "./global.css"
3 |
4 | import example from './scenes/example?scene';
5 |
6 | export default makeProject({
7 | scenes: [example],
8 | });
9 |
--------------------------------------------------------------------------------
/saas-template/revideo/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@revideo/2d/tsconfig.project.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "noEmit": false,
6 | "outDir": "dist",
7 | "module": "CommonJS"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/reddit-post-video/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@revideo/2d/tsconfig.project.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "noEmit": false,
6 | "outDir": "dist",
7 | "module": "CommonJS"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/stitching-videos/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@revideo/2d/tsconfig.project.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "noEmit": false,
6 | "outDir": "dist",
7 | "module": "CommonJS"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/youtube-shorts/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@revideo/2d/tsconfig.project.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "noEmit": false,
6 | "outDir": "dist",
7 | "module": "CommonJS"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/avatar-with-background/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@revideo/2d/tsconfig.project.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "noEmit": false,
6 | "outDir": "dist",
7 | "module": "CommonJS"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/saas-template/revideo/src/project.ts:
--------------------------------------------------------------------------------
1 | import {makeProject} from '@revideo/core';
2 |
3 | import './global.css';
4 |
5 | import example from './scenes/example?scene';
6 |
7 | export default makeProject({
8 | scenes: [example],
9 | });
10 |
--------------------------------------------------------------------------------
/github-stars-celebration/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@revideo/2d/tsconfig.project.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "noEmit": false,
6 | "outDir": "dist",
7 | "module": "CommonJS"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/marketing-templates/marketing-template/vite.config.ts:
--------------------------------------------------------------------------------
1 | import {defineConfig} from 'vite';
2 | import motionCanvas from '@revideo/vite-plugin';
3 |
4 |
5 | export default defineConfig({
6 | plugins: [
7 | motionCanvas(),
8 | ],
9 | });
10 |
--------------------------------------------------------------------------------
/parallelized-aws-lambda/revideo-project/vite.config.ts:
--------------------------------------------------------------------------------
1 | import {defineConfig} from 'vite';
2 | import motionCanvas from '@revideo/vite-plugin';
3 |
4 |
5 | export default defineConfig({
6 | plugins: [
7 | motionCanvas(),
8 | ]
9 | });
10 |
--------------------------------------------------------------------------------
/google-cloud-run-parallelized/render-worker/vite.config.ts:
--------------------------------------------------------------------------------
1 | import {defineConfig} from 'vite';
2 | import motionCanvas from '@revideo/vite-plugin';
3 |
4 |
5 | export default defineConfig({
6 | plugins: [
7 | motionCanvas(),
8 | ],
9 | });
10 |
--------------------------------------------------------------------------------
/marketing-templates/multiple-videos-in-one/vite.config.ts:
--------------------------------------------------------------------------------
1 | import {defineConfig} from 'vite';
2 | import motionCanvas from '@revideo/vite-plugin';
3 |
4 |
5 | export default defineConfig({
6 | plugins: [
7 | motionCanvas(),
8 | ],
9 | });
10 |
--------------------------------------------------------------------------------
/marketing-templates/marketing-template/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@revideo/2d/tsconfig.project.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "noEmit": false,
6 | "outDir": "dist",
7 | "module": "CommonJS"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/marketing-templates/multiple-videos-in-one/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@revideo/2d/tsconfig.project.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "noEmit": false,
6 | "outDir": "dist",
7 | "module": "CommonJS"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/google-cloud-run-parallelized/render-orchestrator/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@revideo/2d/tsconfig.project.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "noEmit": false,
6 | "outDir": "dist",
7 | "module": "CommonJS"
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/youtube-shorts/src/project.ts:
--------------------------------------------------------------------------------
1 | import {makeProject} from '@revideo/core';
2 | import example from './scenes/example?scene';
3 | import metadata from './metadata.json'
4 | import "./global.css";
5 |
6 | export default makeProject({
7 | scenes: [example],
8 | variables: metadata
9 | });
10 |
--------------------------------------------------------------------------------
/parallelized-aws-lambda/revideo-project/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@revideo/2d/tsconfig.project.json",
3 | "include": ["src"],
4 | "compilerOptions": {
5 | "noEmit": false,
6 | "outDir": "dist",
7 | "module": "CommonJS",
8 | "esModuleInterop": true,
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/parallelized-aws-lambda/revideo-project/.puppeteerrc.cjs:
--------------------------------------------------------------------------------
1 | const { join } = require('path');
2 |
3 | /**
4 | * @type {import("puppeteer").Configuration}
5 | */
6 | module.exports = {
7 | cacheDirectory: join(__dirname, '.cache', 'puppeteer'),
8 | };
9 | // [END monitoring_synthetic_monitoring_custom_puppeteer_cjs]
--------------------------------------------------------------------------------
/google-cloud-run-parallelized/render-worker/.puppeteerrc.cjs:
--------------------------------------------------------------------------------
1 | const { join } = require('path');
2 |
3 | /**
4 | * @type {import("puppeteer").Configuration}
5 | */
6 | module.exports = {
7 | cacheDirectory: join(__dirname, '.cache', 'puppeteer'),
8 | };
9 | // [END monitoring_synthetic_monitoring_custom_puppeteer_cjs]
--------------------------------------------------------------------------------
/reddit-post-video/src/project.ts:
--------------------------------------------------------------------------------
1 | import { makeProject } from "@revideo/core";
2 | import example from "./scenes/example?scene";
3 | import metadata from "./metadata.json";
4 | import "./global.css";
5 |
6 | export default makeProject({
7 | scenes: [example],
8 | variables: { data: metadata },
9 | });
10 |
--------------------------------------------------------------------------------
/stitching-videos/README.md:
--------------------------------------------------------------------------------
1 | # Stitching Together Videos
2 |
3 | This is a very simple example demonstrating how you can stitch together multiple videos into one. It also includes a transition animation between the videos.
4 |
5 |
6 | https://github.com/redotvideo/revideo-examples/assets/122226645/6ec23514-e699-4a17-a9a5-02e7e14b207e
7 |
8 |
--------------------------------------------------------------------------------
/avatar-with-background/src/render.ts:
--------------------------------------------------------------------------------
1 | import {renderVideo} from '@revideo/renderer';
2 |
3 | async function render() {
4 | console.log('Rendering video...');
5 |
6 | const file = await renderVideo({
7 | projectFile: './src/project.ts',
8 | settings: { logProgress: true }
9 | });
10 |
11 | console.log(`Rendered video to ${file}`);
12 | }
13 |
14 | render();
--------------------------------------------------------------------------------
/youtube-shorts/src/global.css:
--------------------------------------------------------------------------------
1 | @import url('https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,300..900;1,300..900&display=swap');
2 | @import url('https://fonts.googleapis.com/css2?family=Mulish:ital,wght@0,200..1000;1,200..1000&display=swap');
3 | @import url('https://fonts.googleapis.com/css2?family=Luckiest+Guy&family=Mulish:ital,wght@0,200..1000;1,200..1000&display=swap');
--------------------------------------------------------------------------------
/google-cloud-run-parallelized/render-worker/src/render.ts:
--------------------------------------------------------------------------------
1 | import {renderVideo} from '@revideo/renderer';
2 |
3 | async function render() {
4 | console.log('Rendering video...');
5 |
6 | const file = await renderVideo({
7 | projectFile: './src/project.ts',
8 | settings: {logProgress: true}
9 | });
10 |
11 | console.log(`Rendered video to ${file}`);
12 | }
13 |
14 | render();
--------------------------------------------------------------------------------
/google-cloud-run-parallelized/render-worker/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "@revideo/2d/tsconfig.project.json",
3 | "compilerOptions": {
4 | "target": "es2016",
5 | "module": "commonjs",
6 | "esModuleInterop": true,
7 | "strict": true,
8 | "outDir": "dist",
9 | "noEmit": false
10 | },
11 | "include": ["src/**/*"],
12 | "exclude": ["node_modules"]
13 | }
--------------------------------------------------------------------------------
/marketing-templates/marketing-template/src/project.ts:
--------------------------------------------------------------------------------
1 | import {makeProject} from '@revideo/core';
2 |
3 | import example from './scenes/example?scene';
4 |
5 |
6 | export default makeProject({
7 | scenes: [example],
8 | variables: { backgroundColor: "#FDCFE5", texts: ["gift cards", "discounts", "+ more!!"]} // ["gift cards", "discounts", "+ more!!"] ["events", "special offers", "and more..."]
9 | });
10 |
--------------------------------------------------------------------------------
/marketing-templates/multiple-videos-in-one/src/project.ts:
--------------------------------------------------------------------------------
1 | import {makeProject} from '@revideo/core';
2 |
3 | import example from './scenes/example?scene';
4 |
5 |
6 | export default makeProject({
7 | scenes: [example],
8 | variables: { backgroundColor: "#FDCFE5", texts: ["gift cards", "discounts", "+ more!!"]} // ["gift cards", "discounts", "+ more!!"] ["events", "special offers", "and more..."]
9 | });
10 |
--------------------------------------------------------------------------------
/default/src/render.ts:
--------------------------------------------------------------------------------
1 | import {renderVideo} from '@revideo/renderer';
2 |
3 | async function render() {
4 | console.log('Rendering video...');
5 |
6 | // This is the main function that renders the video
7 | const file = await renderVideo({
8 | projectFile: './src/project.ts',
9 | settings: {logProgress: true},
10 | });
11 |
12 | console.log(`Rendered video to ${file}`);
13 | }
14 |
15 | render();
16 |
--------------------------------------------------------------------------------
/saas-template/revideo/src/render.ts:
--------------------------------------------------------------------------------
1 | import {renderVideo} from '@revideo/renderer';
2 |
3 | async function render() {
4 | console.log('Rendering video...');
5 |
6 | // This is the main function that renders the video
7 | const file = await renderVideo({
8 | projectFile: './src/project.ts',
9 | settings: { logProgress: true }
10 | });
11 |
12 | console.log(`Rendered video to ${file}`);
13 | }
14 |
15 | render();
16 |
--------------------------------------------------------------------------------
/github-stars-celebration/src/render.ts:
--------------------------------------------------------------------------------
1 | import {renderVideo} from '@revideo/renderer';
2 |
3 | async function render() {
4 | console.log('Rendering video...');
5 |
6 | // This is the main function that renders the video
7 | const file = await renderVideo({
8 | projectFile: './src/project.ts',
9 | settings: {logProgress: true},
10 | });
11 |
12 | console.log(`Rendered video to ${file}`);
13 | }
14 |
15 | render();
16 |
--------------------------------------------------------------------------------
/marketing-templates/marketing-template/src/render.ts:
--------------------------------------------------------------------------------
1 | import {renderVideo} from '@revideo/renderer';
2 |
3 | async function render() {
4 | console.log('Rendering video...');
5 |
6 | // This is the main function that renders the video
7 | const file = await renderVideo({
8 | projectFile: "./src/project.ts",
9 | settings: {logProgress: true},
10 | });
11 |
12 | console.log(`Rendered video to ${file}`);
13 | }
14 |
15 | render();
16 |
--------------------------------------------------------------------------------
/marketing-templates/multiple-videos-in-one/src/render.ts:
--------------------------------------------------------------------------------
1 | import {renderVideo} from '@revideo/renderer';
2 |
3 | async function render() {
4 | console.log('Rendering video...');
5 |
6 | // This is the main function that renders the video
7 | const file = await renderVideo({
8 | projectFile: './src/project.ts',
9 | settings: {logProgress: true},
10 | });
11 |
12 | console.log(`Rendered video to ${file}`);
13 | }
14 |
15 | render();
16 |
--------------------------------------------------------------------------------
/parallelized-aws-lambda/revideo-project/src/render.ts:
--------------------------------------------------------------------------------
1 | import {renderVideo} from '@revideo/renderer';
2 |
3 | async function render() {
4 | console.log('Rendering video...');
5 |
6 | // This is the main function that renders the video
7 | const file = await renderVideo({
8 | projectFile: './src/project.ts',
9 | variables: {message: 'Hi!'},
10 | settings: {logProgress: true},
11 | });
12 |
13 | console.log(`Rendered video to ${file}`);
14 | }
15 |
16 | render();
--------------------------------------------------------------------------------
/marketing-templates/README.md:
--------------------------------------------------------------------------------
1 | # Marketing Templates
2 |
3 | This project contains the implementation of a template for a social media post advertising Black Friday discounts. The implementation can be found in `/marketing-template`.
4 |
5 | https://github.com/redotvideo/examples/assets/122226645/e0b8ef10-737e-4ea7-8a1e-cc2edca676eb
6 |
7 | The folder `multiple-videos-in-one` contains the following variation:
8 |
9 | https://github.com/redotvideo/examples/assets/122226645/52b5c42d-ffd3-4bb4-bb08-bfb5c8283e03
10 |
11 |
--------------------------------------------------------------------------------
/parallelized-aws-lambda/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM docker.io/revideo/aws-lambda-base-image:latest
2 |
3 | COPY ./revideo-project/ ./
4 |
5 | RUN npm install
6 |
7 | RUN node node_modules/puppeteer/install.mjs
8 |
9 | RUN npx tsc && cp dist/lambda.js ./
10 |
11 | ENV ROLLUP_CACHE=/tmp/rollup_cache
12 |
13 | RUN npm run build
14 |
15 | ENV FFMPEG_PATH=/var/task/node_modules/@ffmpeg-installer/linux-x64/ffmpeg
16 |
17 | ENV HOME=/tmp
18 |
19 | ENV DONT_WRITE_TO_META_FILES=true
20 |
21 | CMD ["lambda.handler"]
--------------------------------------------------------------------------------
/saas-template/revideo/src/project.meta:
--------------------------------------------------------------------------------
1 | {
2 | "version": 0,
3 | "shared": {
4 | "background": null,
5 | "range": [
6 | 0,
7 | null
8 | ],
9 | "size": {
10 | "x": 1920,
11 | "y": 1080
12 | },
13 | "audioOffset": 0
14 | },
15 | "preview": {
16 | "fps": 30,
17 | "resolutionScale": 1
18 | },
19 | "rendering": {
20 | "fps": 30,
21 | "resolutionScale": 1,
22 | "colorSpace": "srgb",
23 | "exporter": {
24 | "name": "@revideo/core/wasm"
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/stitching-videos/src/project.ts:
--------------------------------------------------------------------------------
1 | import {makeProject} from '@revideo/core';
2 | import example from './scenes/example?scene';
3 |
4 | export default makeProject({
5 | scenes: [example],
6 | variables: {
7 | videos: [
8 | {
9 | src: "https://revideo-example-assets.s3.amazonaws.com/beach-3.mp4",
10 | start: 1,
11 | duration: 6
12 | },
13 | {
14 | src: "https://revideo-example-assets.s3.amazonaws.com/beach-2.mp4",
15 | start: 2,
16 | duration: 10
17 | }
18 | ]
19 | }
20 | });
21 |
--------------------------------------------------------------------------------
/youtube-shorts/src/project.meta:
--------------------------------------------------------------------------------
1 | {
2 | "version": 1,
3 | "shared": {
4 | "background": null,
5 | "range": [
6 | 0,
7 | null
8 | ],
9 | "size": {
10 | "x": 1080,
11 | "y": 1792
12 | },
13 | "audioOffset": 0
14 | },
15 | "preview": {
16 | "fps": 30,
17 | "resolutionScale": 1
18 | },
19 | "rendering": {
20 | "fps": 30,
21 | "resolutionScale": 1,
22 | "colorSpace": "srgb",
23 | "exporter": {
24 | "name": "@revideo/core/wasm",
25 | "options": {}
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/stitching-videos/src/project.meta:
--------------------------------------------------------------------------------
1 | {
2 | "version": 0,
3 | "shared": {
4 | "background": "rgb(0,0,0)",
5 | "range": [
6 | 0,
7 | null
8 | ],
9 | "size": {
10 | "x": 1920,
11 | "y": 1080
12 | },
13 | "audioOffset": 0
14 | },
15 | "preview": {
16 | "fps": 30,
17 | "resolutionScale": 1
18 | },
19 | "rendering": {
20 | "fps": 30,
21 | "resolutionScale": 1,
22 | "colorSpace": "srgb",
23 | "exporter": {
24 | "name": "@revideo/core/wasm",
25 | "options": {}
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/github-stars-celebration/src/project.meta:
--------------------------------------------------------------------------------
1 | {
2 | "version": 0,
3 | "shared": {
4 | "background": "rgb(20,20,20)",
5 | "range": [
6 | 0,
7 | null
8 | ],
9 | "size": {
10 | "x": 1920,
11 | "y": 1080
12 | },
13 | "audioOffset": 0
14 | },
15 | "preview": {
16 | "fps": 30,
17 | "resolutionScale": 1
18 | },
19 | "rendering": {
20 | "fps": 30,
21 | "resolutionScale": 1,
22 | "colorSpace": "srgb",
23 | "exporter": {
24 | "name": "@revideo/core/wasm",
25 | "options": {}
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/marketing-templates/marketing-template/src/project.meta:
--------------------------------------------------------------------------------
1 | {
2 | "version": 0,
3 | "shared": {
4 | "background": null,
5 | "range": [
6 | 0,
7 | null
8 | ],
9 | "size": {
10 | "x": 1920,
11 | "y": 1080
12 | },
13 | "audioOffset": 0
14 | },
15 | "preview": {
16 | "fps": 30,
17 | "resolutionScale": 1
18 | },
19 | "rendering": {
20 | "fps": 30,
21 | "resolutionScale": 1,
22 | "colorSpace": "srgb",
23 | "exporter": {
24 | "name": "@revideo/core/wasm",
25 | "options": {}
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/parallelized-aws-lambda/revideo-project/src/project.meta:
--------------------------------------------------------------------------------
1 | {
2 | "version": 0,
3 | "shared": {
4 | "background": null,
5 | "range": [
6 | 0,
7 | null
8 | ],
9 | "size": {
10 | "x": 1920,
11 | "y": 1080
12 | },
13 | "audioOffset": 0
14 | },
15 | "preview": {
16 | "fps": 30,
17 | "resolutionScale": 1
18 | },
19 | "rendering": {
20 | "fps": 30,
21 | "resolutionScale": 1,
22 | "colorSpace": "srgb",
23 | "exporter": {
24 | "name": "@revideo/core/wasm",
25 | "options": {}
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/saas-template/next/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 | .yarn/install-state.gz
8 |
9 | # testing
10 | /coverage
11 |
12 | # next.js
13 | /.next/
14 | /out/
15 |
16 | # production
17 | /build
18 |
19 | # misc
20 | .DS_Store
21 | *.pem
22 |
23 | # debug
24 | npm-debug.log*
25 | yarn-debug.log*
26 | yarn-error.log*
27 |
28 | # local env files
29 | .env*.local
30 |
31 | # vercel
32 | .vercel
33 |
34 | # typescript
35 | *.tsbuildinfo
36 | next-env.d.ts
37 |
--------------------------------------------------------------------------------
/marketing-templates/multiple-videos-in-one/src/project.meta:
--------------------------------------------------------------------------------
1 | {
2 | "version": 0,
3 | "shared": {
4 | "background": "rgb(255,255,255)",
5 | "range": [
6 | 0,
7 | null
8 | ],
9 | "size": {
10 | "x": 1920,
11 | "y": 1080
12 | },
13 | "audioOffset": 0
14 | },
15 | "preview": {
16 | "fps": 30,
17 | "resolutionScale": 1
18 | },
19 | "rendering": {
20 | "fps": 30,
21 | "resolutionScale": 1,
22 | "colorSpace": "srgb",
23 | "exporter": {
24 | "name": "@revideo/core/wasm",
25 | "options": {}
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/saas-template/revideo/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "revideo",
3 | "private": true,
4 | "version": "0.0.0",
5 | "scripts": {
6 | "start": "vite",
7 | "serve": "vite",
8 | "build": "tsc && vite build",
9 | "render": "tsc && node dist/render.js"
10 | },
11 | "dependencies": {
12 | "@revideo/core": "0.4.8",
13 | "@revideo/2d": "0.4.8",
14 | "@revideo/renderer": "0.4.8",
15 | "@revideo/vite-plugin": "0.4.8",
16 | "@revideo/ffmpeg": "0.4.8"
17 | },
18 | "devDependencies": {
19 | "@revideo/ui": "0.4.8",
20 | "@revideo/cli": "0.4.8",
21 | "typescript": "^5.2.2",
22 | "vite": "^4.5"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/stitching-videos/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "stitching-videos",
3 | "private": true,
4 | "version": "0.0.0",
5 | "scripts": {
6 | "start": "vite",
7 | "serve": "vite",
8 | "build": "tsc && vite build",
9 | "render": "tsc && node dist/render.js"
10 | },
11 | "dependencies": {
12 | "@revideo/core": "0.4.4",
13 | "@revideo/2d": "0.4.4",
14 | "@revideo/renderer": "0.4.4",
15 | "@revideo/vite-plugin": "0.4.4",
16 | "@revideo/ffmpeg": "0.4.4"
17 | },
18 | "devDependencies": {
19 | "@revideo/ui": "0.4.4",
20 | "typescript": "^5.2.2",
21 | "vite": "^4.5"
22 | }
23 | }
--------------------------------------------------------------------------------
/default/src/project.meta:
--------------------------------------------------------------------------------
1 | {
2 | "version": 0,
3 | "shared": {
4 | "background": null,
5 | "range": [
6 | 0,
7 | null
8 | ],
9 | "size": {
10 | "x": 1920,
11 | "y": 1080
12 | },
13 | "audioOffset": 0
14 | },
15 | "preview": {
16 | "fps": 30,
17 | "resolutionScale": 1
18 | },
19 | "rendering": {
20 | "fps": 30,
21 | "resolutionScale": 1,
22 | "colorSpace": "srgb",
23 | "exporter": {
24 | "name": "@revideo/core/wasm",
25 | "options": {
26 | "fastStart": true,
27 | "includeAudio": true
28 | }
29 | }
30 | }
31 | }
--------------------------------------------------------------------------------
/saas-template/next/app/api/render/route.ts:
--------------------------------------------------------------------------------
1 | const RENDER_URL = 'http://localhost:4000/render';
2 |
3 | async function getResponse(body: string) {
4 | return await fetch(RENDER_URL, {
5 | method: 'POST',
6 | headers: {
7 | 'Content-Type': 'application/json',
8 | },
9 | body,
10 | });
11 | }
12 |
13 | export async function POST(request: Request) {
14 | const body = await request.json();
15 |
16 | const response = await getResponse(JSON.stringify(body));
17 | if (!response.ok) {
18 | return new Response('Failed to render', {status: 500});
19 | }
20 |
21 | return new Response(response.body, {status: 200});
22 | }
23 |
--------------------------------------------------------------------------------
/reddit-post-video/src/project.meta:
--------------------------------------------------------------------------------
1 | {
2 | "version": 0,
3 | "shared": {
4 | "background": null,
5 | "range": [
6 | 0,
7 | null
8 | ],
9 | "size": {
10 | "x": 1024,
11 | "y": 1792
12 | },
13 | "audioOffset": 0
14 | },
15 | "preview": {
16 | "fps": 30,
17 | "resolutionScale": 1
18 | },
19 | "rendering": {
20 | "fps": 30,
21 | "resolutionScale": 1,
22 | "colorSpace": "srgb",
23 | "exporter": {
24 | "name": "@revideo/core/wasm",
25 | "options": {
26 | "fastStart": true,
27 | "includeAudio": true
28 | }
29 | }
30 | }
31 | }
--------------------------------------------------------------------------------
/avatar-with-background/src/project.meta:
--------------------------------------------------------------------------------
1 | {
2 | "version": 0,
3 | "shared": {
4 | "background": null,
5 | "range": [
6 | 0,
7 | null
8 | ],
9 | "size": {
10 | "x": 1080,
11 | "y": 1080
12 | },
13 | "audioOffset": 0
14 | },
15 | "preview": {
16 | "fps": 30,
17 | "resolutionScale": 1
18 | },
19 | "rendering": {
20 | "fps": 30,
21 | "resolutionScale": 1,
22 | "colorSpace": "srgb",
23 | "exporter": {
24 | "name": "@revideo/core/wasm",
25 | "options": {
26 | "fastStart": true,
27 | "includeAudio": true
28 | }
29 | }
30 | }
31 | }
--------------------------------------------------------------------------------
/google-cloud-run-parallelized/render-worker/.gcloudignore:
--------------------------------------------------------------------------------
1 | # This file specifies files that are *not* uploaded to Google Cloud
2 | # using gcloud. It follows the same syntax as .gitignore, with the addition of
3 | # "#!include" directives (which insert the entries of the given .gitignore-style
4 | # file at that point).
5 | #
6 | # For more information, run:
7 | # $ gcloud topic gcloudignore
8 | #
9 | .gcloudignore
10 | # If you would like to upload your .git directory, .gitignore file or files
11 | # from your .gitignore file, remove the corresponding line
12 | # below:
13 | .git
14 | .gitignore
15 |
16 | node_modules
17 | #!include:.gitignore
18 |
--------------------------------------------------------------------------------
/saas-template/next/public/vercel.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/default/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "revideo-app",
3 | "private": true,
4 | "version": "0.0.0",
5 | "scripts": {
6 | "start": "vite",
7 | "serve": "vite",
8 | "build": "tsc && vite build",
9 | "render": "tsc && node dist/render.js"
10 | },
11 | "dependencies": {
12 | "@revideo/core": "^0.4.8",
13 | "@revideo/2d": "^0.4.8",
14 | "@revideo/renderer": "^0.4.8",
15 | "@revideo/vite-plugin": "^0.4.8",
16 | "@revideo/ffmpeg": "^0.4.8"
17 | },
18 | "devDependencies": {
19 | "@revideo/ui": "^0.4.8",
20 | "@revideo/cli": "^0.4.8",
21 | "typescript": "^5.2.2",
22 | "vite": "^4.5"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/saas-template/next/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "lib": ["dom", "dom.iterable", "esnext"],
4 | "allowJs": true,
5 | "skipLibCheck": true,
6 | "strict": true,
7 | "noEmit": true,
8 | "esModuleInterop": true,
9 | "module": "esnext",
10 | "moduleResolution": "bundler",
11 | "resolveJsonModule": true,
12 | "isolatedModules": true,
13 | "jsx": "preserve",
14 | "incremental": true,
15 | "plugins": [
16 | {
17 | "name": "next"
18 | }
19 | ],
20 | "paths": {
21 | "@/*": ["./*"]
22 | }
23 | },
24 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
25 | "exclude": ["node_modules"]
26 | }
27 |
--------------------------------------------------------------------------------
/google-cloud-run-parallelized/render-worker/src/project.meta:
--------------------------------------------------------------------------------
1 | {
2 | "version": 0,
3 | "shared": {
4 | "background": "rgb(0,0,0)",
5 | "range": [
6 | 0,
7 | null
8 | ],
9 | "size": {
10 | "x": 1920,
11 | "y": 1080
12 | },
13 | "audioOffset": 0
14 | },
15 | "preview": {
16 | "fps": 30,
17 | "resolutionScale": 1
18 | },
19 | "rendering": {
20 | "fps": 30,
21 | "resolutionScale": 1,
22 | "colorSpace": "srgb",
23 | "exporter": {
24 | "name": "@revideo/core/wasm",
25 | "options": {
26 | "fastStart": true,
27 | "includeAudio": true
28 | }
29 | }
30 | }
31 | }
--------------------------------------------------------------------------------
/github-stars-celebration/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "github-stars-celebration",
3 | "private": true,
4 | "version": "0.0.0",
5 | "scripts": {
6 | "start": "vite",
7 | "serve": "vite",
8 | "build": "tsc && vite build",
9 | "render": "tsc && node dist/render.js"
10 | },
11 | "dependencies": {
12 | "@revideo/core": "^0.4.5",
13 | "@revideo/2d": "^0.4.5",
14 | "@revideo/renderer": "^0.4.5",
15 | "@revideo/vite-plugin": "^0.4.5",
16 | "@revideo/ffmpeg": "^0.4.5"
17 | },
18 | "devDependencies": {
19 | "@revideo/ui": "^0.4.5",
20 | "@revideo/cli": "^0.4.5",
21 | "typescript": "^5.2.2",
22 | "vite": "^4.5"
23 | }
24 | }
--------------------------------------------------------------------------------
/marketing-templates/marketing-template/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "veed-template",
3 | "private": true,
4 | "version": "0.0.0",
5 | "scripts": {
6 | "start": "vite",
7 | "serve": "vite",
8 | "build": "tsc && vite build",
9 | "render": "tsc && node dist/render.js"
10 | },
11 | "dependencies": {
12 | "@revideo/core": "0.4.5",
13 | "@revideo/2d": "0.4.5",
14 | "@revideo/renderer": "0.4.5",
15 | "@revideo/vite-plugin": "0.4.5",
16 | "@revideo/ffmpeg": "0.4.5"
17 | },
18 | "devDependencies": {
19 | "@revideo/ui": "0.4.5",
20 | "@revideo/cli": "^0.4.5",
21 | "typescript": "^5.2.2",
22 | "vite": "^4.5"
23 | }
24 | }
--------------------------------------------------------------------------------
/marketing-templates/multiple-videos-in-one/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "veed-template",
3 | "private": true,
4 | "version": "0.0.0",
5 | "scripts": {
6 | "start": "vite",
7 | "serve": "vite",
8 | "build": "tsc && vite build",
9 | "render": "tsc && node dist/render.js"
10 | },
11 | "dependencies": {
12 | "@revideo/core": "0.4.5",
13 | "@revideo/2d": "0.4.5",
14 | "@revideo/renderer": "0.4.5",
15 | "@revideo/vite-plugin": "0.4.5",
16 | "@revideo/ffmpeg": "0.4.5"
17 | },
18 | "devDependencies": {
19 | "@revideo/ui": "0.4.5",
20 | "@revideo/cli": "^0.4.5",
21 | "typescript": "^5.2.2",
22 | "vite": "^4.5"
23 | }
24 | }
--------------------------------------------------------------------------------
/google-cloud-run-parallelized/render-orchestrator/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "google-cloud-run",
3 | "private": true,
4 | "version": "0.0.0",
5 | "scripts": {
6 | "start": "tsc && node dist/index.js"
7 | },
8 | "dependencies": {
9 | "@google-cloud/storage": "^7.11.0",
10 | "@revideo/2d": "0.4.6",
11 | "@revideo/core": "0.4.6",
12 | "@revideo/ffmpeg": "0.4.6",
13 | "express": "^4.19.2",
14 | "uuid": "^9.0.1"
15 | },
16 | "devDependencies": {
17 | "@types/express": "^4.17.21",
18 | "@types/uuid": "^9.0.8",
19 | "typescript": "^5.4.5",
20 | "vite": "^4.5"
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/saas-template/next/app/layout.tsx:
--------------------------------------------------------------------------------
1 | import type {Metadata} from 'next';
2 | import {Inter} from 'next/font/google';
3 | import './globals.css';
4 |
5 | const inter = Inter({subsets: ['latin']});
6 |
7 | export const metadata: Metadata = {
8 | title: 'Create Next App',
9 | description: 'Generated by create next app',
10 | };
11 |
12 | export default function RootLayout({
13 | children,
14 | }: Readonly<{
15 | children: React.ReactNode;
16 | }>) {
17 | return (
18 |
19 |
20 |
21 |
22 | {children}
23 |
24 | );
25 | }
26 |
--------------------------------------------------------------------------------
/saas-template/next/tailwind.config.ts:
--------------------------------------------------------------------------------
1 | /* eslint-disable naming-convention */
2 | import type {Config} from 'tailwindcss';
3 |
4 | const config: Config = {
5 | content: [
6 | './pages/**/*.{js,ts,jsx,tsx,mdx}',
7 | './components/**/*.{js,ts,jsx,tsx,mdx}',
8 | './app/**/*.{js,ts,jsx,tsx,mdx}',
9 | ],
10 | theme: {
11 | extend: {
12 | colors: {
13 | gray: {
14 | 50: '#FAFAFA',
15 | 100: '#F3F3F3',
16 | 200: '#E5E5E5',
17 | 300: '#C7C7C7',
18 | 400: '#ACACAC',
19 | 500: '#808080',
20 | 600: '#5F5F5F',
21 | 700: '#4E4E4E',
22 | 800: '#373737',
23 | 900: '#2A2A2A',
24 | 950: '#151515',
25 | },
26 | },
27 | },
28 | },
29 | };
30 | export default config;
31 |
--------------------------------------------------------------------------------
/avatar-with-background/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "avatar-with-background",
3 | "private": true,
4 | "version": "0.0.0",
5 | "scripts": {
6 | "start": "vite",
7 | "serve": "vite",
8 | "build": "tsc && vite build",
9 | "render": "tsc && node dist/render.js"
10 | },
11 | "dependencies": {
12 | "@deepgram/sdk": "^3.3.0",
13 | "@revideo/2d": "0.4.5",
14 | "@revideo/core": "0.4.5",
15 | "@revideo/ffmpeg": "0.4.5",
16 | "@revideo/renderer": "0.4.5",
17 | "@revideo/vite-plugin": "0.4.5",
18 | "dotenv": "^16.4.5",
19 | "openai": "^4.39.0"
20 | },
21 | "devDependencies": {
22 | "@revideo/ui": "0.4.5",
23 | "typescript": "^5.2.2",
24 | "vite": "^4.5"
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/reddit-post-video/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "my-revideo-project",
3 | "private": true,
4 | "version": "0.0.0",
5 | "scripts": {
6 | "start": "vite",
7 | "serve": "vite",
8 | "build": "tsc && vite build",
9 | "render": "tsc && node dist/render.js"
10 | },
11 | "dependencies": {
12 | "@deepgram/sdk": "^3.2.0",
13 | "@revideo/2d": "^0.4.8",
14 | "@revideo/core": "^0.4.8",
15 | "@revideo/ffmpeg": "^0.4.8",
16 | "@revideo/renderer": "^0.4.8",
17 | "@revideo/vite-plugin": "^0.4.8",
18 | "axios": "^1.6.8",
19 | "yargs": "^17.7.2"
20 | },
21 | "devDependencies": {
22 | "@revideo/ui": "^0.4.8",
23 | "@types/yargs": "^17.0.32",
24 | "typescript": "^5.2.2",
25 | "vite": "^4.5"
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/stitching-videos/src/render.ts:
--------------------------------------------------------------------------------
1 | import {renderVideo} from '@revideo/renderer';
2 |
3 | async function render() {
4 | console.log('Rendering video...');
5 | // This is the main function that renders the video
6 | const file = await renderVideo({
7 | projectFile: './src/project.ts',
8 | variables: {
9 | videos: [
10 | {
11 | src: "https://revideo-example-assets.s3.amazonaws.com/beach-3.mp4",
12 | start: 1,
13 | duration: 6
14 | },
15 | {
16 | src: "https://revideo-example-assets.s3.amazonaws.com/beach-2.mp4",
17 | start: 2,
18 | duration: 10
19 | }
20 | ]}
21 | });
22 |
23 | console.log(`Rendered video to ${file}`);
24 | }
25 |
26 | render();
27 |
--------------------------------------------------------------------------------
/saas-template/README.md:
--------------------------------------------------------------------------------
1 | # Revideo Next.js Template
2 |
3 | This is the [Revideo](https://github.com/redotvideo/revideo) NextJS starter
4 | project bootstrapped with `npm init @revideo@latest`.
5 |
6 | ## Getting Started
7 |
8 | First, install the dependencies both in the next/ and the revideo/ directories:
9 |
10 | ```bash
11 | (cd next && npm install) &&
12 | (cd revideo && npm install)
13 | ```
14 |
15 | Then, serve the Revideo project using the CLI:
16 |
17 | ```bash
18 | (cd revideo && npx revideo serve)
19 | ```
20 |
21 | Now you can start your NextJS app using the following command:
22 |
23 | ```bash
24 | (cd next && npm run dev)
25 | ```
26 |
27 | Open [http://localhost:3000](http://localhost:3000) with your browser to see the
28 | result. Happy developing!
29 |
--------------------------------------------------------------------------------
/youtube-shorts/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "revideo",
3 | "private": true,
4 | "version": "0.0.0",
5 | "scripts": {
6 | "start": "vite",
7 | "serve": "vite",
8 | "build": "tsc && vite build",
9 | "render": "tsc && node dist/render.js"
10 | },
11 | "dependencies": {
12 | "@deepgram/sdk": "^3.3.1",
13 | "@revideo/2d": "^0.4.5",
14 | "@revideo/cli": "^0.4.5",
15 | "@revideo/core": "^0.4.5",
16 | "@revideo/ffmpeg": "^0.4.5",
17 | "@revideo/renderer": "^0.4.5",
18 | "@revideo/vite-plugin": "^0.4.5",
19 | "dotenv": "^16.4.5",
20 | "express": "^4.19.2",
21 | "openai": "^4.40.2",
22 | "uuid": "^9.0.1"
23 | },
24 | "devDependencies": {
25 | "@revideo/ui": "^0.4.5",
26 | "@types/uuid": "^9.0.8",
27 | "typescript": "^5.2.2",
28 | "vite": "^4.5"
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/parallelized-aws-lambda/revideo-project/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "test-revideo-project",
3 | "private": true,
4 | "version": "0.0.0",
5 | "scripts": {
6 | "start": "vite",
7 | "serve": "vite",
8 | "build": "tsc && vite build",
9 | "render": "tsc && node dist/render.js"
10 | },
11 | "dependencies": {
12 | "@revideo/2d": "0.4.6",
13 | "@revideo/core": "0.4.6",
14 | "@revideo/ffmpeg": "0.4.6",
15 | "@revideo/renderer": "0.4.6",
16 | "@revideo/vite-plugin": "0.4.6",
17 | "@sparticuz/chromium": "^123.0.1",
18 | "aws-lambda": "^1.0.7",
19 | "aws-sdk": "^2.1642.0",
20 | "ffmpeg-static": "^5.2.0"
21 | },
22 | "devDependencies": {
23 | "@revideo/cli": "^0.4.6",
24 | "@revideo/ui": "0.4.6",
25 | "typescript": "^5.2.2",
26 | "vite": "^4.5"
27 | }
28 | }
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/avatar-with-background/src/scenes/example.tsx:
--------------------------------------------------------------------------------
1 | import { Img, Video, makeScene2D } from '@revideo/2d';
2 | import { waitFor, createRef, useScene } from '@revideo/core'
3 |
4 | export default makeScene2D(function* (view) {
5 | const avatarRef = createRef