104 lines
3.3 KiB
Markdown
104 lines
3.3 KiB
Markdown
# VMAF Optimiser
|
|
|
|
**Intelligent Video Library Optimization Pipeline**
|
|
|
|
Automatically optimizes your video library (Movies/TV) by finding the best compression (AV1/HEVC) that maintains a high visual quality target (VMAF 93+).
|
|
|
|
## Features
|
|
|
|
- **Hybrid Encoding:**
|
|
- Uses **Hardware Acceleration** (NVIDIA NVENC, AMD AMF, Intel QSV, Apple VideoToolbox) for fast encoding.
|
|
- Uses **Software Encoding** (CPU) as a robust fallback.
|
|
- **VMAF Targeted:** Ensures visual quality matches the original (Target VMAF 93+).
|
|
- **Multi-Platform:** Runs on **Windows**, **Linux**, and **macOS**.
|
|
- **Distributed Processing:** Run multiple workers across multiple PCs sharing the same network library.
|
|
- **Safety First:**
|
|
- Locks files to prevent double-processing.
|
|
- Verifies output size and integrity before replacing.
|
|
- "Smart Resume" - skips already processed files.
|
|
|
|
---
|
|
|
|
## Directory Structure
|
|
|
|
```
|
|
VMAFOptimiser/
|
|
├── bin/ # Place ab-av1.exe here (or install to PATH)
|
|
├── logs/ # Local logs (processed, rejected, stats)
|
|
├── locks/ # Local lock files (if network not available)
|
|
├── src/
|
|
│ ├── smart_gpu_encoder.py # Main encoder engine
|
|
│ ├── smart_monitor.py # TUI Dashboard (Watchdog)
|
|
│ ├── vmaf_common.py # Shared logic
|
|
│ └── smart_encoder.py # Legacy CPU-only engine
|
|
├── run.ps1 # Windows One-Click Start
|
|
└── README.md
|
|
```
|
|
|
|
## Setup & Installation
|
|
|
|
### 1. Requirements
|
|
|
|
- **Python 3.10+**
|
|
- **FFmpeg** (with libsvtav1/libx265 and HW drivers)
|
|
- Windows: `choco install ffmpeg`
|
|
- macOS: `brew install ffmpeg`
|
|
- Linux: `sudo apt install ffmpeg`
|
|
- **ab-av1** (VMAF calculator)
|
|
- Download from [GitHub](https://github.com/alexheretic/ab-av1) and place in `bin/` OR install via `cargo install ab-av1`
|
|
|
|
### 2. Install Python Deps
|
|
|
|
```bash
|
|
pip install watchdog rich
|
|
```
|
|
|
|
### 3. Usage
|
|
|
|
#### Interactive Dashboard (Recommended)
|
|
|
|
Monitors directories and shows a TUI with progress bars.
|
|
|
|
```bash
|
|
python src/smart_monitor.py --tv-dir "Z:\tv" --content-dir "Z:\content" --jobs 2
|
|
```
|
|
|
|
#### Headless / Background (Cron/Task Scheduler)
|
|
|
|
Runs once through the library and exits.
|
|
|
|
```bash
|
|
python src/smart_gpu_encoder.py --tv-dir "Z:\tv" --content-dir "Z:\content" --jobs 4
|
|
```
|
|
|
|
---
|
|
|
|
## Multi-PC Setup
|
|
|
|
To speed up processing, you can run this script on multiple computers simultaneously pointing to the same NAS/Network Share.
|
|
|
|
1. **Map Network Drive:** Ensure `Z:\` (or whatever path) is mapped on ALL computers.
|
|
2. **Shared Locks:** The script automatically attempts to create a `.vmaf_locks` folder in the parent directory of your TV folder (e.g., `Z:\.vmaf_locks`).
|
|
3. **Run:** Start the script on PC 1, PC 2, etc. They will respect each other's locks and not process the same file.
|
|
|
|
**Note:** Logs are stored LOCALLY on each PC in the `logs/` folder to prevent network file contention.
|
|
|
|
---
|
|
|
|
## Advanced Options
|
|
|
|
| Flag | Description |
|
|
|------|-------------|
|
|
| `--jobs N` | Number of parallel encoders (Default: 2) |
|
|
| `--tv-only` | Scan only TV Shows |
|
|
| `--content-only` | Scan only Movies |
|
|
| `--skip-until "Name"` | Skip files until this keyword is found (good for resuming) |
|
|
| `--debug` | Enable verbose logging |
|
|
|
|
---
|
|
|
|
## Credits
|
|
|
|
- Powered by `ab-av1` for VMAF calculation.
|
|
- Uses `ffmpeg` for heavy lifting.
|