返回资讯中心
外部精选
软件工程
#开发者实时流

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 插件三部分。

Hacker News 最新willtheperson2026/11/5 · 5 天前18 分钟阅读

以下正文由 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 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →