From 0f345717f76d0ec738f9eb5f87cd1747232f71b0 Mon Sep 17 00:00:00 2001 From: Ali <> Date: Sat, 3 Jun 2023 00:53:10 +0400 Subject: [PATCH] Clip duration --- .../Sources/FFMpegMediaFrameSourceContext.swift | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/submodules/MediaPlayer/Sources/FFMpegMediaFrameSourceContext.swift b/submodules/MediaPlayer/Sources/FFMpegMediaFrameSourceContext.swift index 1a36e08d01..ff0f2f6a92 100644 --- a/submodules/MediaPlayer/Sources/FFMpegMediaFrameSourceContext.swift +++ b/submodules/MediaPlayer/Sources/FFMpegMediaFrameSourceContext.swift @@ -413,7 +413,10 @@ final class FFMpegMediaFrameSourceContext: NSObject { let fpsAndTimebase = avFormatContext.fpsAndTimebase(forStreamIndex: streamIndex, defaultTimeBase: CMTimeMake(value: 1, timescale: 40000)) let (fps, timebase) = (fpsAndTimebase.fps, fpsAndTimebase.timebase) - let duration = CMTimeMake(value: avFormatContext.duration(atStreamIndex: streamIndex), timescale: timebase.timescale) + var duration = CMTimeMake(value: avFormatContext.duration(atStreamIndex: streamIndex), timescale: timebase.timescale) + if !isSeekable { + duration = CMTimeMake(value: Int64.min, timescale: duration.timescale) + } let metrics = avFormatContext.metricsForStream(at: streamIndex) @@ -465,7 +468,10 @@ final class FFMpegMediaFrameSourceContext: NSObject { let fpsAndTimebase = avFormatContext.fpsAndTimebase(forStreamIndex: streamIndex, defaultTimeBase: CMTimeMake(value: 1, timescale: 40000)) let (fps, timebase) = (fpsAndTimebase.fps, fpsAndTimebase.timebase) - let duration = CMTimeMake(value: avFormatContext.duration(atStreamIndex: streamIndex), timescale: timebase.timescale) + var duration = CMTimeMake(value: avFormatContext.duration(atStreamIndex: streamIndex), timescale: timebase.timescale) + if !isSeekable { + duration = CMTimeMake(value: Int64.min, timescale: duration.timescale) + } audioStream = StreamContext(index: Int(streamIndex), codecContext: codecContext, fps: fps, timebase: timebase, duration: duration, decoder: FFMpegAudioFrameDecoder(codecContext: codecContext), rotationAngle: 0.0, aspect: 1.0) break