Files
2026-06-16 22:25:33 +01:00

4.6 KiB

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 and add its bin folder to your system environment variables (PATH), or set custom paths in the Dashboard UI.
  • Linux (CachyOS / Arch):
    sudo pacman -Sy python ffmpeg
    
  • Linux (Debian / Ubuntu):
    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:

    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.