2
0
Эх сурвалжийг харах

Merge pull request #6425 from boolemancer/boolemancer/fix_image_extractor

Fix explicit stream selection in MediaEncoder.ExtractImageInternal
Bond-009 3 жил өмнө
parent
commit
855f9c4a8e

+ 2 - 10
MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs

@@ -491,15 +491,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
         {
             var inputArgument = GetInputArgument(inputFile, mediaSource);
 
-            if (isAudio)
-            {
-                if (imageStreamIndex.HasValue && imageStreamIndex.Value > 0)
-                {
-                    // It seems for audio files we need to subtract 1 (for the audio stream??)
-                    imageStreamIndex = imageStreamIndex.Value - 1;
-                }
-            }
-            else
+            if (!isAudio)
             {
                 // The failure of HDR extraction usually occurs when using custom ffmpeg that does not contain the zscale filter.
                 try
@@ -570,7 +562,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
                 _ => string.Empty
             };
 
-            var mapArg = imageStreamIndex.HasValue ? (" -map 0:v:" + imageStreamIndex.Value.ToString(CultureInfo.InvariantCulture)) : string.Empty;
+            var mapArg = imageStreamIndex.HasValue ? (" -map 0:" + imageStreamIndex.Value.ToString(CultureInfo.InvariantCulture)) : string.Empty;
 
             var enableHdrExtraction = allowTonemap && string.Equals(videoStream?.VideoRange, "HDR", StringComparison.OrdinalIgnoreCase);
             if (enableHdrExtraction)

+ 1 - 17
MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs

@@ -88,22 +88,6 @@ namespace MediaBrowser.Providers.MediaInfo
 
             if (imageStream != null)
             {
-                // Instead of using the raw stream index, we need to use nth video/embedded image stream
-                var videoIndex = -1;
-                foreach (var mediaStream in mediaStreams)
-                {
-                    if (mediaStream.Type == MediaStreamType.Video ||
-                        mediaStream.Type == MediaStreamType.EmbeddedImage)
-                    {
-                        videoIndex++;
-                    }
-
-                    if (mediaStream == imageStream)
-                    {
-                        break;
-                    }
-                }
-
                 MediaSourceInfo mediaSource = new MediaSourceInfo
                 {
                     VideoType = item.VideoType,
@@ -111,7 +95,7 @@ namespace MediaBrowser.Providers.MediaInfo
                     Protocol = item.PathProtocol.Value,
                 };
 
-                extractedImagePath = await _mediaEncoder.ExtractVideoImage(inputPath, item.Container, mediaSource, imageStream, videoIndex, cancellationToken).ConfigureAwait(false);
+                extractedImagePath = await _mediaEncoder.ExtractVideoImage(inputPath, item.Container, mediaSource, imageStream, imageStream.Index, cancellationToken).ConfigureAwait(false);
             }
             else
             {