Fix explicit stream selection in MediaEncoder.ExtractImageInternal
This commit is contained in:
parent
04571e93f8
commit
2345646ff1
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue
Block a user