
TouchRecordKit 发布:通过 USB 录制 iPad 屏幕与触控操作
来源标题:TouchRecordKit – iOS device screen and touch capture
TouchRecordKit 是一款新工具,可通过 USB 将 iPad 屏幕录制成恒定帧率的 H.264 MP4,解决 QuickTime 录制产生的可变帧率文件在 DaVinci Resolve 中播放速度异常的问题。它还能从自有 App 中捕获触摸、Apple Pencil 笔画和键盘快捷键,并通过 OFX 插件在 Resolve 中叠加到画面上。项目包含 Mac 应用、Swift 包和 Resolve 插件三部分。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
TouchRecordKit 可通过 USB 将 iPad 屏幕录制为干净、恒定帧率的 H.264 MP4,并同时录制你的音频接口。还可选择捕获你自己应用中的每一次触摸、Apple Pencil 笔触和键盘快捷键,然后在 DaVinci Resolve 中将它们绘制回录制的画面上。
QuickTime 也能录制连接的 iPad,但它写出的是可变帧率文件,Resolve 和其他剪辑软件回放时速度会不正确。TouchRecordKit 以与 QuickTime 相同的方式捕获 iPad,并写出标准的 30 或 60 fps 文件,可直接拖放到时间线上。
| 部分 | 功能 | 文件夹 |
|---|---|---|
| TouchRecordKit.app | Mac 应用。录制 iPad 屏幕和音频,并接收触摸数据。 | App/ |
| TouchRecordKit Swift package | 添加到你的 iPad 应用中。将触摸、Pencil 和键盘事件流式传输到 Mac 应用。在 Release 构建中会被编译排除。 | Sources/ |
| TouchRecordKit OFX plugin | DaVinci Resolve 效果,将录制的触摸绘制到片段上。 | ofx/ |
安装 从 Releases 下载最新的 DMG 和插件安装程序,或从源码构建: App/build.sh install # -> /Applications/TouchRecordKit.app ofx/build.sh install # -> /Library/OFX/Plugins(会要求输入密码),然后重启 Resolve 构建需要 Xcode 16.3 或更高版本。应用运行于 macOS 14+。
用数据线连接 iPad 并解锁。如有提示,在 iPad 上点按“信任”。 打开 TouchRecordKit 并选择 iPad。 选择“音频输入”设备并勾选你需要的输入(例如 Volt 的输入 1)。选中的输入会混合为双单声道。勾选“包含 iPad 音频”会将 iPad 自身的声音作为单独轨道加入。 选择 30 或 60 fps,然后按“录制”。 文件保存到 ~/Movies,命名为 iPad <日期>.mp4:H.264 High profile、Rec. 709、AAC 48 kHz。如果屏幕没有变化,最后一帧会重复,因此帧率保持恒定。如果在拍摄中途旋转 iPad,画面会加黑边以适应。 “叠加上一次拍摄的最后一帧”会将你最近一次录制的最后一帧叠加到实时预览上,这样你可以在下一次拍摄前将 iPad 放回相同位置。叠加只出现在预览中,不会被录制。
在 Xcode 中添加包:File ▸ Add Package Dependencies… 并输入 https://github.com/fform/touchrecordkit.git 或在 Package.swift 中: .package(url: "https://github.com/fform/touchrecordkit.git", from: "1.0.0")
在启动时调用一次: import TouchRecordKit struct MyApp: App { init() { TouchRecordKit.start() } // ...
将这些键添加到应用的 Info.plist: <key>NSLocalNetworkUsageDescription</key> <string>Send touch data to TouchRecordKit on your Mac</string> <key>NSBonjourServices</key> <array><string>_touchrecordkit._tcp</string></array>
就这样。当 iPad 和 Mac 在同一网络时,Mac 应用会通过 Bonjour 找到你的应用,并显示“触摸数据:”以及一个绿点。之后每次录制都会在 MP4 旁边生成一个 iPad <日期>.touches.json。如果拍摄期间没有应用连接,则不会写入文件。
流式传输代码只编译进 Debug 构建。在 Release 构建中,TouchRecordKit.start() 是空函数,因此你可以保留该调用。你的 App Store 二进制文件中不包含此包的任何网络或事件钩子。TouchRecordKit.isCompiledIn 可以告诉你得到的是哪个版本。
要将其包含在 Release 构建中(例如 TestFlight 演示构建),请启用包的 AlwaysOn trait: .package(url: "https://github.com/fform/touchrecordkit.git", from: "1.0.0", traits: ["AlwaysOn"])
捕获内容 手指触摸,包括合并的 120/240 Hz 采样 Apple Pencil 的位置、力度、高度角、方位角和滚转 Pencil 和指针悬停 触控板和鼠标点击 硬件键盘按键按下/抬起,包括按住的修饰键(⌘ ⇧ ⌥ ⌃) 它钩住 UIApplication.sendEvent,因此你无需修改任何视图。
Mac 应用每秒向你的应用发送四次 ping,并保留最快的往返时间,思路与 NTP 相同。它用这个时间将每个 UIEvent.timestamp 转换为 Mac 的时钟,再映射到视频时间线上,其中 t = 0 是第一帧视频。应用会显示当前同步精度,通常低于几毫秒。
视频本身到达 Mac 的时间会略晚于 iPad 屏幕变化,通常晚几十毫秒。你可以在插件中用 Sync Offset 校正这一点。
安装插件并重启 Resolve。 在 Effects ▸ Open FX 库中,找到 TouchRecordKit ▸ TouchRecordKit Touches,将其拖放到 iPad 片段上。 就这样。插件会向 Resolve 查询片段的媒体文件,并加载其旁边的 .touches.json。请将 MP4 和 JSON 保持在一起并使用匹配的名称。要使用其他文件,请设置 Touch Data Override。
时序跟随源媒体帧,因此在时间线上修剪、移动或重定时片段不会破坏同步。如果触摸略微早于画面变化,请提高 Sync Offset。Debug 会显示帧、映射时间以及加载了哪个文件。
插件假设 iPad 画面在帧内按宽高比适配,这是 Resolve 对 16:9 时间线上 4:3 片段的默认处理。如果你缩放或重新定位片段,请在 Color 页面或在复合片段内应用该效果,以便它在变换之前运行。失败会记录到 ~/Library/Logs/TouchRecordKit.log。
数据是纯 JSON,因此你也可以将其导入 After Effects、Motion 或你自己的工具。 "format": "touchrecordkit
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。