From 14b68e419f02eb4e75c8432273e92bc0be67ed04 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Fri, 17 Jul 2026 20:40:05 +0800 Subject: [PATCH] fix: log ffmpeg stderr on outputNotFound too, include in error message --- Sources/StreamRecorderKit/FFmpegRecorder.swift | 4 +++- Sources/StreamRecorderKit/StreamRecorderEngine.swift | 9 +++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Sources/StreamRecorderKit/FFmpegRecorder.swift b/Sources/StreamRecorderKit/FFmpegRecorder.swift index 58c7c6f..c3566fb 100644 --- a/Sources/StreamRecorderKit/FFmpegRecorder.swift +++ b/Sources/StreamRecorderKit/FFmpegRecorder.swift @@ -139,7 +139,9 @@ public final class FFmpegRecorder: StreamRecorderEngine { } guard FileManager.default.fileExists(atPath: outputPath) else { - throw RecordingError.outputNotFound + let lastStderr = String(stderrAccumulator.suffix(2000)) + NSLog("[Recorder] ffmpeg stderr (last 2000 chars):\n%@", lastStderr) + throw RecordingError.outputNotFound(lastStderr) } // 如果是手动停止,跳过耗时的分析(fragmented MP4 可能导致 ffprobe 卡住) diff --git a/Sources/StreamRecorderKit/StreamRecorderEngine.swift b/Sources/StreamRecorderKit/StreamRecorderEngine.swift index d921ffa..5678cd4 100644 --- a/Sources/StreamRecorderKit/StreamRecorderEngine.swift +++ b/Sources/StreamRecorderKit/StreamRecorderEngine.swift @@ -58,7 +58,7 @@ public enum RecordingError: Error, LocalizedError { case noFFmpeg case noMediaTracks case processFailed(Int, String? = nil) - case outputNotFound + case outputNotFound(String? = nil) case unknown(String) public var errorDescription: String? { @@ -72,7 +72,12 @@ public enum RecordingError: Error, LocalizedError { return "录制失败 (exit code: \(code)):\n\(preview)" } return "录制失败 (exit code: \(code))" - case .outputNotFound: return "输出文件不存在" + case .outputNotFound(let stderr): + if let s = stderr, !s.isEmpty { + let preview = String(s.prefix(300)) + return "输出文件不存在\n\(preview)" + } + return "输出文件不存在" case .unknown(let msg): return msg } }