Create stunning videos programmatically with Remotion-powered automation
Vidosy is a powerful, configuration-driven video generation tool that leverages Remotion to create professional-quality videos with minimal effort. Define your video structure in JSON, add your media assets, and let Vidosy handle the rest.
- Video: MP4, MOV, AVI, MKV, WebM with automatic scaling
- Image: JPG, PNG, GIF, WebP with smart positioning
- Color: Solid color backgrounds with hex codes
- Smart Scaling: Automatic
object-fit: coverfor perfect framing
- Background Music: Continuous playback with fade in/out effects
- Scene Narration: Individual audio tracks for each scene
- Audio Layering: Simultaneous playback of multiple audio sources
- Volume Control: Independent volume control per audio source
- Timing Control: Precise start time control for scene audio
- Smooth Transitions: Fade in/out animations with scale effects
- Flexible Timing: Configurable scene duration and sequencing
- Text Overlays: Customizable text with positioning and styling
- Scene Composition: Mix and match different background types
- JSON Configuration: Simple, human-readable video definitions
- Schema Validation: Type-safe configuration with Zod
- Quality Presets: Low, medium, and high quality options
- Multiple Formats: MP4, MOV, AVI output support
# Clone the repository
git clone <repository-url>
cd vidosy
# Install dependencies
npm install
# Build the project
npm run buildCreate a vidosy.json configuration file:
{
"video": {
"width": 1920,
"height": 1080,
"fps": 30,
"duration": 15
},
"audio": {
"background": "background-music.mp3",
"volume": 0.3,
"fadeIn": 2,
"fadeOut": 3
},
"scenes": [
{
"id": "intro",
"duration": 5,
"background": {
"type": "image",
"value": "intro-background.png"
},
"text": {
"content": "Welcome to Vidosy",
"fontSize": 72,
"color": "#ffffff",
"position": "center"
},
"audio": {
"file": "intro-narration.mp3",
"volume": 0.9
}
}
]
}Place your media files in the public/ directory:
public/
βββ background-music.mp3
βββ intro-background.png
βββ intro-narration.mp3
# Using npm script
npm run render
# Using CLI directly
npx vidosy render
# With custom config file
npx vidosy render my-video.json
# With custom output and quality
npx vidosy render -o my-video.mp4 -q high| Property | Type | Description | Default |
|---|---|---|---|
width |
number | Video width in pixels | Required |
height |
number | Video height in pixels | Required |
fps |
number | Frames per second | Required |
duration |
number | Total duration in seconds | Required |
Color Background
{
"background": {
"type": "color",
"value": "#000000"
}
}Image Background
{
"background": {
"type": "image",
"value": "path/to/image.png"
}
}Video Background
{
"background": {
"type": "video",
"value": "path/to/video.mp4"
}
}{
"text": {
"content": "Your text here",
"fontSize": 64,
"color": "#ffffff",
"position": "center"
}
}Position Options: top, center, bottom, left, right
{
"audio": {
"file": "narration.mp3",
"volume": 0.8,
"startTime": 0
}
}{
"audio": {
"background": "music.mp3",
"volume": 0.4,
"fadeIn": 2,
"fadeOut": 3
}
}Properties:
background: Path to background music filevolume: Volume level (0.0 to 1.0)fadeIn: Fade in duration in secondsfadeOut: Fade out duration in seconds
{
"output": {
"format": "mp4",
"quality": "high",
"filename": "my-video.mp4"
}
}Quality Presets:
low: 1280x720, 24fpsmedium: 1920x1080, 30fpshigh: 1920x1080, 60fps
vidosy render [config] [options]Arguments:
config: Path to configuration file (default:vidosy.json)
Options:
-o, --output <path>: Output file path-q, --quality <quality>: Video quality (low, medium, high)
Examples:
# Basic render
vidosy render
# Custom config file
vidosy render my-video.json
# Custom output and quality
vidosy render -o output.mp4 -q high
# Full path specification
vidosy render /path/to/config.json -o /path/to/output.mp4vidosy preview [config]Note: Preview functionality is coming soon! This will allow you to preview your video composition in the browser before rendering.
vidosy/
βββ src/
β βββ cli/ # Command-line interface
β β βββ commands/ # CLI commands (render, preview)
β β βββ utils/ # CLI utilities
β βββ remotion/ # Video composition engine
β β βββ components/ # React components
β β βββ hooks/ # Custom React hooks
β β βββ utils/ # Remotion utilities
β βββ shared/ # Shared types and schemas
βββ public/ # Media assets directory
βββ dist/ # Compiled JavaScript output
βββ bin/ # CLI executable
βββ examples/ # Example configurations
- Product demonstrations
- Company introductions
- Service showcases
- Promotional content
- Tutorial videos
- Course materials
- Training videos
- Knowledge sharing
- Instagram stories
- YouTube intros
- TikTok content
- LinkedIn videos
- Sales pitches
- Investor presentations
- Team updates
- Client demos
- Node.js 18.0.0 or higher
- npm or yarn package manager
# Install dependencies
npm install
# Start development mode
npm run dev
# Build the project
npm run build
# Run tests
npm test
# Lint code
npm run lint
# Format code
npm run format| Script | Description |
|---|---|
build |
Compile TypeScript to JavaScript |
dev |
Start Remotion preview mode |
render |
Render video from configuration |
preview |
Preview video in browser |
test |
Run test suite |
lint |
Check code quality |
format |
Format code with Prettier |
| Type | Formats | Max Size |
|---|---|---|
| Video | MP4, MOV, AVI, MKV, WebM | 500MB |
| Audio | MP3, WAV, AAC, OGG, M4A | 100MB |
| Images | JPG, JPEG, PNG, GIF, WebP | 50MB |
| Format | Codec | Quality |
|---|---|---|
| MP4 | H.264 | Configurable |
| MOV | H.264 | Configurable |
| AVI | H.264 | Configurable |
"Configuration file not found"
- Ensure your config file exists and has the correct path
- Check file permissions and readability
"Asset file not found"
- Verify all media files are in the
public/directory - Check file paths in your configuration
- Ensure file extensions match exactly
"Render failed"
- Check console output for specific error messages
- Verify all required fields in your configuration
- Ensure sufficient disk space for output
"Audio not playing"
- Check audio file format compatibility
- Verify volume settings (0.0 to 1.0)
- Ensure audio files are not corrupted
- Large Videos: Use lower quality settings for faster rendering
- Audio Files: Compress audio files to reduce processing time
- Image Assets: Optimize images for web use
- Output Quality: Choose appropriate quality for your use case
We welcome contributions! Please see our contributing guidelines for details on:
- Code style and standards
- Testing requirements
- Pull request process
- Issue reporting
This project is licensed under the MIT License - see the LICENSE file for details.
- Remotion Team - For the amazing video framework
- React Team - For the foundation
- Open Source Community - For the tools and libraries
Made with β€οΈ by the Vidosy Team
For support, questions, or feature requests, please open an issue on GitHub.