news 2026/8/27 14:59:33

quicktime_video_hack如何建立屏幕流会话:15步USB握手协议逐步图解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
quicktime_video_hack如何建立屏幕流会话:15步USB握手协议逐步图解

quicktime_video_hack如何建立屏幕流会话:15步USB握手协议逐步图解

【免费下载链接】quicktime_video_hackRecord iOS device audio and video项目地址: https://gitcode.com/gh_mirrors/qu/quicktime_video_hack

想在没有 Mac 电脑的情况下,直接录制 iPhone 或 iPad 的屏幕吗?quicktime_video_hack是一个用 Go 编写的跨平台工具,它通过 USB 与 iOS 设备完成一套15 步握手协议,建立 QuickTime 屏幕流会话,把 H.264 视频和 WAV 音频流原样拉到 Linux 或 macOS 上。本文逐图解开这套 USB 握手的每一步,让你真正看懂屏幕镜像会话是如何建立的。

准备工作:配对设备与发现 USB 设备

建立会话的前提是设备已被信任配对。运行qvh devices可以列出主机上所有带 usbmux 端点的 iOS 设备。工具会在 USB 描述符中寻找 SubClass 为0xFE的 usbmux 配置(见 discovery.go),并记录设备序列号——不同 iPhone 的 VID/PID 可能完全相同,只能靠序列号区分。

qvh devices -v

💡 如果提示device not found,请先在手机上点击"信任此电脑"。

第 1~2 步:解锁隐藏的 QuickTime USB 配置

这是整个协议最"hack"的一步。iOS 设备默认只有 usbmux 配置;当 Mac 上的 QuickTime 开始录屏时,设备会断开并重新连接,多出一套隐藏的 QuickTime 配置(SubClass0x2A),里面带有 4 个 Bulk 端点,专门用来收发音视频数据。

quicktime_video_hack 通过发送一条特定的 USB 控制请求(0x40, 0x52, 0x00, 0x02)主动触发这个行为,然后轮询等待设备带着新配置重新上线(见 activator.go):

步骤动作说明
1启用隐藏配置发送控制请求,设备断线重连,多出 QT 配置
2占用端点激活 QT 配置,声明收/发 Bulk 端点,清空 Feature 状态(见 usbadapter.go)

第 3~4 步:PING 心跳握手

端点就绪后,设备会主动发来第一个包:PING。它的结构非常简洁:

4 字节长度 (16)4 字节 Magic (PING)4 字节 0x04 字节 0x1
10000000676E69700000000001000000

工具收到 PING 后立即回发一个 PING,握手才算真正开始(见 messageprocessor.go)。

步骤方向
3设备 → 主机等待 PING
4主机 → 设备回复 PING

第 5~9 步:音频时钟协商(CWPA 与 AFMT)

屏幕流会话的核心是时钟同步。第 5 步设备发来 SYNCCWPA包,附上设备侧的音频时钟引用(ClockRef);主机在第 6 步创建本地时钟,并把自己的 ClockRef 写进 RPLY 回复。

紧接着两个 ASYN 包把音频通道"点亮":

步骤方向作用
7主机 → 设备ASYNHPD1上报主机设备信息,准备视频流
8主机 → 设备ASYNHPA1携带第 6 步收到的设备音频 ClockRef,开启音频流
9设备 → 主机SYNCAFMT告知音频格式(48kHz LPCM 未压缩),主机回复{"Error": 0}表示一切正常

注意AFMT包里引用的正是你在CWPA回复中交给它的那个时钟——设备用它标注后续每一个音频缓冲。

第 10~12 步:视频通道建立(CVRP 与 NEED)

第 10 步设备发来 SYNCCVRP包,这是信息量最大的一包(约 649 字节):内含 H.264 的SPS/PPS 参数集(已编码为 NALU,可直接用于流媒体)和时序信息,以及设备的视频 ClockRef。

步骤方向作用
11主机 → 设备RPLY回复本地视频 ClockRef,之后所有 FEED 帧都引用它
12主机 → 设备ASYNNEED携带设备视频 ClockRef,告诉设备"请持续发视频"

NEED包整个会话内容恒定,只需初始化一次后反复发送即可(见 asyn.go)。每收到一个 FEED 帧就回发一个 NEED,相当于流控反馈。

第 13~15 步:属性设置与时钟对齐收尾

步骤方向作用
13设备 → 主机2 × ASYNSPRP设置视频流属性:ObeyEmptyMediaMarkers=trueRenderEmptyMedia=false
14设备 → 主机SYNCCLOK要求主机新建一个时钟并回复其 ClockRef
15设备 → 主机2 × SYNCTIME主机两次回复当前CMTime(纳秒精度,Scale=10^9),完成双向时间对齐

15 步走完,握手阶段结束 🎉 设备开始推送FEED(视频帧)和EAT!(音频帧)两类 CMSampleBuffer 数据包。

会话结束后:优雅关闭流

停止时(Ctrl+C),工具会按相反方向走一遍:先发HPA0停音频、HPD0停视频,收到SYNC STOP后回 8 字节零,再接收两条 ASYNRELS(时钟释放通知),最后释放 USB 端点、把设备切回纯 usbmux 配置(见 messageprocessor.go)。

一分钟速查:15 步完整清单

#包/动作方向关键词
1启用隐藏 QT 配置USB 控制0x40/0x52
2占用 Bulk 端点主机StartReading
3PING设备等待
4PING主机回应
5SYNC CWPA设备音频 ClockRef
6CWPA RPLY主机本地时钟
7ASYN HPD1主机视频准备
8ASYN HPA1主机开启音频
9SYNC AFMT设备48kHz LPCM
10SYNC CVRP设备SPS/PPS + 视频时钟
11CVRP RPLY主机本地视频时钟
12ASYN NEED主机催发视频
132× SPRP设备流属性
14SYNC CLOK设备新建时钟
152× TIME设备CMTime 对齐

想深入源码?从这里开始

  • 协议全文(含每种包的十六进制格式表):doc/technical_documentation.md
  • 隐藏配置激活逻辑:screencapture/activator.go
  • USB 端点读写与分帧:screencapture/usbadapter.go
  • 全部 SYNC/ASYN 包处理:screencapture/messageprocessor.go
  • 二进制报文样例(写单测必备):screencapture/packet/fixtures/
  • 会话入口startWithConsumer:main.go

掌握这 15 步握手后,你甚至可以照着 packet/fixtures/ 里的报文转储,用任意语言重新实现一套自己的 iOS 屏幕流会话协议栈。

【免费下载链接】quicktime_video_hackRecord iOS device audio and video项目地址: https://gitcode.com/gh_mirrors/qu/quicktime_video_hack

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/27 14:57:42

基于相似性推理的博弈论方法:多智能体协作中的理性合作策略

多个大模型智能体在协作时,经常遇到一个经典困境:每个模型都只优化自己的目标,结果整体表现反而更差。最近研究里被反复提到的一个思路,是用博弈论来解释基础模型之间的交互,并通过相似性推理(Similarity I…

作者头像 李华
网站建设 2026/8/27 14:56:54

【AI大模型实战】手把手教你基于Dify搭建RAG知识库,全程干货,零基础小白也能轻松学会!!

前言 Dify 是一款开源的大模型应用开发平台,旨在帮助开发者快速构建生产级生成式 AI 应用。在Dify 本地化部署中,知识库功能是实现企业级 AI 应用的核心能力。本文介绍基于版本 1.5.1 搭建知识库全流程解析 一、Dify基本概念 Dify 是一款开源的大模型应用…

作者头像 李华
网站建设 2026/8/27 14:55:05

从内存数据库走向云原生数据底座,深入理解 SAP HANA Cloud

很多熟悉 SAP HANA On-Premise 的技术人员第一次接触 SAP HANA Cloud 时,脑海里很容易形成一个直觉判断,SAP 只是把原来安装在企业数据中心里的 HANA 搬到了云端,再由 SAP 帮忙维护。 这个理解只对了一小部分。 如果今天重新审视 SAP 官方对 SAP HANA Cloud 的产品定位,会…

作者头像 李华
网站建设 2026/8/27 14:55:02

SAR成像全链路解析:从点目标仿真到实测数据处理

简介:合成孔径雷达(SAR)是一种主动式微波遥感技术,通过发射线性调频信号并接收目标回波来获取地表信息。其核心原理在于利用雷达平台的运动合成一个虚拟的大孔径天线,从而获得高分辨率的二维图像。这一过程涉及复杂的信…

作者头像 李华