## Upscale Automatically upscale and interpolate video files. ### Table of Contents - [Usage](#usage) - [Configuration](#configuration) - [Stats](#stats) - [Real-ESRGAN](#real-esrgan) - [RIFE](#rife) - [SVT-AV1](#svt-av1) - [Requirements](#requirements) - [Requirements for 1080p, 1080p@48, 4k](#requirements-for-1080p-1080p48-4k) - [Requirements for 4k48fps](#requirements-for-4k48fps) - [Installation](#installation) - [Windows](#windows) - [Arch Linux](#arch-linux) ## Usage 1. Preparing video file (MKVToolNix) - Make sure video file does NOT have an image attachment - Video file should have ONE `ass` subtitle file - Name video file similar to the following: `Your Title - 01.mkv` 2. Place `.mkv` file inside `0-Source` folder 3. Execute `python Start.py` ## Configuration The `Start.py` file has two options INSIDE, edit in text editor: - `INTERPOLATE_4K`: `True` or `False` (wether or not 4k48fps should be outputted) - `MAX_INPUT_WIDTH`: `'720'` (downscales the video to this width, as 1080p upscaling would be insane) ## Stats _Note: The VRAM usage is the one reported in `nvidia-smi` and is system wide. Subtract ~1GB for OS._ #### Real-ESRGAN | Input | Output | VRAM | RAM | GPU | FPS | OS | | :------: | :-------: | :----: | :----: | :----------: | :-------: | :------: | | 1280x720 | 2120x2880 | ~4.4GB | ~1.8GB | 3090 (@360W) | ~13.56fps | Windows | | 1280x720 | 2120x2880 | ~4.4GB | ~2.4GB | 3090 (@350W) | ~13.73fps | Linux 🐧 | #### RIFE | Input | Output | VRAM | RAM | GPU | FPS | OS | | :-------------: | :-------------: | :----: | :----: | :----------: | :----: | :------: | | 1080p 23.976fps | 1080p 47.952fps | ~6.6GB | ~4.0GB | 3090 (@360W) | ~60fps | Windows | | 1080p 23.976fps | 1080p 47.952fps | ~7.6GB | ~8.4GB | 3090 (@350W) | ~64fps | Linux 🐧 | | 2160p 23.976fps | 2160p 47.952fps | ~19.4GB | ~8.0GB | 3090 (@360W) | ~18fps | Windows | | 2160p 23.976fps | dnf | n/a | ~31.0GB (run out of memory) | 3090 (@360W) | n/a | Linux 🐧 | #### SVT-AV1 Settings: CRF 26, Preset 6. See [encodeCDN.py](/utils/encodeCDN.py). | Input | RAM | FPS | CPU | OS | | :-------: | :-----: | :-----: | :-----------------: | :------: | | 1920x1080 | ~3.9GB | ~76fps | Ryzen 7900x (@130W) | Windows | | 1920x1080 | ~4.8GB | ~80fps | Ryzen 7900x (@130W) | Linux 🐧 | | 3840x2160 | ~12.3GB | ~35fps | Ryzen 7900x (@130W) | Windows | | 3840x2160 | ~13.0GB | ~37fps | Ryzen 7900x (@130W) | Linux 🐧 | ## Requirements - **OS**: Windows or Linux - **Python**: >=3.12 (Windows) or Python 3.13 (Linux) - **RAM**: Min: 16GB - Recommended: 32GB #### Requirements for 1080p, 1080p@48, 4k - **GPU**: NVIDIA GPU with 8GB+ of VRAM #### Requirements for 4k48fps - **GPU**: NVIDIA GPU with 24GB of VRAM - **RAM** (Linux): 48GB (there is a memory leak in VapourSynth) ## Installation #### Windows 1. Download and install [Python 3.12](https://www.python.org/ftp/python/3.12.8/python-3.12.8-amd64.exe) - Check option to add to path 2. Download and install [Imagemagick](https://imagemagick.org/script/download.php#windows) - Check option to install legacy tools (Required for creating player previews `thumbs.vtt` and `sprite.jpg`) 3. Download and install [MKVToolNix](https://mkvtoolnix.download/downloads.html#windows) - **Add to system path environment manually** 4. Download [ffmpeg](https://www.gyan.dev/ffmpeg/builds/#release-builds) - Either place it inside the MKVToolNix install directory or create a new directory somewhere and **add it to system path environment** 5. Download and install [VapourSynth R72](https://github.com/vapoursynth/vapoursynth/releases) - Check options to install vsrepo, avisynth support not required 6. Install `vsrepo` packages, in Terminal (cmd, NOT Powershell!): ```cmd :: FFmpeg Source Plugin vsrepo.py install ffms2 :: (optional) Miscfilters Plugin, used for scenedetection in vsrife :: Unsure if it even works vsrepo.py install misc ``` 7. Install `pip` packages ```cmd pip install packaging setuptools wheel pip install pymediainfo python-dateutil pip install torch torchvision --index-url https://download.pytorch.org/whl/cu126 pip install vsrealesrgan vsrife ``` 8. Install models used by `vsrealesrgan` and `vsrife` ```ps python -m vsrealesrgan python -m vsrife ``` #### Arch Linux Sadly there is some sort of memory leak in vsrife or vapoursynth under Linux. If you have 32GB of RAM it should suffice for everything EXCEPT 4k48p, there you probably need 48GB or 64GB of RAM. ```bash # System Packages sudo pacman -S python vapoursynth ffms2 ffmpeg mkvtoolnix-cli mediainfo imagemagick # Setup virtual environment (in upscale dirctory) python -m venv .venv source .venv/bin/activate # Install pip dependencies pip install typing-extensions packaging setuptools wheel pip install pymediainfo python-dateutil pip install torch torchvision --index-url https://download.pytorch.org/whl/cu126 pip install vsrealesrgan vsrife # Install models python -m vsrealesrgan python -m vsrife ```