Description

quality-gate-encoder watches a Jellyfin library and adds a 720p copy beside every film and episode, so phones and remote viewers direct play the copy instead of making the server transcode live for each stream. It runs as a Docker container on Linux, encodes on an Intel or NVIDIA GPU or in software, leaves the original file untouched, and Jellyfin lists the copy as a second version of the same title.

Features

  • Keeps the original untouched and adds a - 720p copy beside it; Jellyfin shows both as versions of one title, never as a duplicate.
  • Phones and remote viewers direct play the copy, so the server stops transcoding live for every stream.
  • Encodes on an Intel iGPU (QSV) or an NVIDIA card (NVENC), decodes on the same GPU, and falls back to software by itself when the GPU refuses a file.
  • Output in HEVC, H.264 or AV1; H.264 comes out as MP4 with AAC for the widest direct play, and switching codec never re-encodes what exists.
  • Skips anything already 720p or lower, and a restart on a finished library checks the destination instead of re-reading the originals.
  • Works on NFS and CIFS shares: it polls instead of relying on inotify, and a Jellyfin on another host gets a manifest instead of symlinks.
  • Jellyfin never sees a half-written file: encodes go to .tmp and are renamed once verified.
  • A broken mount is caught before cleanup runs: orphan cleanup refuses when the source looks wrong, and delete events are rate-limited.
  • Holds new encodes while the destination is under a free-space floor you set.

The QualityGate plugin (https://jellywatch.app/hub/qualitygate) is optional: it caps chosen users at the 720p copy and writes a priority list, so the titles your viewers are about to watch get encoded first.

Documentation: https://geiserx.github.io/quality-gate-encoder/

License: GPL-3.0-or-later

Share this plugin

Embed Badge

Add this badge to your README to link back to your hub page:

Listed on JellyWatch Hub

Installation Instructions

Runs as a Docker container on Linux (amd64):

docker run -d --name quality-gate-encoder --restart always \
  --device /dev/dri:/dev/dri \
  -v /srv/media/movies:/app/source \
  -v /srv/media/movies-720p:/app/destination \
  -e HW_ENCODING_TYPE=intel \
  -e SYMLINK_TARGET_PREFIX=/srv/media/movies-720p \
  drumsergio/quality-gate-encoder:1.5.20

SYMLINK_TARGET_PREFIX is the destination folder as Jellyfin sees it, and the source mount must be writable, because the - 720p link is written beside each original. Drop --device to encode in software.

It worked when docker logs quality-gate-encoder shows Encoding succeeded and Created version symlink, and the film's page in Jellyfin gets a Version menu with a 720p entry.

Docker Compose, NVIDIA and all settings: https://geiserx.github.io/quality-gate-encoder/getting-started/

Comments (0)

No comments yet. Be the first to share your thoughts!

High-availability NVMe VPS to self-host Jellyfin or Emby with 99.9% uptime.

Get started with Onidel

Details

Quality Gate Encoder

jellyfinby Sergio_Fernndez 7
GitHub Stars 12
Approved
Submitted

Links

Website Visit

Similar Plugins

Stash

2836

Self-hosted media organizer for adult content with Jellyfin integration support.

AI Search

AI Search

1662

Ask your movie library a question, in your own words, and get real answers.

ytdlp2STRM

1376

Streams YouTube, Twitch, and more via yt-dlp to Jellyfin using STRM files.

JellyfinEasyMetadataManager

1351

Desktop tool for managing and editing metadata in Jellyfin libraries.