Bazarr¶
Bazarr is a subtitle management tool available at bazarr.hdhomelab.com. It automatically downloads subtitles for media managed by Sonarr and Radarr, and can synchronize subtitle timing to match the audio track.
Deployment¶
Bazarr runs in Kubernetes (media namespace) as a single-replica Deployment, pinned to worker-2a.
graph LR
Sonarr -->|SignalR events| Bazarr
Radarr -->|SignalR events| Bazarr
Bazarr -->|download subtitles| Providers[Subtitle Providers]
Bazarr -->|config| LocalPVC[local-path PVC\nworker-2a]
Bazarr -->|read media| MediaNFS[(NAS emby-media PVC)]
CronJob[Hourly CronJob] -->|rsync| LocalPVC
CronJob -->|backup| NFS[(NAS backup PVC)]
-
URL
-
Namespace
media -
Image
lscr.io/linuxserver/bazarr -
Node
Pinned to
worker-2a -
Storage
local-pathconfig + shared NAS media volume -
Config
flux/apps/noah/media/bazarr/
Storage & Backup¶
Config uses local-path (SQLite performance — Bazarr's database locks under NFS) with an hourly rsync CronJob to NFS — see SQLite on Local Path for the pattern details and migration procedure.
| Volume | PVC | Storage class | Purpose |
|---|---|---|---|
/config |
bazarr-config |
local-path |
Database and settings |
/data/media |
emby-media |
syno-nfs-retain |
Shared NAS media library |
kubectl create job --from=cronjob/bazarr-config-backup bazarr-config-backup-manual -n media
Subtitle Synchronization¶
Bazarr uses ffsubsync to align subtitle timing to the actual audio track. This is especially useful for subtitles with progressive frame-rate drift — where timing is correct at the start of an episode but diverges toward the end.
| Setting | Value | Notes |
|---|---|---|
use_subsync |
true |
Enables the Sync button and post-processing |
no_fix_framerate |
false |
Allows ffsubsync to stretch timing for FPS mismatches |
max_offset_seconds |
60 |
Maximum shift applied |
subsync_threshold |
90 |
Minimum confidence score to auto-apply sync |
- Extracts the audio track from the video file
- Detects speech segments via voice activity detection
- Aligns subtitle cue positions to the detected speech
- Stretches the timeline if frame rates differ (e.g. 23.976fps subs on a 25fps encode)
- Rewrites the
.srtfile with corrected timestamps
Progressive drift
If a subtitle is fine at the start but increasingly off by the end of the episode, it's a frame rate mismatch. The Sync button with no_fix_framerate: false fixes this automatically.
Key Configuration¶
| Setting | Value |
|---|---|
TZ |
America/New_York |
PUID / PGID |
1034 / 100 |
| CPU request / limit | 500m / 1 |
| Memory request / limit | 256 MiB / 1 GiB |