AI Video Enhancer Studio
Reference, version 2026.7.21

AI Video Enhancer Studio CLI and MCP reference

aivideoenhancer is the command line of AI Video Enhancer Studio, installed with the desktop app. aivideoenhancer serve runs its MCP server for AI agents. This page lists every command, option, exit code and MCP tool.

aivideoenhancer <command> [arguments] [options]
aivideoenhancer enhance tape.avi -o restored --preset tape_restoration

Generated from aivideoenhancer catalog, version 2026.7.21. Every command also has --help. Older spellings of some commands and options still work, so existing scripts keep running, but this page and --help leave them out. The same reference is on GitHub: cli.md and mcp-server.md.

Commands

CommandWhat it does
aivideoenhancer batch <input>Enhance every video in a folder (enhance with folder filters).
aivideoenhancer catalogPrint every CLI command and MCP tool as JSON (for AI agents, docs and the website).
aivideoenhancer diagnoseGenerate a freeze-diagnostic zip (forensic log + Windows Event Log + GPU state).
aivideoenhancer enhance <input>Enhance video files with AI.
aivideoenhancer extract-frames <input> --output <output>Extract still frames from video(s) (optionally AI-upscale).
aivideoenhancer formatsList the video containers it reads and writes, the output codecs and the still formats.
aivideoenhancer info <file>Show a video file's metadata: codec, resolution, duration, frame rate, bitrate, audio, HDR.
aivideoenhancer presetsList available enhancement presets.
aivideoenhancer register <email> <key>Register your license key.
aivideoenhancer remixSuggest and render highlight-reel remixes from a video.
aivideoenhancer remix render <input> --clips <clips> --output <output>Render clip ranges into one H.264 MP4.
aivideoenhancer remix suggest <input>Suggest highlight clip ranges via scene detection.
aivideoenhancer serveStart MCP server for AI agent integration.
aivideoenhancer statusShow system status, GPU capabilities and license / trial state.
aivideoenhancer watch <input>Watch a folder and enhance each video that arrives (until Ctrl+C).

Output options

These options work the same way in the four ContentaSoft command lines. catalog and serve take none of them: catalog always prints JSON and serve keeps stdout for the MCP protocol.

OptionDescription
--jsonPrint one JSON object on stdout (success, exitCode, error, warnings, errors, outputs + the command's fields); nothing else goes to stdout.
--plainPlain text: no colours, no escape codes, ASCII tables. Automatic when stdout is a pipe or a file, or when NO_COLOR is set.
--quietPrint errors only.
--verboseVerbose output: details and, on an error, the stack trace.
--progressWith --json: before the result object, one line per finished item, {"type":"progress","file":NAME,"completed":N,"total":T}.

Exit codes

The same table in the four ContentaSoft command lines. --help ends with it and catalog lists it.

CodeNameMeaning
0okOK: everything asked for was done.
1unexpected_errorUnexpected error (a bug or a broken install); see the log.
2invalid_argumentsInvalid arguments: unknown option, missing or malformed value; nothing was done.
3input_not_foundInput not found or unreadable; nothing was done.
4partial_failurePartial failure: some items succeeded, some failed.
5all_failedAll failed: no item succeeded.
6license_refusedLicense or trial refused the run.
130cancelledCancelled (Ctrl+C).

JSON output

With --json a command prints one JSON object on stdout and nothing else; logs go to stderr. Every object has these keys, beside the fields of the command itself:

KeyMeaning
successtrue when the run did everything it was asked to do
exitCodethe process exit code (see Exit codes)
errorone sentence when the run failed, otherwise null
warningsnotes about the run that did not stop it
errorsone entry per item that failed (a batch keeps going)
outputsthe files the run wrote

Trial keys, present only when they apply:

KeyMeaning
trialWatermarkedthe output carries the trial watermark
trialExportthe output is a trial export
trialNoticeone sentence about the trial, for the user
freeFilesRemainingfree full-quality files left on this computer
buyUrlwhere to buy a licence

With --json --progress a long command first prints one progress line per finished item (NDJSON), then the result object last. A script that wants only the result skips the lines that start with {"type":"progress". Progress keys:

KeyMeaning
typealways "progress"
filethe file that finished
completeditems finished so far
totalitems in the run

Command reference

aivideoenhancer batch

Enhance every video in a folder (enhance with folder filters).

aivideoenhancer batch <input> [options]
ArgumentDescription
<input>Folder of videos to enhance.
OptionTypeDescription
--outputstringOutput directory (default: beside each source).
--presetstringPreset name (e.g. tape_restoration for VHS/Hi8/MiniDV captures: CPU only, no graphics card needed; presets lists them all). With the other presets an interlaced source (DV, DVD, TV capture) gets --deinterlace yadif automatically unless you pass --deinterlace yourself.
--profilestringLoad the enhancement settings from a JSON file (the EnhancementProfile fields, e.g. {"upscale":"X2","denoise":"Light","outputCodec":"H265","crfValue":18}); the options below override it. Not with --preset.
--upscalestringUpscale: off|enhance|x2|x3|x4 (enhance = clean up at same resolution).
--denoisestringDenoise: off|light|medium|strong.
--denoise-methodstringDenoise method: nlmeans|hqdn3d|chroma (default: hqdn3d; chroma = colour noise reduced much harder than luma, for tape).
--stabilizestringStabilize: off|light|medium|strong.
--deinterlacestringDeinterlace: off|yadif|yadifbob|bwdif|bwdifbob (bwdifbob = full motion: one frame per field, 25i becomes 50p, 29.97i becomes 59.94p). With --preset and no --deinterlace, interlaced sources get yadif; --deinterlace off keeps it off.
--sharpenstringSharpen: off|light|medium|strong.
--rolling-shutterstringRolling-shutter (jello) correction: off|light|medium|strong.
--interpolatestringTarget frame rate for smoother motion (RIFE): off|30|60. Only raises the rate — a clip already at/above the target is left unchanged.
--codecstringOutput codec: h264|h265|av1|vp9.
--crfintegerQuality (CRF value, 1-51, lower=better).
--upscale-tileintegerUpscale tile size override (0=auto). Accepted for script compatibility; NVIDIA Video Super Resolution has no tiles and ignores it.
--frame-batchintegerFrames per AI-runner invocation (0=auto, the default: sized from free VRAM).
--temp-dirstringScratch folder for frame extraction / interpolation temp data (default: the desktop app's Settings value, or system temp).
--skip-existingbooleanLeave a video alone when its output file already exists (default: write a renamed copy beside it). A skipped video is not enhanced and costs no free file.
--overwritebooleanReplace an output file that already exists (default: write a renamed copy beside it). Not with --skip-existing.
--comparebooleanAlso write a side-by-side before/after video (source left, enhanced right, labelled underneath) next to each output as <name>_compare.mp4.
--compare-labelsstringCustom labels for --compare, as "FIRST|SECOND" (default: "BEFORE|AFTER").
--compare-layoutstringLayout for --compare: horizontal|vertical. horizontal (default) = side by side; vertical = stacked top/bottom, which avoids the very wide 32:9 frame two 16:9 panels make side by side.
--compare-secondsnumberLength of the --compare video in seconds, taken a third of the way into the video (default: the whole video; 30 gives a short clip to show a customer).
--humstringRemove mains hum from the audio: off|auto|50|60 (notches at the mains frequency and its harmonics; auto = 50 Hz for a 25/50 fps picture, 60 Hz for 29.97/59.94). Used with a preset or another enhancement option; the audio is re-encoded.
--crop-bottombooleanWith --preset tape_restoration: crop the head-switching noise band at the bottom of a VHS/Video8/Hi8 capture (12 lines of 576, 8 of 480). The picture keeps its proportions, it is not stretched to fill.
--stabilize-keepstringWith --stabilize (or a preset that stabilizes): keep at least this percent of the picture, 50-100, or auto (default). Stabilizing zooms in to hide the moving edge, by as much as the shake needs; a limit stops the zoom there and leaves the part of the movement it has no room for. 100 = no zoom at all, the edge of the picture then moves.
--hdrstringHDR10 / HLG sources: keep|sdr (default: keep). keep = the output stays 10-bit HDR when the job has no AI stage, no stabilization, no rolling-shutter correction and no NLMeans denoise, and the codec is h265, av1 or vp9; otherwise the picture is tone-mapped to SDR and a line says so. sdr = always tone-map to SDR (BT.709).
--upscale-enginestringWhat upscales x2|x3|x4: auto|rtx|standard. auto (default) = NVIDIA RTX Video Super Resolution where it can run, otherwise the standard upscaler (Lanczos resize + sharpening on the CPU, not AI; any PC). The engine is printed before the job starts.
--includestring[]Only videos matching this pattern (e.g. *.mp4, or mp4;mov); repeat the option or separate patterns with ';' or ','.
--excludestring[]Leave out videos whose name matches (same pattern forms as --include).
--recursivebooleanInclude subfolders (the output folder is never searched when it is inside the input).
--workersintegerVideos enhanced at the same time (default 1; AI stages share one GPU, so more rarely helps).
--reportstringWrite a CSV report, one row per video (input, status, output, trial_watermarked, error), to this file.

Output options: --json, --plain, --quiet, --verbose, --progress.

aivideoenhancer catalog

Print every CLI command and MCP tool as JSON (for AI agents, docs and the website).

aivideoenhancer catalog

aivideoenhancer diagnose

Generate a freeze-diagnostic zip (forensic log + Windows Event Log + GPU state).

aivideoenhancer diagnose

Output options: --json, --plain, --quiet, --verbose, --progress.

aivideoenhancer enhance

Enhance video files with AI.

aivideoenhancer enhance <input> [options]
ArgumentDescription
<input>Input video file or directory (a directory is searched with its subfolders; batch has the folder filters).
OptionTypeDescription
--outputstringOutput directory (default: beside each source).
--presetstringPreset name (e.g. tape_restoration for VHS/Hi8/MiniDV captures: CPU only, no graphics card needed; presets lists them all). With the other presets an interlaced source (DV, DVD, TV capture) gets --deinterlace yadif automatically unless you pass --deinterlace yourself.
--profilestringLoad the enhancement settings from a JSON file (the EnhancementProfile fields, e.g. {"upscale":"X2","denoise":"Light","outputCodec":"H265","crfValue":18}); the options below override it. Not with --preset.
--upscalestringUpscale: off|enhance|x2|x3|x4 (enhance = clean up at same resolution).
--denoisestringDenoise: off|light|medium|strong.
--denoise-methodstringDenoise method: nlmeans|hqdn3d|chroma (default: hqdn3d; chroma = colour noise reduced much harder than luma, for tape).
--stabilizestringStabilize: off|light|medium|strong.
--deinterlacestringDeinterlace: off|yadif|yadifbob|bwdif|bwdifbob (bwdifbob = full motion: one frame per field, 25i becomes 50p, 29.97i becomes 59.94p). With --preset and no --deinterlace, interlaced sources get yadif; --deinterlace off keeps it off.
--sharpenstringSharpen: off|light|medium|strong.
--rolling-shutterstringRolling-shutter (jello) correction: off|light|medium|strong.
--interpolatestringTarget frame rate for smoother motion (RIFE): off|30|60. Only raises the rate — a clip already at/above the target is left unchanged.
--codecstringOutput codec: h264|h265|av1|vp9.
--crfintegerQuality (CRF value, 1-51, lower=better).
--upscale-tileintegerUpscale tile size override (0=auto). Accepted for script compatibility; NVIDIA Video Super Resolution has no tiles and ignores it.
--frame-batchintegerFrames per AI-runner invocation (0=auto, the default: sized from free VRAM).
--temp-dirstringScratch folder for frame extraction / interpolation temp data (default: the desktop app's Settings value, or system temp).
--skip-existingbooleanLeave a video alone when its output file already exists (default: write a renamed copy beside it). A skipped video is not enhanced and costs no free file.
--overwritebooleanReplace an output file that already exists (default: write a renamed copy beside it). Not with --skip-existing.
--comparebooleanAlso write a side-by-side before/after video (source left, enhanced right, labelled underneath) next to each output as <name>_compare.mp4.
--compare-labelsstringCustom labels for --compare, as "FIRST|SECOND" (default: "BEFORE|AFTER").
--compare-layoutstringLayout for --compare: horizontal|vertical. horizontal (default) = side by side; vertical = stacked top/bottom, which avoids the very wide 32:9 frame two 16:9 panels make side by side.
--compare-secondsnumberLength of the --compare video in seconds, taken a third of the way into the video (default: the whole video; 30 gives a short clip to show a customer).
--clipstringExport only a 10-second clip starting at this time (seconds, or m:ss / h:mm:ss) of ONE input file, named <name>-clip. On the trial a clip is clean and full resolution and does not use a free export; clips from one video can cover up to 30 seconds a day.
--humstringRemove mains hum from the audio: off|auto|50|60 (notches at the mains frequency and its harmonics; auto = 50 Hz for a 25/50 fps picture, 60 Hz for 29.97/59.94). Used with a preset or another enhancement option; the audio is re-encoded.
--crop-bottombooleanWith --preset tape_restoration: crop the head-switching noise band at the bottom of a VHS/Video8/Hi8 capture (12 lines of 576, 8 of 480). The picture keeps its proportions, it is not stretched to fill.
--stabilize-keepstringWith --stabilize (or a preset that stabilizes): keep at least this percent of the picture, 50-100, or auto (default). Stabilizing zooms in to hide the moving edge, by as much as the shake needs; a limit stops the zoom there and leaves the part of the movement it has no room for. 100 = no zoom at all, the edge of the picture then moves.
--hdrstringHDR10 / HLG sources: keep|sdr (default: keep). keep = the output stays 10-bit HDR when the job has no AI stage, no stabilization, no rolling-shutter correction and no NLMeans denoise, and the codec is h265, av1 or vp9; otherwise the picture is tone-mapped to SDR and a line says so. sdr = always tone-map to SDR (BT.709).
--upscale-enginestringWhat upscales x2|x3|x4: auto|rtx|standard. auto (default) = NVIDIA RTX Video Super Resolution where it can run, otherwise the standard upscaler (Lanczos resize + sharpening on the CPU, not AI; any PC). The engine is printed before the job starts.

Output options: --json, --plain, --quiet, --verbose, --progress.

aivideoenhancer extract-frames

Extract still frames from video(s) (optionally AI-upscale).

aivideoenhancer extract-frames <input> --output <output> [options]
ArgumentDescription
<input>Input video file or directory.
OptionTypeDescription
--outputstring, requiredOutput root directory (per-video subfolders created).
--presetstringSampling preset: storyboard|thumbnails|social|scenes|custom (scenes = one frame per detected scene change).
--countintegerEvenly spaced frame count (implies custom even strategy); with --preset scenes it caps the top-N scenes by score.
--timestampsstringComma-separated seek positions in seconds (the same positions for every video).
--upscalestringUpscale: off|enhance|x2|x3|x4 (default: off).
--auto-upscale-belowintegerIf >0 and --upscale off, use x2 when height is below this (0=off).
--formatenumStill format: png (lossless, default), jpg or webp.
--qualityintegerLossy quality 1-100 for jpg/webp (default 90; ignored for png).
--sharpestbooleanPer frame, compare 5 nearby candidates (+/-0.4s, +/-0.2s, exact) by Laplacian-variance sharpness and keep the sharpest (~5x extra small seeks per frame).

Output options: --json, --plain, --quiet, --verbose, --progress.

aivideoenhancer formats

List the video containers it reads and writes, the output codecs and the still formats.

aivideoenhancer formats [options]
OptionTypeDescription
--inputbooleanShow only what is read.
--outputbooleanShow only what is written.

Output options: --json, --plain, --quiet, --verbose, --progress.

aivideoenhancer info

Show a video file's metadata: codec, resolution, duration, frame rate, bitrate, audio, HDR.

aivideoenhancer info <file>
ArgumentDescription
<file>Video file to inspect.

Output options: --json, --plain, --quiet, --verbose, --progress.

aivideoenhancer presets

List available enhancement presets.

aivideoenhancer presets

Output options: --json, --plain, --quiet, --verbose, --progress.

aivideoenhancer register

Register your license key.

aivideoenhancer register <email> <key>
ArgumentDescription
<email>Registration email.
<key>License key.

Output options: --json, --plain, --quiet, --verbose, --progress.

aivideoenhancer remix

Suggest and render highlight-reel remixes from a video.

Subcommands: remix render, remix suggest.

aivideoenhancer remix render

Render clip ranges into one H.264 MP4.

aivideoenhancer remix render <input> --clips <clips> --output <output> [options]
ArgumentDescription
<input>Input video file.
OptionTypeDescription
--clipsstring, requiredClip ranges: "start-end,start-end,..." (sec or hh:mm:ss).
--outputstring, requiredOutput MP4 path.
--max-durationnumberCap total output length (seconds).
--mutebooleanDrop audio.
--widthintegerScale output to this width (height auto, even).
--aspectenumCenter-crop to an aspect ratio: original, 9:16 (vertical Shorts/Reels), 1:1 (square) or 16:9 (wide).
--musicstringBackground music audio file (mp3/wav/m4a/flac); looped to cover the reel, 2s fade-out at the end.
--music-volumeintegerMusic volume 0-100 (default 30).
--duckbooleanDuck the music under the original audio (sidechain compression); needs source audio, ignored with --mute.

aivideoenhancer remix suggest

Suggest highlight clip ranges via scene detection.

aivideoenhancer remix suggest <input> [options]
ArgumentDescription
<input>Input video file.
OptionTypeDescription
--durationnumberTarget total highlight duration in seconds.
--clipsintegerNumber of clips (default derived from --duration, 5-8).
--window-startstringAnalysis window start (sec or hh:mm:ss); required for videos > 4 hours.
--window-endstringAnalysis window end (sec or hh:mm:ss); defaults to start + up to 4 hours.
--min-clipnumberMinimum clip length (seconds).
--max-clipnumberMaximum clip length (seconds).
--thresholdnumberScene-detection threshold 0-100 (higher = fewer cuts).
--audio-weightnumberBlend weight 0-1 for audio-loudness spikes vs scene changes (0 = scene detection only); finds loud moments in static-camera footage.

aivideoenhancer serve

Start MCP server for AI agent integration.

aivideoenhancer serve

aivideoenhancer status

Show system status, GPU capabilities and license / trial state.

aivideoenhancer status

Output options: --json, --plain, --quiet, --verbose, --progress.

aivideoenhancer watch

Watch a folder and enhance each video that arrives (until Ctrl+C).

aivideoenhancer watch <input> [options]
ArgumentDescription
<input>Folder to watch.
OptionTypeDescription
--outputstringOutput directory (default: beside each source).
--presetstringPreset name (e.g. tape_restoration for VHS/Hi8/MiniDV captures: CPU only, no graphics card needed; presets lists them all). With the other presets an interlaced source (DV, DVD, TV capture) gets --deinterlace yadif automatically unless you pass --deinterlace yourself.
--profilestringLoad the enhancement settings from a JSON file (the EnhancementProfile fields, e.g. {"upscale":"X2","denoise":"Light","outputCodec":"H265","crfValue":18}); the options below override it. Not with --preset.
--upscalestringUpscale: off|enhance|x2|x3|x4 (enhance = clean up at same resolution).
--denoisestringDenoise: off|light|medium|strong.
--denoise-methodstringDenoise method: nlmeans|hqdn3d|chroma (default: hqdn3d; chroma = colour noise reduced much harder than luma, for tape).
--stabilizestringStabilize: off|light|medium|strong.
--deinterlacestringDeinterlace: off|yadif|yadifbob|bwdif|bwdifbob (bwdifbob = full motion: one frame per field, 25i becomes 50p, 29.97i becomes 59.94p). With --preset and no --deinterlace, interlaced sources get yadif; --deinterlace off keeps it off.
--sharpenstringSharpen: off|light|medium|strong.
--rolling-shutterstringRolling-shutter (jello) correction: off|light|medium|strong.
--interpolatestringTarget frame rate for smoother motion (RIFE): off|30|60. Only raises the rate — a clip already at/above the target is left unchanged.
--codecstringOutput codec: h264|h265|av1|vp9.
--crfintegerQuality (CRF value, 1-51, lower=better).
--upscale-tileintegerUpscale tile size override (0=auto). Accepted for script compatibility; NVIDIA Video Super Resolution has no tiles and ignores it.
--frame-batchintegerFrames per AI-runner invocation (0=auto, the default: sized from free VRAM).
--temp-dirstringScratch folder for frame extraction / interpolation temp data (default: the desktop app's Settings value, or system temp).
--skip-existingbooleanLeave a video alone when its output file already exists (default: write a renamed copy beside it). A skipped video is not enhanced and costs no free file.
--overwritebooleanReplace an output file that already exists (default: write a renamed copy beside it). Not with --skip-existing.
--comparebooleanAlso write a side-by-side before/after video (source left, enhanced right, labelled underneath) next to each output as <name>_compare.mp4.
--compare-labelsstringCustom labels for --compare, as "FIRST|SECOND" (default: "BEFORE|AFTER").
--compare-layoutstringLayout for --compare: horizontal|vertical. horizontal (default) = side by side; vertical = stacked top/bottom, which avoids the very wide 32:9 frame two 16:9 panels make side by side.
--compare-secondsnumberLength of the --compare video in seconds, taken a third of the way into the video (default: the whole video; 30 gives a short clip to show a customer).
--humstringRemove mains hum from the audio: off|auto|50|60 (notches at the mains frequency and its harmonics; auto = 50 Hz for a 25/50 fps picture, 60 Hz for 29.97/59.94). Used with a preset or another enhancement option; the audio is re-encoded.
--crop-bottombooleanWith --preset tape_restoration: crop the head-switching noise band at the bottom of a VHS/Video8/Hi8 capture (12 lines of 576, 8 of 480). The picture keeps its proportions, it is not stretched to fill.
--stabilize-keepstringWith --stabilize (or a preset that stabilizes): keep at least this percent of the picture, 50-100, or auto (default). Stabilizing zooms in to hide the moving edge, by as much as the shake needs; a limit stops the zoom there and leaves the part of the movement it has no room for. 100 = no zoom at all, the edge of the picture then moves.
--hdrstringHDR10 / HLG sources: keep|sdr (default: keep). keep = the output stays 10-bit HDR when the job has no AI stage, no stabilization, no rolling-shutter correction and no NLMeans denoise, and the codec is h265, av1 or vp9; otherwise the picture is tone-mapped to SDR and a line says so. sdr = always tone-map to SDR (BT.709).
--upscale-enginestringWhat upscales x2|x3|x4: auto|rtx|standard. auto (default) = NVIDIA RTX Video Super Resolution where it can run, otherwise the standard upscaler (Lanczos resize + sharpening on the CPU, not AI; any PC). The engine is printed before the job starts.
--includestring[]Only videos matching this pattern (e.g. *.mp4, or mp4;mov); repeat the option or separate patterns with ';' or ','.
--excludestring[]Leave out videos whose name matches (same pattern forms as --include).
--recursivebooleanWatch subfolders too (the output folder is never watched when it is inside the input).
--intervalintegerSeconds between two looks at the folder (default 10, at least 2). A new file is taken once it held still for one interval.
--reportstringWhen the watch stops, write a CSV report, one row per video (input, status, output, trial_watermarked, error), to this file.

Output options: --json, --plain, --quiet, --verbose, --progress.

MCP server

aivideoenhancer serve exposes 6 tools over the Model Context Protocol (stdio, newline-delimited JSON-RPC 2.0; protocol versions 2025-11-25, 2025-06-18, 2025-03-26 and 2024-11-05), so an AI agent such as Claude Code, Claude Desktop, Cursor or Codex can work on files on your PC. Server name: ai-video-enhancer. Pass absolute paths to every tool.

{
  "mcpServers": {
    "ai-video-enhancer": {
      "command": "aivideoenhancer",
      "args": [
        "serve"
      ]
    }
  }
}

In Claude Code one command adds it: claude mcp add ai-video-enhancer -- aivideoenhancer serve. Stdout carries JSON-RPC only, ping is answered while a tool runs, notifications/cancelled stops a running call, and a tool that cannot do its job returns isError: true with a sentence that names the problem.

ToolTitleRead-onlyDestructiveIdempotentNetwork
enhance_videoEnhance videonononono
get_file_infoGet video file infoyesnoyesno
get_license_statusGet license and trial statusyesnoyesno
get_statusGet GPU and license statusyesnoyesno
list_formatsList formatsyesnoyesno
list_presetsList presetsyesnoyesno

Destructive: the tool can replace a file that already exists. Network: the tool uses the internet.

enhance_video

writes files

Enhance video. Enhance a video using AI upscaling, frame interpolation, stabilization, and denoising.

ParameterTypeRequiredDescription
input_pathstringyesAbsolute path to the input video file.
output_pathstringnoOutput file path (ending .mp4, .mov or .mkv) or output directory; a relative path is resolved from the server's working directory (default: same directory as input).
presetstringnoPreset ID: tape_restoration (VHS, Video8, Hi8 and MiniDV captures: full-motion deinterlace to 50p/59.94p, colour noise and hum removal, square-pixel 4:3; CPU only, no graphics card needed), old_video_restoration, surveillance_enhancement, content_creation, drone_action_cam, animation_anime, video_archival, enhance_cleanup, smooth_motion. list_presets says what each one needs from the PC.
upscalestringnoUpscale mode: off, enhance (same-resolution cleanup), x2, x3, x4. One of: off, enhance, x2, x3, x4.
upscale_enginestringnoWhat upscales x2, x3, x4: auto (default: NVIDIA RTX Video Super Resolution where it can run, otherwise the standard upscaler), rtx, standard (Lanczos resize + sharpening on the CPU, not AI; any PC). The result carries upscaleEngine. One of: auto, rtx, standard.
denoisestringnoDenoise level: off, light, medium, strong. One of: off, light, medium, strong.
stabilizestringnoStabilization level: off, light, medium, strong. One of: off, light, medium, strong.
stabilize_keepintegernoWith stabilize (or a preset that stabilizes): keep at least this percent of the picture, 50-100. Stabilizing zooms in to hide the moving edge, by as much as the shake needs; a limit stops the zoom there and leaves the part of the movement it has no room for. 100 = no zoom at all, the edge of the picture then moves. Leave it out to let the stabilizer choose. Range: 50 to 100.
deinterlacestringnoDeinterlace: off, yadif, yadifbob, bwdif, bwdifbob (full motion: one frame per field, 25i becomes 50p). With a preset and no deinterlace value, an interlaced source (DV, DVD, TV capture) gets yadif automatically; pass off to keep it off. One of: off, yadif, yadifbob, bwdif, bwdifbob.
denoise_methodstringnoDenoise method: hqdn3d (default), nlmeans, chroma (colour noise reduced much harder than luma, for tape). One of: hqdn3d, nlmeans, chroma.
humstringnoRemove mains hum from the audio: off, auto (50 Hz for a 25/50 fps picture, 60 Hz for 29.97/59.94), 50, 60. Used with a preset or another enhancement; the audio is re-encoded. One of: off, auto, 50, 60.
crop_bottombooleannoWith preset tape_restoration: crop the head-switching noise band at the bottom of a VHS/Video8/Hi8 capture (12 lines of 576, 8 of 480); the picture keeps its proportions.
sharpenstringnoSharpen: off, light, medium, strong. One of: off, light, medium, strong.
rolling_shutterstringnoRolling-shutter (jello) correction: off, light, medium, strong. One of: off, light, medium, strong.
interpolatestringnoTarget frame rate for smoother motion (RIFE): off, 30, 60. Only raises the rate — a clip already at/above the target is left unchanged. One of: off, 30, 60.
codecstringnoOutput codec: h264, h265, av1, vp9. One of: h264, h265, av1, vp9.
hdrstringnoHDR10 / HLG sources: keep (default) or sdr. keep = the output stays 10-bit HDR when the job has no AI stage (upscale, interpolate), no stabilize, no rolling_shutter and no nlmeans denoise, and the codec is h265, av1 or vp9; otherwise the picture is tone-mapped to SDR. sdr = always tone-map to SDR (BT.709). hdrNotice in the result says what was done. One of: keep, sdr.
crfintegernoQuality (CRF value, 1-51, lower = better quality, default: 18). Range: 1 to 51.
skip_existingbooleannoLeave the video alone when its output file already exists (default: write a renamed copy beside it). A skipped video is not enhanced and costs no free file.
overwritebooleannoReplace the output file when it already exists (default: write a renamed copy beside it). Not with skip_existing.
clipstringnoExport only a 10-second clip starting at this time (seconds such as 42 or 42.5, or m:ss / h:mm:ss such as 1:05) instead of the whole video, named <name>-clip; the result carries clipPath. On the trial a clip is clean and full resolution and does not use a free export; clips from one video can cover up to 30 seconds a day.
comparebooleannoAlso write a side-by-side before/after video (source and enhanced, labelled) next to each output as <name>_compare.mp4; the result carries comparePaths.
compare_labelsstringnoCustom labels for compare, as "FIRST|SECOND" (default: "BEFORE|AFTER").
compare_secondsnumbernoLength of the compare video in seconds, taken a third of the way into the video (default 0: the whole video; 30 gives a short clip to show a customer). Range: 0 to 3600.
compare_layoutstringnoLayout for compare: horizontal (default, side by side) or vertical (stacked top/bottom, avoids the very wide 32:9 frame two 16:9 panels make side by side). One of: horizontal, vertical.

get_file_info

read-onlyidempotent

Get video file info. Get a video file's metadata: codec, resolution, duration, bitrate, frame rate, audio, HDR (and what enhance_video will do with the HDR).

ParameterTypeRequiredDescription
input_pathstringyesAbsolute path to the video file.

get_license_status

read-onlyidempotent

Get license and trial status. Get the license and trial state before enhancing: registered or trial, free full exports left (freeFilesRemaining), and what exports become after the free ones (afterFreeFiles: watermark_720p = a watermark and output capped at 1280x720; 10-second clips are never branded). nextOutput says what the next full export will be: clean or watermark_720p.

No parameters.

get_status

read-onlyidempotent

Get GPU and license status. Get system status including GPU capabilities, available tools, and license state.

No parameters.

list_formats

read-onlyidempotent

List formats. List the video containers AI Video Enhancer reads and writes, the output codecs (enhance_video codec) and the still formats of frame extraction: format, extensions, canImport, canExport, category.

ParameterTypeRequiredDescription
input_onlybooleannoOnly what is read (the CLI's --input).
output_onlybooleannoOnly what is written (the CLI's --output).

list_presets

read-onlyidempotent

List presets. List available video enhancement presets.

No parameters.