TAN for Stremio

Adds a "TAN Normalized" stream for your own local video folder, right in Stremio's stream picker.

Why this works differently from the desktop app

Stremio addons only ever get to offer a stream URL before playback starts - they have no hook into the player's live audio, so an addon can't process sound in real time the way the TAN desktop app does. What it can do is pre-process your own files once and hand Stremio an alternate stream to play, the same idea as the Jellyfin integration.

If what you actually want is TAN live on whatever Stremio is currently playing, that's the desktop app's job instead - see the main setup guide and point it at whatever output device Stremio plays through.

What actually happens to your files

On startup, tan-stremio scans a folder you give it for video files. For anything not already processed, it extracts the audio with ffmpeg, runs it through TAN, and muxes the result back with the original video stream, copied verbatim (no re-encode) into a cached copy. Your original file is never modified. Once a file is cached, later runs leave it alone.

Setup

  1. Make sure ffmpeg is installed and on your PATH. tan-stremio shells out to it for demuxing and remuxing video.
  2. Get tan-stremio: build it from source, or grab the binary from the releases page.
    cargo run --release -p tan-stremio -- --library "D:\Movies"
    --library is the folder to scan (recursively, once, at startup - restart to pick up new files). See --help for the profile, port, and output-folder options.
  3. Wait for the console to finish normalizing anything not already cached - a movie-length file can take a while, so this runs as a batch up front rather than making you wait mid-playback.
  4. In Stremio: open the addon search, paste the manifest URL it printed (http://127.0.0.1:5860/manifest.json by default), and install.
  5. Your titles show up under "TAN Local Library." Open one and pick the "TAN Normalized" stream.
Known limits, on purpose: movies only (no season/episode structure or music library yet); no HTTP Range support on the served file, so seeking may be limited on some players; no live filesystem watching - restart to rescan. None of these are silent gaps; they're just not built yet.