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

Description
No description provided
Readme MIT 792 KiB
Languages
TypeScript 81.6%
JavaScript 16.9%
HTML 1.5%