January 5Jan 5 Application Name: FFmpeg-Easy-UnraidApplication Site: https://github.com/metronade/ffmpeg-easy-unraid/Docker Hub: https://hub.docker.com/r/metronade/ffmpeg-easy-unraidGithub: https://github.com/metronade/ffmpeg-easy-unraid/Documentation: https://github.com/metronade/ffmpeg-easy-unraid/A "Set and Forget" Batch Transcoder designed for Unraid. Convert your media library (Movies, TV Series) to modern, space-saving formats (H.265/HEVC or AV1) with ease.📖 About The Project📖 About The ProjectFFmpeg-Easy-Unraid is a Docker container built to simplify the process of shrinking large video libraries. It automatically scans an input directory, converts video files to highly efficient formats, and moves the original files to a "finished" folder upon success.It is designed to be robust ("fail-safe"), supporting modern hardware acceleration while protecting your server from freezing via intelligent CPU monitoring.Key FeaturesRun-Once Workflow: This container is designed to run on demand. It scans the /import directory on startup, processes the queue, and stops automatically when finished. It does not continuously monitor the folder to save resources. To process a new batch, simply restart the container.Modern Codecs: Supports H.265 (HEVC) and AV1.Hardware Acceleration: Full support for Nvidia NVENC, Intel QuickSync/Arc, and optimized CPU encoding.Smart Workflow:Scans /import for media.Transcodes to /export.Moves successfully processed originals to /import/finished.Directory Preservation: Perfect for TV Shows! Recursively scans folders and recreates the exact directory structure (e.g., Series Name/Season 1/) in the output.Safety First: Detects if CPU pinning is active. If not, it automatically limits thread usage to 50% of available cores to prevent Unraid from freezing.Detailed Stats: Displays exact space savings (GB/MB and %) after every run.Container Standardization: Automatically outputs to .MKV for maximum compatibility with subtitles and audio tracks.🟢 How to Enable Nvidia Support (Important!)🟢 How to Enable Nvidia Support (Important!)" href="https://github.com/metronade/ffmpeg-easy-unraid/#-how-to-enable-nvidia-support-important" style="box-sizing: border-box; background-color: rgba(0, 0, 0, 0); color: rgb(68, 147, 248); text-decoration: underline; float: left; padding-right: 4px; margin: auto; line-height: 1; position: absolute; top: 19.0417px; left: -28px; display: flex; width: 28px; height: 28px; border-radius: 6px; opacity: 0; justify-content: center; align-items: center; transform: translateY(calc(-50% - 0.3rem)); text-underline-offset: 0.2rem;">By default, Docker containers cannot see your Graphics Card. To enable Nvidia NVENC support, follow these steps strictly:Step 1: Install the DriverIn Unraid, go to the "Apps" tab (Community Applications) and install the "Nvidia Driver" plugin. Reboot if asked.Step 2: Configure the ContainerWhen adding or editing this container in Unraid:Switch to "Advanced View" (toggle in the top right corner).Find the field "Extra Parameters".Add the following text to the end of the line (separated by a space):--runtime=nvidia(Note: Do not remove --cap-add=SYS_NICE if it is already there. Just add this after it.)Find the Variable "Nvidia Visible Devices" (in Advanced View).Set this to your GPU UUID (recommended, found in the Nvidia Driver Plugin settings).OR set it to all if you only have one GPU.Apply the changes.The container will now perform a hardware check on startup. If successful, logs will show [INIT] Hardware check passed.⚖️ CPU vs. GPU Encoding: What should I choose?⚖️ CPU vs. GPU Encoding: What should I choose?" href="https://github.com/metronade/ffmpeg-easy-unraid/#%EF%B8%8F-cpu-vs-gpu-encoding-what-should-i-choose" style="box-sizing: border-box; background-color: rgba(0, 0, 0, 0); color: rgb(68, 147, 248); text-decoration: underline; float: left; padding-right: 4px; margin: auto; line-height: 1; position: absolute; top: 19.0417px; left: -28px; display: flex; width: 28px; height: 28px; border-radius: 6px; opacity: 0; justify-content: center; align-items: center; transform: translateY(calc(-50% - 0.3rem)); text-underline-offset: 0.2rem;">Choose CPU Encoding (cpu_h265) if you want the best possible compression efficiency and quality preservation. CPU encoders (libx265) are generally smarter than GPU encoders, resulting in smaller files for the same visual quality. Ideally, use this for long-term archiving.Choose GPU Encoding (nvidia_... / intel_...) if speed is your priority. GPUs can process files much faster, but the file size might be slightly larger to achieve the same visual quality compared to CPU encoding.⚙️ Prerequisites⚙️ Prerequisites" href="https://github.com/metronade/ffmpeg-easy-unraid/#%EF%B8%8F-prerequisites" style="box-sizing: border-box; background-color: rgba(0, 0, 0, 0); color: rgb(68, 147, 248); text-decoration: underline; float: left; padding-right: 4px; margin: auto; line-height: 1; position: absolute; top: 19.0417px; left: -28px; display: flex; width: 28px; height: 28px; border-radius: 6px; opacity: 0; justify-content: center; align-items: center; transform: translateY(calc(-50% - 0.3rem)); text-underline-offset: 0.2rem;">1. For Intel GPU Encoding (QuickSync / Arc)Device Mapping: You must pass the device /dev/dri to the container.AV1 Support: Requires an Intel Arc GPU or newer iGPU (Meteor Lake+).2. For CPU EncodingRecommendation: Use CPU Pinning in the Unraid Docker settings to assign specific cores. If you forget this, the script's safety mode will engage (limiting to 50% load).🚀 Configuration & Environment Variables🚀 Configuration & Environment Variables" href="https://github.com/metronade/ffmpeg-easy-unraid/#-configuration--environment-variables" style="box-sizing: border-box; background-color: rgba(0, 0, 0, 0); color: rgb(68, 147, 248); text-decoration: underline; float: left; padding-right: 4px; margin: auto; line-height: 1; position: absolute; top: 19.0417px; left: -28px; display: flex; width: 28px; height: 28px; border-radius: 6px; opacity: 0; justify-content: center; align-items: center; transform: translateY(calc(-50% - 0.3rem)); text-underline-offset: 0.2rem;">The container is controlled via Environment Variables.A Note on DefaultsWhy these default values? The default settings (CRF 18 for H.265 / CRF 24 for AV1) are chosen based on extensive personal testing. In my experience, these values represent the "Sweet Spot": they provide significant file size reduction while maintaining visual quality that is virtually indistinguishable from the source. Unless you have specific needs, I recommend leaving the Quality fields empty to use these smart defaults.Variable ListVariableDefaultDescriptionENCODE_METHODcpu_h265The Encoder Engine.Options: cpu_h265, cpu_av1, nvidia_h265, nvidia_av1, intel_h265, intel_av1.ENCODE_PRESETdefaultSpeed vs. Efficiency.default automatically picks medium (CPU) or p4 (Nvidia).Manual options: slow, fast, p1-p7 (Nvidia), 0-13 (SVT-AV1).ENCODE_THREADS0CPU Usage.0 = Auto-Detect (Checks for pinning).Set a number (e.g., 4) to force a specific thread count. Only affects CPU encoding.ENCODE_CRF(Smart)Quality for CPU/Intel.Lower value = Better Quality, Larger File.Defaults: 18 (H.265), 24 (AV1).ENCODE_CQ(Smart)Quality for Nvidia.Lower value = Better Quality, Larger File.Defaults: 19 (H.265), 24 (AV1).FFMPEG_CUSTOM_ARGS(Empty)Audio/Subtitles Override.Default behavior is -c:a copy -c:s copy.Use this to convert audio, e.g., -c:a aac -b:a 192k.NVIDIA_VISIBLE_DEVICESallGPU Selection.Set to your GPU UUID (e.g., GPU-xxxx...) or all.UNRAID_UID99User ID for file permissions (Standard Unraid: 99).UNRAID_GID100Group ID for file permissions (Standard Unraid: 100).📂 Folder Structure (Mappings)📂 Folder Structure (Mappings)" href="https://github.com/metronade/ffmpeg-easy-unraid/#-folder-structure-mappings" style="box-sizing: border-box; background-color: rgba(0, 0, 0, 0); color: rgb(68, 147, 248); text-decoration: underline; float: left; padding-right: 4px; margin: auto; line-height: 1; position: absolute; top: 19.0417px; left: -28px; display: flex; width: 28px; height: 28px; border-radius: 6px; opacity: 0; justify-content: center; align-items: center; transform: translateY(calc(-50% - 0.3rem)); text-underline-offset: 0.2rem;">You need to map two volumes in Docker/Unraid:Input: Map your source media folder to /import.Note: The container needs Read/Write access to move finished files to /import/finished.Output: Map your destination folder to /export.Example Workflow:You place a TV Show folder MySeries/Season 1/Episode 1.mkv in /import.Script converts it and saves the new version to /export/MySeries/Season 1/Episode 1.mkv.Script moves the original to /import/finished/MySeries/Season 1/Episode 1.mkv.Container Stops. To convert new files later, simply restart the container.📜 License📜 License Distributed under the GPL-3.0 licenseAuthor: metronade Edited January 5Jan 5 by nade
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.