From 257ce496682b83ee9631e32ab5b84266078f4d21 Mon Sep 17 00:00:00 2001 From: realzombee <209545148+realzombee@users.noreply.github.com> Date: Wed, 28 Jan 2026 01:58:54 +0000 Subject: [PATCH 1/3] fix(ffprobe): Pass the correct filtered video stream index - We currently pass the global stream index of the primary video stream with v:index. - ffprobe expects the index to be filtered by the stream type. If the video appears at index 2 but is the only video stream in the file, we should pass v:0. Passing v:2 will cause ffprobe to unnecessarily read the entire file during analysis --- .../MediaFiles/MediaInfo/VideoFileInfoReader.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/NzbDrone.Core/MediaFiles/MediaInfo/VideoFileInfoReader.cs b/src/NzbDrone.Core/MediaFiles/MediaInfo/VideoFileInfoReader.cs index cbfb17e888..f5baf4323f 100644 --- a/src/NzbDrone.Core/MediaFiles/MediaInfo/VideoFileInfoReader.cs +++ b/src/NzbDrone.Core/MediaFiles/MediaInfo/VideoFileInfoReader.cs @@ -117,7 +117,10 @@ public MediaInfoModel GetMediaInfo(string filename) // if it looks like PQ10 or similar HDR, do a frame analysis to figure out which type it is if (PqTransferFunctions.Contains(mediaInfoModel.VideoTransferCharacteristics)) { - var frameOutput = FFProbe.GetFrameJson(filename, ffOptions: new () { ExtraArguments = $"-read_intervals \"%+#1\" -select_streams v:{primaryVideoStream?.Index ?? 0}" }); + var videoStreamIndex = analysis.VideoStreams.FindIndex(stream => stream.Index == primaryVideoStream?.Index); + videoStreamIndex = videoStreamIndex == -1 ? 0 : videoStreamIndex; + _logger.Debug("Reading video stream at index {0} with relative index v:{1}", primaryVideoStream?.Index, videoStreamIndex); + var frameOutput = FFProbe.GetFrameJson(filename, ffOptions: new () { ExtraArguments = $"-read_intervals \"%+#1\" -select_streams v:{videoStreamIndex}" }); mediaInfoModel.RawFrameData = frameOutput; frames = FFProbe.AnalyseFrameJson(frameOutput); From af148cbd4dd19ecb9019a479b4d5ea643b7dc60e Mon Sep 17 00:00:00 2001 From: realzombee <209545148+realzombee@users.noreply.github.com> Date: Wed, 28 Jan 2026 18:22:37 +0000 Subject: [PATCH 2/3] Remove debug log line --- src/NzbDrone.Core/MediaFiles/MediaInfo/VideoFileInfoReader.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/NzbDrone.Core/MediaFiles/MediaInfo/VideoFileInfoReader.cs b/src/NzbDrone.Core/MediaFiles/MediaInfo/VideoFileInfoReader.cs index f5baf4323f..53dc228ae0 100644 --- a/src/NzbDrone.Core/MediaFiles/MediaInfo/VideoFileInfoReader.cs +++ b/src/NzbDrone.Core/MediaFiles/MediaInfo/VideoFileInfoReader.cs @@ -119,7 +119,6 @@ public MediaInfoModel GetMediaInfo(string filename) { var videoStreamIndex = analysis.VideoStreams.FindIndex(stream => stream.Index == primaryVideoStream?.Index); videoStreamIndex = videoStreamIndex == -1 ? 0 : videoStreamIndex; - _logger.Debug("Reading video stream at index {0} with relative index v:{1}", primaryVideoStream?.Index, videoStreamIndex); var frameOutput = FFProbe.GetFrameJson(filename, ffOptions: new () { ExtraArguments = $"-read_intervals \"%+#1\" -select_streams v:{videoStreamIndex}" }); mediaInfoModel.RawFrameData = frameOutput; From 0a7cd26eebcc8e790361175a5d2d56b66643ec33 Mon Sep 17 00:00:00 2001 From: realzombee Date: Wed, 28 Jan 2026 18:38:59 +0000 Subject: [PATCH 3/3] Update src/NzbDrone.Core/MediaFiles/MediaInfo/VideoFileInfoReader.cs Co-authored-by: Bogdan --- src/NzbDrone.Core/MediaFiles/MediaInfo/VideoFileInfoReader.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/NzbDrone.Core/MediaFiles/MediaInfo/VideoFileInfoReader.cs b/src/NzbDrone.Core/MediaFiles/MediaInfo/VideoFileInfoReader.cs index 53dc228ae0..5dc9f7d0a8 100644 --- a/src/NzbDrone.Core/MediaFiles/MediaInfo/VideoFileInfoReader.cs +++ b/src/NzbDrone.Core/MediaFiles/MediaInfo/VideoFileInfoReader.cs @@ -118,8 +118,7 @@ public MediaInfoModel GetMediaInfo(string filename) if (PqTransferFunctions.Contains(mediaInfoModel.VideoTransferCharacteristics)) { var videoStreamIndex = analysis.VideoStreams.FindIndex(stream => stream.Index == primaryVideoStream?.Index); - videoStreamIndex = videoStreamIndex == -1 ? 0 : videoStreamIndex; - var frameOutput = FFProbe.GetFrameJson(filename, ffOptions: new () { ExtraArguments = $"-read_intervals \"%+#1\" -select_streams v:{videoStreamIndex}" }); + var frameOutput = FFProbe.GetFrameJson(filename, ffOptions: new () { ExtraArguments = $"-read_intervals \"%+#1\" -select_streams v:{(videoStreamIndex == -1 ? 0 : videoStreamIndex)}" }); mediaInfoModel.RawFrameData = frameOutput; frames = FFProbe.AnalyseFrameJson(frameOutput);