diff options
| author | nyanmisaka <nst799610810@gmail.com> | 2026-07-18 15:44:34 +0800 |
|---|---|---|
| committer | nyanmisaka <nst799610810@gmail.com> | 2026-07-18 15:44:34 +0800 |
| commit | 9fa9d263412ae0195a4e1725877df02d3a8d4c1d (patch) | |
| tree | 8d40f8b4bf9c14297527ee968a7d17c0b6a7e019 /MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs | |
| parent | 53aafcd38e1f4558ff18f5258d0d46b3a0565783 (diff) | |
Normalize invalid PTS from containers for Trickplay generation
This change does not affect the keyframe only mode.
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
Diffstat (limited to 'MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs')
| -rw-r--r-- | MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs index 66bf6ebd24..f8a9e98e7a 100644 --- a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs +++ b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs @@ -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( |
