diff --git a/Readme.md b/Readme.md index e8e9139..80c5ebd 100644 --- a/Readme.md +++ b/Readme.md @@ -1,116 +1,123 @@ -## 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 - -#### Real-ESRGAN -| Input | Output | VRAM | RAM | GPU | FPS | OS | -| :------: | :-------: | :----: | :----: | :----------: | :-------: | :-----: | -| 1280x720 | 2120x2880 | ~4.4GB | ~1,8GB | 3090 (@360W) | ~13.56fps | Windows | - -#### RIFE -| Input | Output | VRAM | RAM | GPU | FPS | OS | -| :----------: | :----------: | :----: | :----: | :----------: | :----: | :-----: | -| 1080p@23.976 | 1080p@47.952 | ~6.6GB | ~4.0GB | 3090 (@360W) | ~60fps | Windows | -| 2160p@23.976 | 2160p@47.952 | ~19.4GB | ~8.0GB | 3090 (@360W) | ~18fps | Windows | - -#### 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 | -| 3840x2160 | ~12.3GB | ~35fps | Ryzen 7900x (@130W) | Windows | - -## 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 +## 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 ``` \ No newline at end of file