From c68dc2278421598ef49e468a5f0bc7be5e59766f Mon Sep 17 00:00:00 2001 From: Deluan Date: Sat, 7 Mar 2026 14:19:28 -0500 Subject: [PATCH] feat(transcoding): add DevEnableMediaFileProbe config flag Add DevEnableMediaFileProbe (default true) to allow disabling ffprobe- based media file probing as a safety fallback. When disabled, the decider uses tag-based metadata from the scanner instead. --- conf/configuration.go | 2 ++ core/transcode/transcode.go | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/conf/configuration.go b/conf/configuration.go index c46879d42..da549ce26 100644 --- a/conf/configuration.go +++ b/conf/configuration.go @@ -139,6 +139,7 @@ type configOptions struct { DevExternalArtistFetchMultiplier float64 DevOptimizeDB bool DevPreserveUnicodeInExternalCalls bool + DevEnableMediaFileProbe bool } type scannerOptions struct { @@ -763,6 +764,7 @@ func setViperDefaults() { viper.SetDefault("devexternalartistfetchmultiplier", 1.5) viper.SetDefault("devoptimizedb", true) viper.SetDefault("devpreserveunicodeinexternalcalls", false) + viper.SetDefault("devenablemediafileprobe", true) } func init() { diff --git a/core/transcode/transcode.go b/core/transcode/transcode.go index 300af84b3..dadb16096 100644 --- a/core/transcode/transcode.go +++ b/core/transcode/transcode.go @@ -9,6 +9,7 @@ import ( "encoding/json" + "github.com/navidrome/navidrome/conf" "github.com/navidrome/navidrome/core/auth" "github.com/navidrome/navidrome/core/ffmpeg" "github.com/navidrome/navidrome/log" @@ -330,6 +331,9 @@ func (s *deciderService) ensureProbed(ctx context.Context, mf *model.MediaFile) if mf.ProbeData != "" { return nil } + if !conf.Server.DevEnableMediaFileProbe { + return nil + } result, err := s.ff.ProbeAudioStream(ctx, mf.AbsolutePath()) if err != nil {