diff --git a/Sources/StreamRecorderKit/FFmpegRecorder.swift b/Sources/StreamRecorderKit/FFmpegRecorder.swift index 52e036d..63528ac 100644 --- a/Sources/StreamRecorderKit/FFmpegRecorder.swift +++ b/Sources/StreamRecorderKit/FFmpegRecorder.swift @@ -135,6 +135,25 @@ public final class FFmpegRecorder: StreamRecorderEngine { throw RecordingError.outputNotFound } + // 如果是手动停止,跳过耗时的分析(fragmented MP4 可能导致 ffprobe 卡住) + if stopRequested { + NSLog("[Recorder] Stop requested, skipping analysis") + let attrs = try? FileManager.default.attributesOfItem(atPath: outputPath) + let fileSize = attrs?[.size] as? Int64 ?? 0 + let result = RecordingResult( + outputPath: outputPath, + duration: duration, + fileSize: fileSize, + hasVideo: true, + hasAudio: true, + videoInfo: nil, + audioInfo: nil, + audioLevel: nil + ) + delegate?.recorder(self, didFinishWithResult: result) + return + } + NSLog("[Recorder] Analyzing output file...") // 分析输出文件 let ffprobePath = ffmpegPath.replacingOccurrences(of: "ffmpeg", with: "ffprobe")