Main entrypoint:
./bin/vtx.shPrint all supported root presets with resolved dimensions, default bitrates, and a short description.
./bin/vtx.sh list-presetsValidate one job file and every profile it references.
./bin/vtx.sh validate --job ./jobs/example-multi-video.confValidation checks include:
- job file exists
- file inputs exist when
input_mode=file - RTMP inputs are validated as RTMP URLs when
input_mode=rtmp - referenced profile files exist
- job
modeis supported - required profile fields are present after preset resolution
- preset names or preset file paths are supported
- dimensions and bitrate rules are valid
- quality settings are valid
- job-level
cpu_limitis valid when present
The command exits nonzero on failure.
Run a transcode job.
./bin/vtx.sh transcode --job ./jobs/example-multi-video.confBy default, jobs use mode=sequential, which runs one FFmpeg command per output profile. Jobs can also use:
mode=multi-outputfor one MP4-oriented FFmpeg command with multiple outputsmode=hlsfor file-to-HLS packagingmode=live-hlsfor RTMP ingest to live HLS output
Resolve and validate the job, then print generated ffmpeg commands without executing them.
./bin/vtx.sh transcode --job ./jobs/example-multi-video.conf --dry-runPrint resolved config values, preset dimensions, codec mappings, bitrate mappings, CPU thread resolution, and execution details.
./bin/vtx.sh transcode --job ./jobs/example-multi-video.conf --verboseWrite transcode output to a log file. During real transcodes, ffmpeg output is appended to the same log file.
./bin/vtx.sh transcode --job ./jobs/example-multi-video.conf --verbose --log ./logs/transcode.logThe log directory is created automatically if needed. Existing log files are overwritten at the start of the transcode run.
Dry-run logging is useful for reviewing generated commands:
./bin/vtx.sh transcode --job ./jobs/example-multi-video.conf --dry-run --verbose --log ./logs/dry-run.logPrint the CLI version.
./bin/vtx.sh --version--job <path>: path to a job config file--dry-run: print generated commands only--verbose: print resolved details for debugging and review--log <path>: save generated commands, verbose transcode messages, andffmpegoutput to a file; only supported withtranscode--version: printvtxversion--help: show usage
List presets:
./bin/vtx.sh list-presetsValidate before running:
./bin/vtx.sh validate --job ./jobs/example-basic.confGenerate commands only:
./bin/vtx.sh transcode --job ./jobs/example-custom.conf --dry-run --verboseGenerate one multi-output FFmpeg command:
./bin/vtx.sh transcode --job ./jobs/example-multi-output-mode.conf --dry-run --verboseGenerate a file-to-HLS command and planned master playlist:
./bin/vtx.sh transcode --job ./jobs/example-hls.conf --dry-run --verboseGenerate a live RTMP-to-HLS command:
./bin/vtx.sh transcode --job ./jobs/example-live-hls.conf --dry-run --verboseRun multiple outputs sequentially and save detailed logs:
./bin/vtx.sh transcode --job ./jobs/example-multi-video.conf --verbose --log ./logs/multi-video.log