大多数浏览器和
Developer App 均支持流媒体播放。
-
使用 DockKit 与电动 iPhone 支架集成
了解如何在与 DockKit 兼容的电动支架集成后在相机 App 中创造令人难以置信的照片和视频拍摄体验。我们将展示你的 App 如何在 360° 视野中自定义取景、直接控制电机以及采用你自己的推理模型来跟踪其他对象,做到自动跟踪实时视频中的主体,同时对支架进行直接控制。最后,我们将演示如何通过动态设备动画来表达情感。要了解更多图像跟踪技术,请查看 WWDC23 的“Vision 框架下的动物位姿检测”和 WWDC21 的“使用 Create ML 进行手势动作分类”两个视频。
资源
相关视频
WWDC23
WWDC21
WWDC20
-
下载
♪ ♪
Onur Tackin:大家好 我是 Onur Tackin 一名 工程经理 今天我来向大家介绍使用 DockKit 与电动 iPhone 支架的集成 这个视频中 我将讲解什么是 DockKit 如何开箱即用 详细介绍开发者如何使用 DockKit 自定义 App 最后谈谈如何使用设备动画 将运动作为可视功能
那么 什么是 DockKit 呢?
DockKit 作为一个框架 可以使 iPhone 成为电动相机支架的中央运算单元 DockKit 支架 将所有 iPhone 相机的视野 拓展为 360° 水平旋转 90° 垂直旋转 因为其支持俯仰与偏航的运动模式 且配有自动系统跟踪器 这样 用户就可以专注于内容 无需担心是否会不在画面中 不管使用的是哪款相机 App 这些支架可能会包含一些简单的按钮 如开关和关闭跟踪功能 以及一个 LED 指示灯 用以告知跟踪是否开启、 和你是否在画面内 将手机和支架配对后就可以使用了 所有不可思议的功能都发生在 iPhone 自带的 App 和系统服务中 正因为电机控制和拍摄主体跟踪功能 都是在系统层面进行的 所以所有用了 iOS 相机 API 的 App 都可以使用 DockKit 这也提升了用户体验 优化了新功能 这类 App 包括 录屏、直播、视频会议、 健身、企业、 教育、健康等等 与其一直听我讲解 DockKit 不如看我给大家展示一下
在我面前的 是一台 DockKit 支架原型 我已经把它和 iPhone 配好对了 连上支架后 手机会通过 DockKit 与配对的基座通信 让我们来试试吧 让我来启动内置的相机 App 按下这里的按钮 就可以开始跟踪了 我绕着桌子走动时 基座也会跟踪我 注意看 绿色 LED 灯闪烁 意味着我在画面内
好 切换到后置摄像头
可以看到 基座旋转了 180° 好把我放回视野内 非常厉害 但这个功能并不只有 内置相机 App 可用 任何使用了相机 API 的 App 都可以配合基座来使用
举个例子 我们来试试 FiLMiC Pro - 专业级摄像机 你可以直接在 App Store 上 下载此 App
App 启动后默认启用后置摄像头 所有功能都是开箱即用的 有了DockKit 支架 你可以与周围的空间和物品交互 比如我可以走到这摞书旁边 谈一谈我的书 也可以整理空间布局 和物品交互
可以看到 应用了 DockKit 的 App 让讲述者专注于故事内容 无需担心画面问题
iPhone 的内置智能影像 和平滑运转的电机 让支架得以充分发挥效果 来深入了解一下它的工作原理吧 DockKit 系统跟踪器是在 相机进程管线内运行的 通过内置推理分析相机画面 确定跟踪主体 估算其轨迹 并驱动电机将拍摄主体 框在画面内恰当的位置 很像电影摄影师观察真实世界的事件 并随之调整相机视角的动作 DockKit 从相机取景范围出发 推算目标对象位置 向基座发出驱动命令 调整电机
电机控制 是由 DockKit 后台进程完成的 这一进程负责管理 DockKit 支架并与之通信 通过 DockKit 协议 将驱动命令发送给支架 而后利用传感器反馈 完成闭环 控制电机 跟踪功能则使用 ISP 推理分析相机取景范围 之后以每秒 30 帧的速度 传输给 DockKit 高级设置中 还包含一个视觉理解框架 应用在多人场景当中 生成面部和身体边界框后 发送给多模型系统级跟踪器 跟踪器将分别跟踪 每个人或每个物体 并运行统计 EKF 滤波 填充推理断层 修正错误 毕竟现实世界的信号 并不会一直都是完美的 对于跟踪主体的估算包括 电机位置和速度反馈 以及到达最终轨迹需要的 手机 IMU 和驱动命令 通常情况下 一个画面内会出现多个主体 DockKit 默认使用 中央取景框跟踪主要主体 如果中途遇到其他人或物体 DockKit 也会尽量 框住作为跟踪主体的人或物 举个例子 当前镜头里有 Mahmut、 Steve、Dhruv 和 Vamsi 绿色边界框中的 Mahmut 是 是主要主体 请注意 检测到的人脸和身体 都有对应边界框 哪怕有其他团队成员遮挡 Mahmut 或者与他交错走动 跟踪器始终对准主要主体
因遮挡导致识别或推理结果有误时 统计跟踪器会修正错误 继续追踪 Mahmut 这就是 DockKit 的工作原理 开发者无需往 App 里 添加额外代码 不过 当开发者集成 DockKit 后 App 会变得更加精彩有趣 提供更多用户喜欢的新功能 让我们来了解一下怎样控制 DockKit 配件吧
先给基座设置好参考项 接下来 你可以选择改变取景 设置具体跟踪对象 或在停止系统跟踪后直接控制电机 首先你需要记录 基座配件状态的更改 将 iPhone 装在兼容的基座配件上 或从基座上卸下时 会弹出已连接或已取下的通知 通知是修正跟踪行为的前提
你可以通过 DockAccessoryManager State 事件 查询基座状态 相关状态只有 Docked 和 Undocked 连接状态由 DockKit 自行管理 Docked 状态意味着 iPhone 已经通过 DockKit 协议 连接至基座 你的 App 也可以使用状态事件 查到跟踪按钮的状态 当你接收到 iPhone 已连接的通知后 你就可以控制配件的其他方面了 最有用的控制项之一 是让你的 App 管理视频的裁剪方式
你有两种裁剪相机视野的方法
其一 只需在自动取景模式下 选择左对齐、居中或右对齐; 或者选定感兴趣区域 我们来举例详解一下 可能需要你做出选择的情况 默认设置下 DockKit 将主体 保持在画面中心 对于流媒体视频播放等简单的应用来说 这一设置效果很好 但在其他用例中 可能就没那么理想了 例如 如果你的 App 会在视频画面上 叠加自定义图形 比如这样的标志 该如何处理呢? 这种情况下 你需要保证 叠加上去的插图不会遮挡主体
更改取景模式这一简单操作 即可修正这一问题 这里我设置成了“right” 来平衡视频和插图的布局 因为插图是与取景范围的 左侧三分之一对齐的 有了这行简单的代码 视频开场部分的布局就非常完美了 设置剪裁的另一种方式是 在视频范围内 设置出一块感兴趣区域
以这个视频会议 App 为例 每个视频画面的 长宽比都应裁剪成方形 然而 DockKit 的 默认设置可能会导致 某人的脸部被裁剪掉 要修正这一问题 开发者可以给 DockKit 配件 选定一块感兴趣区域 iPhone 显示屏的左上角是原点 使用标准坐标圈定感兴趣区域 在这一示例中 我给 DockKit 配件 框选出了位于正中间的 方形感兴趣区域 通过调整感兴趣区域 剪裁后 主体正好位于画面中央 你同样可以使用 DockKit 在 App 中进行自定义电机控制 来完成某种功能或功能可见性 这也会给更多新功能带来可能
DockKit 默认启用 系统跟踪功能 所以在控制电机 或进行自定义跟踪前 你需要将这个值设为 false DockKit 支架有两条旋转轴: X 轴和 Y 轴 其倾斜 具体说是翻转 是围绕 X 轴进行的 X 轴与磁吸式支架 后面的电机平齐 而平移 也就是水平旋转 则是绕着 Y 轴 与支架底座的电机对齐 我们来看下 用代码来控制旋转的例子
比如你想让电机 以每秒 0.2 弧度的 慢速向右旋转 同时以每秒 0.1 弧度的 速度向下倾斜 那么首先你需要定义初始速度矢量 然后发送至基座 通过让任务休眠 可以让动作持续 2 秒 接着可以使用另一个矢量 逆转运动方向 以 0.2 弧度每秒向左旋转 同时以 0.1 弧度每秒向上拉高 把 DockKit 集成进你的 App 之后 带来的新功能可不止这些 除了可以直接控制电机之外 开发者还可以控制推理过程 可以使用 Vision 框架、 自定义 ML 模型 或任意你 App 需要的 任何感知算法 有了自定义推理输出后 你可以构建 Observations 发送至 DockKit 来跟踪目标对象 那么什么是 Observation 呢? Observation 即为 一个呈长方形的有边界的框 代表相机取景范围内的相关主体
也就是你想要跟踪拍摄的目标对象 可能是一张脸、一只动物、 甚至是一只手 事实上 可以是任何 你能观察到的物品或点
这个有边界的框 是由标准坐标定义的 以左下角为原点 例如 要为这里识别出的人脸 创建 Observation 的话 我会将边界框按照 其占整体画面的百分比 粗略地将坐标设为 宽 0.25 高0.5
要创建 Observation 你需要以标准坐标创建 CGRect 并由此建立一个 Observation 这时 你需要将 Observation 类型 明确设定为 “humanFace”或“object” 选择“humanFace” 能确保系统层面的多人跟踪 和取景优化生效
创建好 Observations 后 就可以将其发送至跟踪器 首先获取当前相机信息 这里我将 orientation 指定为“.corrected” 这样 DockKit 就明白这一坐标是 相对于屏幕左下角设定的 无需进行任何转换 接下来将 observations 数组 和 cameraInfo 发送至基座配件 好消息是 开发者不需要计算出 要观察的所有对象的全部边界框 并进行全手动跟踪 Vision 框架 很适合用于自定义推理 并且框架内已经内置了 许多可以返回边界框的请求 轻松转化为 可跟踪的 observations 包括人体姿势检测、 动物姿势检测、 甚至条形码识别等 Vision 的坐标系 和 DockKit 相同 因此开发者可直接传输结果 无需任何换算 只需让 DockKit 知道 设备的朝向即可 现在让我们来详细了解一下如何 使用代码自定义 observations
这里 我想用手部跟踪 替代默认的脸部和身体跟踪 使用的请求是手势检测
首先创建一个 Vision 请求 及 RequestHandler 在这一用例中 我使用的是 VNDetectHumanHandPoseRequest 接下来 执行请求 基于识别点位 构建 Observation 简单起见 我选择聚焦拇指指尖 不过也可以选择其他手指关节 或整个手掌 来构建 observation 最后 将 observations 发送给 DockKit 进行跟踪
下面我们来看看实际应用吧!
首先启动自定义 相机 App 并开始跟踪
随着我的手往左移动 支架也跟着向左转动 接下来 我的手往右移动时 支架也跟着向反方向转 如果我举起手 支架会上仰 保证我的手在画面内 手放下的时支架也会跟着转动 完美
能够使用 DockKit API 直接控制电机后 你可以通过动画 让设备进一步焕发生命力! 基座的动作可以用来确认 也可以用来传达情感 你可以通过直接控制电机 来创建自己的自定义动画 模拟推拉等与手机的物理交互动作 也可以使用内置动画
内置动画有 是、否、唤醒和嘭 设备每次开机时都会播放唤醒动画 回到我刚才展示的 自定义手部跟踪 App 上来 你可以使用特定手势 随时触发内置动画 要做到这一点 你首先需要训练一个 自定义手部动作分类模型 很简单 用 Create ML App 就能做到 如需了解创建这类模型的更多信息 请查看 2021 年的 “手势动作分类”这一视频
每当自定义模型 预测到了手势发生后 就会触发动画 首先 系统跟踪会被关闭 接着开始播放动画: 我们这里触发的是 嘭 动画是从支架的当前位置开始 异步执行的 动画执行完毕后 需要重新打开系统跟踪 现在让我们回到演示 看看它的实际效果吧
App 会跟随我后退的动作 继续跟踪我的手部 当我做出推搡相机的手势后 嘭! 相机就会像钟摆一样前后摇摆 我们再来一次 这个真的太有趣了 嘭! 你可以使用此类动画 作为某个体验的结束 或是用来表达感受 怎样都可以 希望大家多加尝试 尽可能地使用自定义电机控制 创造属于你的动画效果 DockKit 带来了 使用电动支架跟踪对象的功能 将 App 的视野拓展至 360° 可以在系统层面跟踪目标对象 或者使用带自定义推理的 App 开发者还可以 在 App 中使用机械运动 作为可视化功能 用以传达情感或某种功能 想要了解更多 Vision 框架 在 DockKit 自定义跟踪上的 使用方式 请一定去了解一下 讲解动物姿势检测的视频 我已经等不及看到 各位开发者拿到这些令人惊叹的组件后 能够给 App 带来怎样的应用新体验了
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。