Skip to content

STRM Proxy

AniBridge can generate .strm files that point to a stable AniBridge URL instead of a provider/CDN URL. The STRM proxy endpoints stream bytes, support HTTP Range, and rewrite HLS playlists so every segment/key request routes back through AniBridge.

When To Use

  • You need stable .strm files that keep working even when provider URLs change.
  • Jellyfin is outside the VPN while AniBridge is inside the VPN.
  • You want HLS segment/key requests to always egress from AniBridge.

Required Configuration

STRM_PROXY_MODE=proxy
STRM_PUBLIC_BASE_URL=https://<your-anibridge-host>

Auth mode is controlled by STRM_PROXY_AUTH:

  • token (default): HMAC signature in sig
  • apikey: shared key in apikey
  • none: no auth (LAN only)

Direct Play Requirements

Browser-based clients (Jellyfin, Plex, Emby) enforce mixed content rules. If your media server is served over HTTPS, AniBridge must also be served over HTTPS or the browser will block the stream and force server-side transcoding.

Recommended setup:

  • Place AniBridge behind a reverse proxy with TLS.
  • Ensure the public URL is reachable by both the browser client and the media server.
  • Set STRM_PUBLIC_BASE_URL to the HTTPS URL that Jellyfin and clients use to reach AniBridge. If clients can’t reach AniBridge (even over HTTPS), Direct Play will fail and the server will fall back to proxying/transcoding.

Endpoints

HLS Rewriting

AniBridge rewrites:

  • URI lines
  • EXT-X-KEY, EXT-X-MAP, EXT-X-MEDIA, EXT-X-STREAM-INF, EXT-X-I-FRAME-STREAM-INF, EXT-X-SESSION-KEY

Relative URLs are resolved against the playlist URL before proxying.

Refresh On Failure

If upstream returns 403/404/410/451/429 or times out, AniBridge re-resolves the provider URL and retries once.

Examples

STRM URL

text
https://anibridge.example/strm/stream?site=s.to&slug=9-1-1&s=1&e=3&lang=German+Dub&sig=...

Rewritten HLS Playlist

m3u8
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=1360921,RESOLUTION=1280x720
https://anibridge.example/strm/proxy/index-v1-a1.m3u8?u=https%3A%2F%2Fcdn.example%2Findex-v1-a1.m3u8&sig=...
#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=144009,RESOLUTION=1280x720,URI="https://anibridge.example/strm/proxy/iframes-v1-a1.m3u8?u=https%3A%2F%2Fcdn.example%2Fiframes-v1-a1.m3u8&sig=..."

Segment Fetch

text
GET /strm/proxy/seg-1-v1-a1.ts?u=https%3A%2F%2Fcdn.example%2Fseg-1-v1-a1.ts&sig=...

Notes

WARNING

Sonarr can occasionally reject .strm imports with “No audio tracks detected” even when playback works. This usually happens when Sonarr’s ffprobe succeeds on the .strm file and reports zero audio streams. Workaround: use manual import or disable “Analyze video files” in Sonarr. See Issue #50.

WARNING

Known limitation: STRM proxy playback can be unstable in some media players (notably Jellyfin) for certain HLS streams. A common symptom is Video-Bitrate: 0 kbps, and there is currently no reliable AniBridge-side fix that does not risk playback regressions (timeline/duration issues, early stop, or auto-next behavior). Track status can be monitored in Issue #51.

  • AniBridge never redirects STRM playback; bytes are streamed.
  • STRM_PUBLIC_BASE_URL must match how your media server reaches AniBridge (LAN host, reverse proxy, etc.).

Released under the BSD 3 Clause License.