Jump to content

Emby Theme Creator (theme.mp3 & backdrops/theme.mp4)


Recommended Posts

Oratorian
Posted (edited)

 

🎬 emby-theme-maker

Auto-generate theme videos & theme music for your TV shows — straight from Emby's own Intro markers.

Most of us let Emby's Intro Detection scan our libraries so we can skip the openings. But those IntroStart / IntroEnd markers already point at the exact theme-song sequence of every show. This small, dependency-free tool reuses them: it cuts that segment out of a representative episode and drops it into the series folder as a looping backdrop video (and, optionally, theme music) that plays on the detail page. See it as alternative to the TV-Theme plugins.

No manual clipping, no hunting for openings — if Emby detected the intro, you get a theme.

How it works

  1. Reads each series' intro markers over the Emby HTTP API.
  2. Picks a representative episode per series (median intro length — robust against cold opens / creditless specials).
  3. Uses ffmpeg to cut [IntroStart → IntroEnd], re-encode with fade in/out, and write the result where Emby expects it.
video →  SeriesFolder/backdrops/theme.mp4  (h264/aac video backdrop)
audio →  SeriesFolder/theme.mp3  (theme music, series root)
both  →  both of the above, in one pass

Highlights

  • ✅ Zero Python dependencies — just Python 3 + ffmpeg.
  • 🛡️ Safe by default — never overwrites an existing theme without --force; even protects a hand-curated theme-music/ folder.
  • 🔎 --list and --dry-run so you see exactly what will happen before anything is written.
  • ⚛️ Atomic writes — a cancelled run never leaves a half-written file.
  • ⚡ Parallel encoding (--jobs), path-mapping for Docker/NAS setups, per-language audio selection, fade & quality controls.
  • 🔁 Idempotent — re-run any time and it only fills the gaps.

Requirements

  • Python 3.9+ and ffmpeg / ffprobe on PATH
  • An Emby API key (Dashboard → API Keys)
  • Local or mounted access to your media so ffmpeg can read episodes and write into series folders

Quick start

Create a .env:

EMBY_URL=http://192.168.1.10:8096
EMBY_KEY=your_api_key
# how Emby-reported paths map onto THIS machine's mounts
EMBY_PATH_FROM=/media
EMBY_PATH_TO=/mnt

Then:

System specific binaries exist: emby-theme-maker.exe(win_x64), emby-theme-maker(linux_x64)
All share the same syntax below.

# preview — read-only, writes nothing
./emby_theme_maker.py --list

# generate video backdrops + theme music, then trigger a scan
./emby_theme_maker.py --mode both --jobs 3 --refresh
Tip: Emby only registers new theme files on a full library scan. The --refresh flag triggers one for you at the end of the run.

Notes

  • Tested on Emby 4.10. Works great across a full library (I ran it over ~120 shows).
  • Series with no detected intro are simply skipped.
  • Provided as-is by a fellow user — feedback, issues and PRs welcome!

 

 

 

emby-theme-maker.zip

Edited by Oratorian

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...