media-preview-generator

media-preview-generator

Docker app from stevezau's Repository

Overview

Generate video preview thumbnails for Plex, Emby and Jellyfin with GPU acceleration support. One FFmpeg pass writes the right format for each server (Plex BIF bundle, Emby sidecar BIF, Jellyfin trickplay tiles).

This template seeds a Plex connection below; add Emby/Jellyfin servers (any mix) from the web UI after first start.

Features:

  • Web UI with setup wizard for easy configuration
  • Plex OAuth authentication (no manual token needed)
  • GPU acceleration (NVIDIA, Intel QuickSync, AMD)
  • Background processing with job queue
  • Real-time progress display
  • Scheduled generation via cron expressions
  • Browser notifications when jobs complete

The web interface is available at http://[IP]:8080 after starting the container.
A setup wizard will guide you through connecting to your Plex server.

IMPORTANT - NETWORKING:
If your Plex container uses a custom network (like br1 or macvlan), this container
must use the SAME network to communicate with Plex. Change the Network Type setting
to match your Plex container's network.

For Intel QuickSync, /dev/dri is passed through automatically (see GPU Device below).

For NVIDIA GPU support, you must:

  1. Install NVIDIA driver and nvidia-container-toolkit on Unraid
  2. Add --runtime=nvidia to Extra Parameters
  3. Or use the Nvidia-Driver and nvidia-container-toolkit plugins from Community Applications
  4. Add NVIDIA_DRIVER_CAPABILITIES=all to the environment variables below (the 'graphics' capability is required for Dolby Vision Profile 5 thumbnails; 'compute,video,utility' alone only covers NVDEC and nvidia-smi).

Runtime arguments

Web UI
http://[IP]:[PORT:8080]/
Network
bridge
Shell
bash
Privileged
false
Extra Params
--restart=unless-stopped

Template configuration

Web UI PortPorttcp

Port for the web interface

Target
8080
Default
8080
Value
8080
Plex URLVariable

URL to your Plex Media Server (use IP address, not localhost)

Target
PLEX_URL
Default
http://192.168.1.100:32400
Plex TokenVariable

Plex authentication token. Find it at: https://support.plex.tv/articles/204059436-finding-an-authentication-token-x-plex-token/ (or use OAuth via Web UI)

Target
PLEX_TOKEN
Media PathPathro

Path to your media files on Unraid (read-only)

Target
/media
Default
/mnt/user/media
Value
/mnt/user/media
Plex Data PathPathrw

Path to Plex application data where previews will be stored

Target
/plex
Default
/mnt/user/appdata/plex/Library/Application Support/Plex Media Server
Value
/mnt/user/appdata/plex/Library/Application Support/Plex Media Server
Config PathPathrw

Path to store configuration, schedules, and job history

Target
/config
Default
/mnt/user/appdata/media-preview-generator
Value
/mnt/user/appdata/media-preview-generator
Local Videos PathVariable

How this container sees media (usually /media)

Target
PLEX_LOCAL_VIDEOS_PATH_MAPPING
Default
/media
Value
/media
Plex Videos PathVariable

How Plex sees media (if different from this container's path)

Target
PLEX_VIDEOS_PATH_MAPPING
Frame Interval (seconds)Variable

Seconds between each preview frame (default: 5). Migrated to settings.json on first start.

Target
PLEX_BIF_FRAME_INTERVAL
Default
5
Value
5
Thumbnail QualityVariable

Preview image quality 1-10, higher = better quality but larger files (default: 4). Migrated to settings.json on first start.

Target
THUMBNAIL_QUALITY
Default
4
Value
4
CPU ThreadsVariable

Number of parallel CPU workers for fallback (default: 1). Migrated to settings.json on first start. GPU config (enable/disable, workers per GPU) is in Web UI Settings.

Target
CPU_THREADS
Default
1
Value
1
Auth Token OverrideVariable

Optional: Override the authentication token. If empty, use the token set during the setup wizard (or auto-generated if skipped)

Target
WEB_AUTH_TOKEN
Web PortVariable

Internal port for web server (usually matches Web UI Port)

Target
WEB_PORT
Default
8080
Value
8080
PUIDVariable

User ID for file permissions (99 = nobody on Unraid)

Default
99
Value
99
PGIDVariable

Group ID for file permissions (100 = users on Unraid)

Default
100
Value
100
UMASKVariable

File permission mask

Default
022
Value
022
Intel GPU DeviceDevice

Pass through Intel GPU for QuickSync acceleration

Target
/dev/dri
Default
/dev/dri
Value
/dev/dri
NVIDIA Driver CapabilitiesVariable

NVIDIA driver capabilities to inject into the container. Use 'all' (recommended) so the 'graphics' capability is included — this is required for Dolby Vision Profile 5 thumbnails (libplacebo Vulkan tone-mapping). 'compute,video,utility' alone only covers CUDA/NVDEC and will NOT give you DV5 support. Only applied if you also set --runtime=nvidia in Extra Parameters.

Target
NVIDIA_DRIVER_CAPABILITIES
Default
all
Value
all
NVIDIA Visible DevicesVariable

Which NVIDIA GPUs to expose (e.g. 'all', or a specific UUID). Only applied if you also set --runtime=nvidia in Extra Parameters.

Target
NVIDIA_VISIBLE_DEVICES
Log LevelVariable

Logging level: DEBUG, INFO, WARNING, ERROR

Target
LOG_LEVEL
Default
INFO
Value
INFO

Details

Repository
stevezzau/media_preview_generator:latest
Last Updated2026-05-31
First Seen2026-05-27

Run media-preview-generator on Unraid.

media-preview-generator is listed in Community Apps for Unraid OS. Explore Unraid to build a flexible home server, NAS, or homelab.