17748d39003b55b9d5900edc8a0d5156230d0141
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: auto-detect encoder/decoder (NVENC / Intel QSV / AMD AMF / VAAPI / CPU)
- 🎯 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 | Values / Format | Default | Example |
|---|---|---|---|---|
-r, --resolutions |
Quality profiles | 360, 720@60, 1080-60 |
auto | -r 720,1080,1440@60 |
-c, --codec |
Video codec | h264, av1 |
auto (h264 + AV1 if HW) | -c h264 |
-f, --format |
Streaming format | dash, hls |
auto (dash + hls) | -f dash |
-p, --poster |
Poster timecode | HH:MM:SS or seconds |
00:00:00 |
-p 00:00:05 or -p 10 |
-e, --encoder |
Video encoder | auto, nvenc, qsv, amf, vaapi, videotoolbox, v4l2, cpu |
auto |
-e nvenc |
-d, --decoder |
Video decoder (hwaccel) | auto, nvenc, qsv, vaapi, videotoolbox, v4l2, cpu |
auto |
-d cpu |
Examples
# Default (DASH + HLS, auto 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
# Force CPU encode/decode
create-vod video.mp4 -c h264 -e cpu -d cpu
# Force GPU encode + CPU decode
create-vod video.mp4 -c h264 -e nvenc -d cpu
# Combined parameters
create-vod video.mp4 ./output -r 720,1080@60,1440@60 -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 best encoder/decoder (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
- AV1: enabled only if hardware AV1 encoder detected (in auto mode); otherwise остаётся H.264
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%