First Public Release!
This commit is contained in:
@@ -1,2 +1,83 @@
|
||||
# hevc-encoder
|
||||
# HEVC Re-Encode Dashboard & Worker
|
||||
|
||||
A lightweight, self-hosted web dashboard and queue worker for scanning media libraries and transcoding video files to **HEVC MKV** with selectable audio handling.
|
||||
|
||||
It includes a modern dark dashboard, server-side CPU/GPU detection, folder browsers, live logs, safe rename and remux handling, and an optional force re-encode mode for normalizing an entire library.
|
||||
|
||||
---
|
||||
|
||||
## Features
|
||||
|
||||
- 🖥️ **Cross-Platform Support**: Runs on Windows and Linux hosts.
|
||||
- ⚙️ **Zero Hardcoded Paths**: Configure Media and Temporary directories directly inside the dashboard.
|
||||
- 🧬 **Hardware Detection**: Automatically queries and displays the host CPU and GPU names.
|
||||
- 🎥 **Video Encoders**: Support for CPU `libx265`, NVIDIA NVENC, AMD AMF, and Intel QSV.
|
||||
- 🎵 **Audio Handling**: Copy original audio, keep source-aware audio behavior, or transcode to AAC/AC3.
|
||||
- 🔁 **Force Re-encode Mode**: Re-encode files to HEVC plus the selected audio codec even when the output is not smaller.
|
||||
- 🏷️ **Optional Safe Renaming**: Rename outputs to Plex/Radarr/Sonarr-friendly names while preserving the library structure.
|
||||
- 🧱 **Remux Support**: Remux compatible files to MKV without re-encoding when possible.
|
||||
- 🔧 **Custom Binaries**: Set custom FFmpeg and FFprobe paths from the UI.
|
||||
- ⚡ **Auto-detected Worker Threads**: Recommends a thread count based on CPU cores, with manual override.
|
||||
- 🔔 **Discord Webhooks**: Sends structured completion embeds with a built-in test button.
|
||||
- 📁 **Filesystem Browser Modal**: Browse drives and directories to choose media and temp folders.
|
||||
- 📈 **Real-Time Progress & Logs**: Shows FPS, speed, ETA, progress bars, and live worker logs.
|
||||
- 🧹 **Safe Move and Temp Cleanup**: Handles cross-filesystem moves and cleans up failed temp outputs.
|
||||
|
||||
---
|
||||
|
||||
## Installation & Setup
|
||||
|
||||
Before running, ensure **Python 3, FFmpeg, and FFprobe** are installed on the host machine.
|
||||
If you use the `start_dashboard.sh` script on Linux, it will attempt to **automatically detect your OS and install missing dependencies**!
|
||||
|
||||
- **Windows**: Download from [gyan.dev](https://www.gyan.dev/ffmpeg/builds/) and add its `bin` folder to your system environment variables (`PATH`), or set custom paths in the Dashboard UI.
|
||||
- **Linux (CachyOS / Arch)**:
|
||||
```bash
|
||||
sudo pacman -Sy python ffmpeg
|
||||
```
|
||||
- **Linux (Debian / Ubuntu)**:
|
||||
```bash
|
||||
sudo apt update && sudo apt install -y python3 python3-venv ffmpeg
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## How to Run
|
||||
|
||||
### Windows
|
||||
|
||||
1. Double-click the `start_dashboard.bat` script in this repository.
|
||||
- This automatically creates virtual environments, installs lightweight dependencies (`Flask`, `Flask-CORS`, `requests`), and launches the worker API (port 5001) and web dashboard (port 5000).
|
||||
2. Open your browser and go to **http://localhost:5000**.
|
||||
|
||||
### Linux
|
||||
|
||||
1. Make the startup script executable and run it:
|
||||
```bash
|
||||
chmod +x start_dashboard.sh
|
||||
./start_dashboard.sh
|
||||
```
|
||||
|
||||
- This launches the worker API in the background (logging output to `server/worker.log`), runs the dashboard in the foreground, and automatically tears down the background processes when stopped (Ctrl+C).
|
||||
2. Open your browser and go to **http://localhost:5000**.
|
||||
|
||||
---
|
||||
|
||||
## Usage Guide
|
||||
|
||||
1. **Media Directory**: Click the **Browse** button, choose an active drive/root volume, navigate to your media folder, and click **Select Folder** (or type it in manually).
|
||||
2. **Temporary Directory**: Set this to a fast local SSD drive to prevent network performance bottlenecks during active transcoding.
|
||||
3. **Hardware / Codec Limits**: Set your video encoder, audio format, and custom FFmpeg paths if required.
|
||||
4. **Rename Output Files**: Enable this if you want safer library-friendly names during scan and processing.
|
||||
5. **Force Re-encode**: Enable this if you want every queued file normalized to HEVC plus the selected audio codec, even when the result is larger.
|
||||
6. **Threads**: Defaults to the server's auto-detected recommended thread count, or select a manual override.
|
||||
7. **Discord Webhook**: (Optional) Paste your webhook URL. Click the **Test** button to confirm a success notification embed is received.
|
||||
8. **Scan Media Library**: Scans files recursively. Files smaller than the _Min Size_ or already matched by the current target format are skipped or marked done.
|
||||
9. **Run Processing**: Starts the transcode queue.
|
||||
|
||||
|
||||
## Open Source Notes
|
||||
|
||||
- The project is designed to be self-hosted and does not require cloud services.
|
||||
- Keep any test media out of the repository unless it is explicitly licensed for redistribution.
|
||||
- If you publish on GitHub, include a short note that the worker depends on FFmpeg/FFprobe being installed on the host.
|
||||
|
||||
Reference in New Issue
Block a user