Skip to content

fix: 修复录制收尾、结果校验与跨平台回归 - #2

Merged
CacinieP merged 1 commit into
mainfrom
fix/recording-reliability
Sep 24, 2026
Merged

CacinieP merged 1 commit into
mainfrom
fix/recording-reliability

Conversation

@CacinieP

@CacinieP CacinieP commented Sep 24, 2026 •

Copy link
Copy Markdown
Owner

录制中关闭 Windows 窗口曾直接退出进程,留下只有 44 字节、缺少 moov 的 MP4;基础版还会在编码器未打开时报告保存成功。本 PR 修复这些数据完整性问题,并补齐区域选择、录制时基与 macOS 故障处理回归。

改动

  • Windows 基础版复用 Pro 录制核心,统一 BGRA 转换、编码器检查、已有文件保护和失败恢复;Stop/Close 请求后台收尾,完成前保持界面响应并禁止新会话。
  • 保持区域选择窗口直到确认/取消,支持基础版恢复全屏;统一物理像素坐标并按窗口交集裁剪。录制使用单调时钟和补帧维护 CFR 时长,音频写入或结束失败会向上层报告并保留源文件。
  • macOS 按顶层 MP4 box 检查完整性,支持超过 4 MiB 的 moov;摄像头连续读帧失败会退避、停止并明确报告部分录制。
  • CI 增加 Windows/macOS 无设备测试、强制检查 ffmpeg/ffprobe,去除依赖 Unix shell 的测试桩;两个启动器统一使用项目虚拟环境并在依赖安装失败时退出。

验证

  • 当前提交 9db6435 的 四项 CI 全部通过:Ubuntu 3.11/3.12、macOS 3.12、Windows 3.12;各平台 lint 均通过。

  • Windows / Python 3.12.10,PATH 提供 ffmpeg/ffprobe:python -m pytest -q -rs → 145 passed, 4 skipped。跳过 3 条真实硬件用例和 1 条仅适用于 POSIX SIGTERM 的 macOS 收尾用例。

  • python -m flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics → 0;git diff --check 通过。

  • 两个 Windows GUI 均用模拟屏幕和真实 VideoWriter 验证:关闭后 MP4 可播放;Pro 验证颜色正确且录制时长误差不超过一帧。另覆盖收尾期间 GUI 响应、重复停止、合并失败、音频写入失败和区域选择生命周期。

  • 此前被误判的六小时合成 MP4 现通过 macOS 容器校验;启动器的虚拟环境与失败退出路径已在临时目录验证。

尚未重新进行真实桌面、摄像头、麦克风权限和长时间硬件音画同步验收;本 PR 不发布新 Release。

@CacinieP
CacinieP merged commit d0eddf4 into main Sep 24, 2026
4 checks passed
@CacinieP
CacinieP deleted the fix/recording-reliability branch September 24, 2026 14:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant