Fix explicit stream selection in MediaEncoder.ExtractImageInternal

This commit is contained in:
boolemancer 2021-08-14 02:55:51 -07:00
parent 04571e93f8
commit 2345646ff1
2 changed files with 3 additions and 27 deletions

View File

@ -503,15 +503,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
{ {
var inputArgument = GetInputArgument(inputFile, mediaSource); var inputArgument = GetInputArgument(inputFile, mediaSource);
if (isAudio) 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
{ {
// The failure of HDR extraction usually occurs when using custom ffmpeg that does not contain the zscale filter. // The failure of HDR extraction usually occurs when using custom ffmpeg that does not contain the zscale filter.
try try
@ -582,7 +574,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
_ => string.Empty _ => 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); var enableHdrExtraction = allowTonemap && string.Equals(videoStream?.VideoRange, "HDR", StringComparison.OrdinalIgnoreCase);
if (enableHdrExtraction) if (enableHdrExtraction)

View File

@ -88,22 +88,6 @@ namespace MediaBrowser.Providers.MediaInfo
if (imageStream != null) 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 MediaSourceInfo mediaSource = new MediaSourceInfo
{ {
VideoType = item.VideoType, VideoType = item.VideoType,
@ -111,7 +95,7 @@ namespace MediaBrowser.Providers.MediaInfo
Protocol = item.PathProtocol.Value, 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 else
{ {