Normalize invalid PTS from containers for Trickplay generation

This change does not affect the keyframe only mode.

Signed-off-by: nyanmisaka <nst799610810@gmail.com>
This commit is contained in:
nyanmisaka
2026-07-18 15:44:34 +08:00
parent 53aafcd38e
commit 9fa9d26341
@@ -926,6 +926,25 @@ namespace MediaBrowser.MediaEncoding.Encoder
throw new InvalidOperationException("EncodingHelper returned empty or invalid filter parameters.");
}
// Normalize invalid PTS from containers for non keyframe only mode
if (!enableKeyFrameOnlyExtraction)
{
var fpsFilterIndex = filterParam.IndexOf("fps=", StringComparison.Ordinal);
if (fpsFilterIndex >= 0)
{
var inputFrameRate = (imageStream.ReferenceFrameRate.HasValue && imageStream.ReferenceFrameRate > 0)
? imageStream.ReferenceFrameRate.Value : 30;
var setPtsFilter = string.Create(CultureInfo.InvariantCulture, $"setpts=N/{inputFrameRate:F3}/TB,");
filterParam = filterParam.Insert(fpsFilterIndex, setPtsFilter);
}
else
{
throw new InvalidOperationException("EncodingHelper returned invalid filter parameters.");
}
}
try
{
return await ExtractVideoImagesOnIntervalInternal(