这是一个用于视频对讲系统的iOS客户端应用,支持与树莓派设备进行双向视频通话和云台控制。
- 双向视频通话: 实时视频传输,支持前置摄像头
- 云台控制: 通过触摸按钮控制云台上下左右移动
- 音频通话: 支持双向语音通话
- 网络连接: 通过WiFi连接到树莓派设备
- 实时状态显示: 显示连接状态和操作反馈
- 方向控制: 上、下、左、右四个方向控制
- 停止功能: 一键停止所有云台运动
- 实时响应: 按下即执行,松开即停止
- VideoCallViewController: 主视频通话界面
- NetworkManager: WebSocket网络通信管理
- VideoStreamManager: 视频流编码/解码管理
- AVFoundation: 摄像头和麦克风访问
- WebSocket: 用于控制命令传输
- H.264: 视频编码格式
- AAC: 音频编码格式
- iOS 13.0+
- Xcode 12.0+
- Swift 5.0+
- 支持摄像头和麦克风的设备
应用需要以下权限:
- 摄像头访问权限 (
NSCameraUsageDescription) - 麦克风访问权限 (
NSMicrophoneUsageDescription) - 本地网络访问权限 (
NSLocalNetworkUsageDescription)
- 启动应用
- 点击"开始视频通话"
- 输入树莓派设备的IP地址(默认:192.168.1.100)
- 点击"连接"按钮
- ↑: 云台向上移动
- ↓: 云台向下移动
- ←: 云台向左移动
- →: 云台向右移动
- 停止: 停止所有云台运动
- 本地视频显示在右上角小窗口
- 远程视频显示在主屏幕区域
- 支持横屏和竖屏模式
ichat_app/
├── ViewController.swift # 主界面控制器
├── VideoCallViewController.swift # 视频通话界面
├── NetworkManager.swift # 网络管理
├── VideoStreamManager.swift # 视频流管理
├── Info.plist # 应用配置
└── Assets.xcassets/ # 资源文件
- 视频捕获: 使用AVCaptureSession进行摄像头和麦克风访问
- 视频编码: 使用VideoToolbox进行H.264硬件编码
- 网络通信: 使用URLSessionWebSocketTask进行WebSocket连接
- 云台控制: 通过JSON格式发送控制命令
- 修改
NetworkManager.swift中的默认端口号 - 调整
VideoStreamManager.swift中的视频编码参数 - 更新
Info.plist中的权限描述文本
树莓派端需要运行相应的服务程序,支持:
- WebSocket服务器(默认端口8080)
- 视频流接收和发送
- 云台电机控制
- 音频处理
- 确保手机和树莓派在同一网络
- 检查IP地址是否正确
- 确认树莓派端服务正在运行
- 检查摄像头权限是否已授权
- 确认网络连接稳定
- 查看控制台日志获取详细错误信息
- 确保WebSocket连接正常
- 检查树莓派端云台控制服务状态
- 验证控制命令格式是否正确
- v1.0: 初始版本,支持基础视频通话和云台控制
本项目仅供学习和研究使用。