123 lines
5.3 KiB
Markdown
123 lines
5.3 KiB
Markdown
## 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 | <span style="color:red">~19.4GB</span> | ~8.0GB | 3090 (@360W) | ~18fps | Windows |
|
|
| 2160p 23.976fps | dnf | n/a | <span style="color:red">~31.0GB (run out of memory)</span> | 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 | <span style="color:gold">~12.3GB</span> | ~35fps | Ryzen 7900x (@130W) | Windows |
|
|
| 3840x2160 | <span style="color:gold">~13.0GB</span> | ~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
|
|
``` |