feat(ios): 添加远端视频录制功能并优化信令连接稳定性

- 新增 VideoRecorder 组件,支持 WebRTC 和自编码两种模式录制远端视频为 MP4
- 优化 SignalingClient 连接管理,修复 WebSocket 握手前 receive 导致的断开问题
- 重构控制面板 UI,支持统计信息折叠展开和录制控制按钮
- 添加录制状态指示、保存路径提示及断开自动取消录制逻辑
- 更新项目配置和文档,补充录制功能说明
This commit is contained in:
2026-08-01 03:59:43 +08:00
parent 30f26f27c3
commit a73f61f366
13 changed files with 651 additions and 84 deletions

View File

@@ -47,8 +47,20 @@ web_rtc_controller_ios/
- 导航键:返回 / 主页 / 多任务Android keyCode 4 / 3 / 187
- 分辨率切换:原始画质 / 1080P / 720P / 480P
- 串流模式切换WebRTCSRTP 视频轨)/ 自编码DataChannel H.264 裸流 + VideoToolbox 硬解)
- 远端视频录制:连接后可将收到的画面录制为 MP4两种串流模式均支持
- 实时统计分辨率、帧率、码率、RTT、链路类型P2P/TURN、编解码器等
## 录制说明
控制面板顶部「录制 / 停止」按钮用于录制远端画面,行为对齐 Android 端 `VideoRecorder`
- **WebRTC 模式**`WebRTCClient` 把远端视频轨 fan-out 一份给 `VideoRecorder`(实现 `RTCVideoRenderer`
拿到解码后的 `CVPixelBuffer`,用 `AVAssetWriter` + H.264 硬编码封装为 MP4。
- **自编码模式**`SelfCodecDecoder` 用 VideoToolbox 硬解出 AVCC 帧后回传给 `VideoRecorder`
复用已解码的 H.264 帧写盘。
- 录制文件保存在 App 沙盒 `Documents/WebRTCRecordings/rec_YYYYMMDD_HHmmss.mp4`,停止后弹出保存路径提示。
- 断开连接时若仍在录制会自动取消(丢弃未保存内容)。
## 运行
1. 用 Xcode 打开 `web_rtc_controller_ios.xcodeproj`,首次打开等待 SPM 解析 WebRTC 依赖。