Files
VibeCoding/webrtc_controller_flutter

WebRTC 控制端 (webrtc_controller_flutter)

将原生 Android 项目 WebRTCController 的功能移植到 Flutter使用跨平台依赖,可同时运行于 AndroidiOS

功能

对应原 Android 控制端WebRTCController的能力

  • 通过 WebSocket 连接信令服务器并注册为 CONTROLLER 设备
  • 创建 WebRTC 连接(仅接收远端视频 recvonly + 一条控制用 DataChannel
  • 显示被控端画面(远端视频流)
  • 通过触摸 / 滑动 / 物理按键采集输入转换为相对坐标0.0~1.0)经 DataChannel 发送控制指令TOUCH / SWIPE / KEY
  • 实时显示连接统计(分辨率、帧率、延迟、解码格式)

运行依赖(跨平台)

用途
flutter_webrtc WebRTCAndroid + iOS 统一封装)
web_socket_channel 信令 WebSocket
uuid 生成本机设备 ID

以上包均支持 Android 与 iOS无需编写任何平台原生代码。

目录结构

lib/
├── config/ice_servers.dart        # ICE/TURN/STUN 配置与默认信令地址
├── models/signal_message.dart     # 信令消息模型
├── signaling/signaling_client.dart# WebSocket 信令客户端
├── webrtc/webrtc_controller.dart   # WebRTC 连接 / DataChannel / 视频渲染 / 统计
├── controller/remote_controller.dart # 编排:信令 + WebRTC 流程
├── utils/control_commands.dart    # 控制指令 JSON 构造
├── widgets/remote_touch_view.dart # 触摸/按键采集(纯 Flutter跨平台
└── main.dart                       # UI设置面板 + 控制面板)

运行

flutter pub get
flutter run          # 默认运行到已连接设备
flutter run -d android
flutter run -d ios   # 需 macOS + Xcode

iOS 注意事项

  • 本项目已补齐 ios/Podfile(基于当前 Flutter 版本官方模板)。 在 macOS 上首次构建会自动执行 pod install 拉取 flutter_webrtc
  • 为支持开发环境的 ws:// 明文信令,ios/Runner/Info.plist 已添加 NSAppTransportSecurity -> NSAllowsArbitraryLoads = true(生产环境建议改用 wss://)。

Android 注意事项

  • android/app/src/main/AndroidManifest.xml 已添加 INTERNET 权限与 android:usesCleartextTraffic="true"(支持 ws://)。

对接说明

  • 信令服务器:需与 WebRTCControlled 项目共用同一套信令协议 REGISTER / OFFER / ANSWER / ICE_CANDIDATEpayload 为 JSON 字符串)。
  • 被控端:使用 WebRTCControlledAndroid接收 OFFER 并回传 ANSWERInputCommandHandler 解析 TOUCH / SWIPE / KEY 指令。
  • ICE 服务器:见 lib/config/ice_servers.dart,请按需替换为自己的 TURN 凭据。