├── 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