7ed159ccb0f23f87f7982a82426bc4b10769b2e0
Create VOD 🎬
🇷🇺 Russian README: https://gromlab.ru/vod/create-vod/src/branch/master/README_RU.md
CLI tool to convert videos to DASH and HLS with hardware acceleration (NVENC / Intel QSV / AMD AMF / VAAPI), adaptive streaming, and automatic thumbnails/poster.
Features:
- ⚡ Hardware acceleration: NVENC / Intel QSV / AMD AMF / VAAPI (auto priority)
- 🎯 Formats: DASH and HLS (shared segments)
- 📊 Quality profiles: multiple bitrates/FPS (auto or custom)
- 🖼️ Preview: thumbnail sprite + VTT, poster from the first frame
- ⏱️ Progress: per-profile and overall CLI progress bars
Quick Start
# Run via npx (no install)
npx @gromlab/create-vod video.mp4
# Or install globally
npm install -g @gromlab/create-vod
create-vod video.mp4
System requirements:
# Arch Linux
sudo pacman -S ffmpeg gpac
# Ubuntu/Debian
sudo apt install ffmpeg gpac
# macOS
brew install ffmpeg gpac
Output: A folder video/ in the current directory with segments under {profile}-{codec}/, DASH/HLS manifests in the root, poster, and thumbnail sprite/VTT.
CLI Usage
create-vod <input-video> [output-dir] [-r resolutions] [-c codec] [-f format] [-p poster-timecode]
Main arguments
| Argument | Description | Default | Required |
|---|---|---|---|
input-video |
Path to input video file | - | ✅ |
output-dir |
Output directory | . |
❌ |
Options
| Option | Description | Format | Example |
|---|---|---|---|
-r, --resolutions |
Quality profiles | 360, 720@60, 1080-60 |
-r 720,1080,1440@60 |
-c, --codec |
Video codec | h264, av1, dual |
-c dual (default) |
-f, --format |
Streaming format | dash, hls, both |
-f both (default) |
-p, --poster |
Poster timecode | HH:MM:SS or seconds |
-p 00:00:05 or -p 10 |
--accel |
Hardware accelerator | auto, nvenc, qsv, amf, cpu |
--accel nvenc |
Examples
# Default (DASH + HLS, dual codec, auto profiles)
create-vod video.mp4
# Custom output directory
create-vod video.mp4 ./output
# Selected resolutions
create-vod video.mp4 -r 720,1080,1440
# High FPS
create-vod video.mp4 -r 720@60,1080@60
# DASH only
create-vod video.mp4 -f dash
# HLS only (Safari/iOS)
create-vod video.mp4 -f hls -c h264
# Poster from 5th second
create-vod video.mp4 -p 5
# Combined parameters
create-vod video.mp4 ./output -r 720,1080@60,1440@60 -c dual -f both -p 00:00:10
Supported resolutions
| Resolution | Label | FPS options |
|---|---|---|
360 |
360p (640×360) | 30, 60, 90, 120 |
480 |
480p (854×480) | 30, 60, 90, 120 |
720 |
720p (1280×720) | 30, 60, 90, 120 |
1080 |
1080p (1920×1080) | 30, 60, 90, 120 |
1440 |
1440p (2560×1440) | 30, 60, 90, 120 |
2160 |
2160p (3840×2160) | 30, 60, 90, 120 |
High FPS (60/90/120) are generated only if the source supports that FPS.
Defaults & Automation
- Segment duration: 2 seconds
- Hardware accel: auto-detect (GPU if available, else CPU)
- Profiles: auto-selected based on source resolution
- Bitrate: BPP-based dynamic calculation
- Thumbnails: auto sprite (160×90, 1s interval) + VTT
- Poster: first frame (0:00:00, configurable via
-p) - Parallel encoding: enabled
Requirements: Node.js ≥18.0.0, FFmpeg, MP4Box (gpac), optional NVIDIA/Intel/AMD GPU for acceleration
Languages
TypeScript
81.6%
JavaScript
16.9%
HTML
1.5%