Integrate with motorized iPhone stands using DockKit
System & Services 进阶 20m

用 DockKit 集成电动 iPhone 支架

Integrate with motorized iPhone stands using DockKit

2023年6月5日

在 Apple 官方观看视频

一句话判断

DockKit 让任何使用 iOS 相机 API 的 App 自动获得电动支架追踪能力——无需额外代码。但如果你需要自定义构图、指定追踪目标或直接控制电机,API 也提供了完整的控制接口。

这场 Session 讲了什么

Session 介绍了 DockKit 框架,用于 iPhone 与电动相机支架的集成。

开箱即用

  • DockKit 支架支持 360 度水平旋转和 90 度俯仰。
  • 系统级追踪器运行在相机处理管线中,以 30fps 分析画面。
  • 任何使用 iOS 相机 API 的 App 都自动获得追踪能力——包括系统相机和第三方 App(如 FiLMiC Pro)。
  • 支架配对后即可使用,支架上有追踪开关按钮和 LED 指示灯。

系统追踪的工作原理

  • Visual Understanding Framework 生成人脸和身体边界框。
  • 多模型系统追踪器为每个人/物体生成追踪轨道。
  • EKF 统计滤波器平滑推理间隙和错误。
  • 结合电机位置反馈和手机 IMU 数据计算最终轨迹和驱动指令。
  • 多人场景下默认追踪主主体(绿色边界框标记),即使有遮挡也能保持追踪。

自定义控制

  • 注册 dock 配件状态变化(已连接/已断开)。
  • 控制裁剪构图:左/中/右对齐,或指定感兴趣区域(ROI)。
  • 指定追踪目标或直接控制电机。
  • 设备动画(Device Animation)作为交互提示。

构图控制

  • 对齐模式:左/中/右对齐自动构图。适合有固定 UI 叠加层(如 logo)的场景。
  • 感兴趣区域(ROI):用归一化坐标指定裁剪区域。适合视频会议等需要特定宽高比的场景。

值得深挖的点

系统级追踪 vs 自定义追踪的选择。系统追踪不需要任何代码,所有 App 自动受益。但当你需要控制”追踪谁”和”怎么构图”时,就要使用 DockKit API。这不是非此即彼——你可以在大部分时间用系统追踪,只在特定场景切换到自定义模式。

多人场景中的主主体追踪使用了统计滤波器来处理遮挡和穿越。当其他人遮挡主主体时,追踪器不会跳到遮挡者身上。这种鲁棒性来自于 EKF 滤波器对历史轨迹的维护——它不只是看当前帧,而是结合历史预测来做决策。

ROI 的归一化坐标系设计为左上角是原点,方便适配不同分辨率。这在视频会议场景特别有用——你可以告诉 DockKit”我的画面是正方形裁剪”,支架会确保主体在正方形区域内居中。

代码片段

监听支架状态并配置构图:

import DockKit

// 监听支架连接/断开
let manager = DockAccessoryManager.shared

for await state in manager.stateEvents {
    switch state {
    case .docked:
        print("iPhone 已连接到支架")
        // 配置追踪参数
    case .undocked:
        print("iPhone 已从支架取下")
    }
}

控制构图对齐和感兴趣区域:

// 场景1:视频有左侧 logo 叠加层,主体右移
accessory.setFramingMode(.right)
// 主体会偏向画面右侧,避免被 logo 遮挡

// 场景2:视频会议需要正方形裁剪
let roi = CGRect(
    x: 0.125,     // 归一化坐标,左上角为原点
    y: 0.0,
    width: 0.75,   // 正方形区域
    height: 1.0
)
accessory.setRegionOfInterest(roi)
// 支架会确保主体在指定的正方形区域内居中

最佳实践

  • 不需要追踪自定义的 App 无需改动代码——系统追踪自动工作。
  • 有固定 UI 叠加层时用对齐模式(左/中/右)调整主体位置。
  • 视频会议类 App 用 ROI 确保裁剪后主体不被切掉。
  • 监听支架状态变化,在断开时优雅降级到手动操作模式。
  • LED 指示灯帮助用户确认追踪状态,你的 App UI 也应该反映追踪状态。
  • 切换前后摄像头时支架会自动旋转 180 度,确保这个行为符合你的 App 逻辑。

还有什么值得关注

  • DockKit 支架通过蓝牙/USB 与 iPhone 通信,配对后自动连接。
  • 支持的 App 场景包括:视频拍摄、直播、视频会议、健身、企业、教育、医疗等。
  • FiLMiC Pro 等第三方 App 已经开箱支持 DockKit,说明零代码集成是可行的。
  • 搭配 Animal Body Pose(Session 10045)可以实现宠物追踪场景。
  • Device Animation 功能可以让支架做出物理运动作为交互提示——具体用法在 Session 后半部分介绍。
WWDC 2023