docs/book/src/running/command-line.md
Instructions for running Video2X from the command line.
This page does not cover all the options available. For help with more options available, run Video2X with the --help argument.
Use the following command to upscale a video by 4x with RealESRGAN:
video2x -i input.mp4 -o output.mp4 -p realesrgan -s 4 --realesrgan-model realesr-animevideov3
Use the following command to upscale a video to with libplacebo + Anime4Kv4 Mode A+A:
video2x -i input.mp4 -o output.mp4 -w 3840 -h 2160 -p libplacebo --libplacebo-shader anime4k-v4-a+a
It is possible to specify custom MPV-compatible GLSL shader files with the --libplacebo-shader argument:
video2x -i input.mp4 -o output.mp4 -p libplacebo -w 3840 -h 2160 --libplacebo-shader path/to/custom/shader.glsl
List the available GPUs with --list-gpus, -l:
$ video2x --list-gpus
0. NVIDIA RTX A6000
Type: Discrete GPU
Vulkan API Version: 1.3.289
Driver Version: 565.228.64
Select which GPU to use with the --gpu, -g argument:
video2x -i input.mp4 -o output.mp4 -p realesrgan -s 4 --realesrgan-model realesr-animevideov3 -g 1
Specify arbitrary extra FFmpeg encoder options with the --extra-encoder-options, -e argument:
video2x -i input.mkv -o output.mkv -p realesrgan --realesrgan-model realesrgan-plus -s 4 -c libx264rgb -e crf=17 -e preset=veryslow -e tune=film
Video2X uses FFmpeg's C libraries to encode videos. Encoder options are specified in two ways:
AVCodecContext struct. Below are some options set through AVCodecContext:
AVOption structs and set with the av_opt_set function. Below are some encoder-specific options for libx264:
Common options can only be set through Video2X's command line arguments. You can run video2x --help and see the Encoder options section to see the supported options.
You can specify encoder-specific options in Video2X using the --extra-encoder-option (-e) argument. To view the available options for a particular codec, run:
ffmpeg -h encoder=$ENCODER
For example, to view the available options for libx264, run:
$ ffmpeg -h encoder=libx264
Encoder libx264 [libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10]:
General capabilities: dr1 delay threads
Threading capabilities: other
Supported pixel formats: yuv420p yuvj420p yuv422p yuvj422p yuv444p yuvj444p nv12 nv16 nv21 yuv420p10le yuv422p10le yuv444p10le nv20le gray gray10le
libx264 AVOptions:
-preset <string> E..V....... Set the encoding preset (cf. x264 --fullhelp) (default "medium")
-tune <string> E..V....... Tune the encoding params (cf. x264 --fullhelp)
-profile <string> E..V....... Set profile restrictions (cf. x264 --fullhelp)
-fastfirstpass <boolean> E..V....... Use fast settings when encoding first pass (default true)
-level <string> E..V....... Specify level (as defined by Annex A)
-passlogfile <string> E..V....... Filename for 2 pass stats
-wpredp <string> E..V....... Weighted prediction for P-frames
-a53cc <boolean> E..V....... Use A53 Closed Captions (if available) (default true)
-x264opts <string> E..V....... x264 options
-crf <float> E..V....... Select the quality for constant quality mode (from -1 to FLT_MAX) (default -1)
-crf_max <float> E..V....... In CRF mode, prevents VBV from lowering quality beyond this point. (from -1 to FLT_MAX) (default -1)
-qp <int> E..V....... Constant quantization parameter rate control method (from -1 to INT_MAX) (default -1)
...
You can then set the encoder-specific options with the -e argument. The -e argument can be used multiple times to set multiple options. For example, the following arguments set the CRF to 17, the preset to veryslow, and the tune to film for libx264:
-e crf=17 -e preset=veryslow -e tune=film