## 功能
- **录制**:全屏、自定义区域、单个窗口;同时采集摄像头、麦克风与系统声音,录制浮层不进画面;可隐藏桌面图标、录制中关开人像;自带提词器,随录制自动滚动。
- **镜头**:按点击与指针轨迹自动生成聚焦缩放,可在时间线上手动增删、调整。
- **光标**:平滑轨迹、点击效果、多套光标样式与实时玻璃透镜。
- **画布**:原始 / 常用比例与平台预设,背景、边距、圆角、阴影、裁剪。
- **叠加层**:遮罩、文字、标题卡、摄像头人像布局、文字或图片水印。
- **按键**:录制时可记下快捷键或全部按键(默认关闭,需输入监控权限),成片上显示为键帽。时间线上有一条按键轨,不想显示的那一组可以单独删掉。
- **字幕**:系统语音识别本地转写,可逐条编辑。
- **声音**:降噪、回声消除、逐片段音量、一键去除静音停顿;录制声音默认跟随画面,可分离单独编辑。
- **导出**:H.264 / HEVC(MP4)、ProRes 422(MOV)、GIF,最高 4K。
- **更新**:应用内检查、下载并安装新版本,录制与导出期间不打扰。
- **语言**:简体中文与英文,默认跟随系统,可在设置中切换。
## 环境
- macOS 15 及以上
- Xcode 16 及以上(Swift 6,严格并发检查)
- 首次运行需授予屏幕录制、摄像头、麦克风权限
## 构建
```bash
cp Config/Local.xcconfig.example Config/Local.xcconfig # 填写 DEVELOPMENT_TEAM
open Caplo.xcodeproj
```
签名用固定的开发证书,避免每次构建后屏幕录制授权失效。工程由 `project.yml` 生成,修改后执行 `xcodegen generate`。
命令行无签名构建:
```bash
xcodebuild -project Caplo.xcodeproj -scheme Caplo -configuration Debug \
-destination 'platform=macOS' -derivedDataPath build \
CODE_SIGNING_ALLOWED=NO CAPLO_APP_IDENTIFIER=com.caplo.buildcheck CAPLO_APP_NAME=CaploBuildCheck build
```
`-derivedDataPath build` 与改名参数用于隔离检查构建,不覆盖日常使用的 Caplo.app。
## 测试
```bash
Scripts/check.sh
```
依次执行:单元测试 → 颜色令牌检查 → 全部窗口实际创建并跑完显示周期 → 无签名构建。单独运行:
```bash
cd Packages/CaploKit
swift test # 单元测试
swift run PreviewGallery ../../build/previews --windows # 窗口回归
swift run PreviewGallery ../../build/previews --demo # 界面与渲染快照
```
## 多语言
界面文字的键是中文原文,英文翻译在 `App/Localizable.xcstrings`(权限说明等在 `App/InfoPlist.xcstrings`)。
代码里直接写在 `Text` / `Button` 中的字面量会自动本地化;其余显示文字用 `String(localized:)`,枚举的原始值作为存档标识不翻译,另加 `title`。
改动界面文字后同步并检查未翻译条目:
```bash
Scripts/localize.sh
```
## 发布
推送 `vX.Y.Z` 标签后,GitHub Actions 自动完成签名、公证、制作 DMG、创建 GitHub Release,并上传到 Cloudflare R2,供官网下载和应用内更新(Sparkle)。配置与流程见 [Scripts/release/README.md](Scripts/release/README.md)。
## 结构
```
App/ 应用入口、Info.plist、权限声明
Config/ xcconfig(本机签名配置不入库)
Packages/CaploKit/
Sources/
CaptureKit ScreenCaptureKit 采集、分段写入、设备会话
EditingCore 编辑数据模型:时间线、镜头、光标轨迹、画布布局
RenderKit Core Image 合成、光标与玻璃渲染、Metal 内核
ExportKit 播放项组装、导出、转写、语音处理
ProjectKit 工程包读写与存储
Features SwiftUI / AppKit 界面:录制条、编辑器、项目中心、设置
CaploDesignSystem 颜色、字体、材质令牌与通用控件
PlatformSupport 系统版本兼容层
CRNNoise RNNoise 降噪(C)
PreviewGallery 快照与窗口回归工具
Shaders/ Metal 内核源码
Scripts/ 内核编译、资源生成、整体检查、发布(release/)
ReleaseNotes/ 各版本更新说明
```
修改 `Shaders/CaploKernels.metal` 后执行 `zsh Scripts/build-kernels.sh` 重新生成 `CaploKernels.metallib`;`LiquidGlass.swift` 中的 CIKL 兜底实现需同步修改。
## 参与贡献
欢迎提交 PR!缺陷修复、体验打磨、翻译校对和文档补充都很有价值。
- 发现问题或有想法,先开一个 [Issue](https://github.com/icloudza/caplo/issues/new/choose),按模板填写。
- 新功能或较大的改动请先在 Issue 里讨论,确认方向后再动手。
- 提交前运行 `Scripts/check.sh`,改了界面文字再运行 `Scripts/localize.sh`。
开发约定与贡献授权见 [CONTRIBUTING.md](CONTRIBUTING.md)。
> [LINUX DO](https://linux.do/) — a new ideal community, where tech enthusiasts gather.
## 许可证
源码与官网发布的安装包均以 [PolyForm Noncommercial 1.0.0](LICENSE) 授权:允许个人学习、研究、爱好项目以及非营利机构使用、修改和分发;**禁止任何商业用途**,包括在公司或营利性工作中使用、出售,或作为商业产品与服务的一部分。商业授权请联系 cloudza@vip.qq.com。
第三方组件保留各自的许可证:
- [Sparkle](https://github.com/sparkle-project/Sparkle):MIT,应用内更新,SwiftPM 依赖
- [RNNoise](https://github.com/xiph/rnnoise):BSD-3-Clause,见 `Packages/CaploKit/Sources/CRNNoise/COPYING`
- [OpenScreen](https://github.com/getopenscreen/openscreen):MIT,见 `Packages/CaploKit/Sources/RenderKit/Resources/Licenses/OpenScreen.txt`
- [Capptivo](https://github.com/SECHAK-AG/capptivo) 光标素材:MIT,见 `Packages/CaploKit/Sources/RenderKit/Resources/Licenses/Capptivo.txt`