aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBond-009 <bond.009@outlook.com>2025-04-29 14:10:24 +0200
committerGitHub <noreply@github.com>2025-04-29 14:10:24 +0200
commitaa24d08d3363cf164ec7d15ac16ac8c04e4e3342 (patch)
tree43b438392d40dbfc3b73bf53f75549e07aa47511
parent0a0fcd3b19a079492f588141c21d994cf79e7542 (diff)
parentf436743f9fc122ad8c247f2488c6e888e80cecff (diff)
Fix image extractor with more strict ffmpeg requirement (#14013)
* Correctly handle retry when I frame only failed * Use full range output for image * Don't trim image extractor option
-rw-r--r--MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs8
1 files changed, 4 insertions, 4 deletions
diff --git a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs
index 2c57cf871..bf574a06f 100644
--- a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs
+++ b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs
@@ -737,12 +737,12 @@ namespace MediaBrowser.MediaEncoding.Encoder
{
var peak = videoStream.VideoRangeType == VideoRangeType.DOVI ? "400" : "100";
enableHdrExtraction = true;
- filters.Add($"tonemapx=tonemap=bt2390:desat=0:peak={peak}:t=bt709:m=bt709:p=bt709:format=yuv420p");
+ filters.Add($"tonemapx=tonemap=bt2390:desat=0:peak={peak}:t=bt709:m=bt709:p=bt709:format=yuv420p:range=full");
}
else if (SupportsFilter("zscale") && videoStream.VideoRangeType != VideoRangeType.DOVI)
{
enableHdrExtraction = true;
- filters.Add("zscale=t=linear:npl=100,format=gbrpf32le,zscale=p=bt709,tonemap=tonemap=hable:desat=0:peak=100,zscale=t=bt709:m=bt709,format=yuv420p");
+ filters.Add("zscale=t=linear:npl=100,format=gbrpf32le,zscale=p=bt709,tonemap=tonemap=hable:desat=0:peak=100,zscale=t=bt709:m=bt709:out_range=full,format=yuv420p");
}
}
@@ -756,7 +756,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
_threads,
vf,
isAudio ? string.Empty : GetImageResolutionParameter(),
- EncodingHelper.GetVideoSyncOption("-1", EncoderVersion).Trim(), // auto decide fps mode
+ EncodingHelper.GetVideoSyncOption("-1", EncoderVersion), // auto decide fps mode
tempExtractPath);
if (offset.HasValue)
@@ -767,7 +767,7 @@ namespace MediaBrowser.MediaEncoding.Encoder
// The mpegts demuxer cannot seek to keyframes, so we have to let the
// decoder discard non-keyframes, which may contain corrupted images.
var seekMpegTs = offset.HasValue && string.Equals("mpegts", container, StringComparison.OrdinalIgnoreCase);
- if ((useIFrame && useTradeoff) || seekMpegTs)
+ if (useIFrame && (useTradeoff || seekMpegTs))
{
args = "-skip_frame nokey " + args;
}