https://github.com/alfred888/ichat_app
视频对讲系统iOS客户端 - 支持双向视频通话和云台控制
https://github.com/alfred888/ichat_app
avfoundation ios pan-tilt swift video-call webrtc websocket
Last synced: about 1 month ago
JSON representation
视频对讲系统iOS客户端 - 支持双向视频通话和云台控制
- Host: GitHub
- URL: https://github.com/alfred888/ichat_app
- Owner: alfred888
- Created: 2025-09-06T09:21:36.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-09-06T09:28:39.000Z (10 months ago)
- Last Synced: 2025-09-06T11:32:07.451Z (10 months ago)
- Topics: avfoundation, ios, pan-tilt, swift, video-call, webrtc, websocket
- Language: Swift
- Size: 17.6 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 视频对讲系统 iOS客户端
这是一个用于视频对讲系统的iOS客户端应用,支持与树莓派设备进行双向视频通话和云台控制。
## 功能特性
### 📱 手机端功能
- **双向视频通话**: 实时视频传输,支持前置摄像头
- **云台控制**: 通过触摸按钮控制云台上下左右移动
- **音频通话**: 支持双向语音通话
- **网络连接**: 通过WiFi连接到树莓派设备
- **实时状态显示**: 显示连接状态和操作反馈
### 🎛️ 云台控制
- **方向控制**: 上、下、左、右四个方向控制
- **停止功能**: 一键停止所有云台运动
- **实时响应**: 按下即执行,松开即停止
## 技术架构
### 核心组件
- **VideoCallViewController**: 主视频通话界面
- **NetworkManager**: WebSocket网络通信管理
- **VideoStreamManager**: 视频流编码/解码管理
- **AVFoundation**: 摄像头和麦克风访问
### 网络协议
- **WebSocket**: 用于控制命令传输
- **H.264**: 视频编码格式
- **AAC**: 音频编码格式
## 系统要求
- iOS 13.0+
- Xcode 12.0+
- Swift 5.0+
- 支持摄像头和麦克风的设备
## 权限配置
应用需要以下权限:
- 摄像头访问权限 (`NSCameraUsageDescription`)
- 麦克风访问权限 (`NSMicrophoneUsageDescription`)
- 本地网络访问权限 (`NSLocalNetworkUsageDescription`)
## 使用方法
### 1. 连接设备
1. 启动应用
2. 点击"开始视频通话"
3. 输入树莓派设备的IP地址(默认:192.168.1.100)
4. 点击"连接"按钮
### 2. 云台控制
- **↑**: 云台向上移动
- **↓**: 云台向下移动
- **←**: 云台向左移动
- **→**: 云台向右移动
- **停止**: 停止所有云台运动
### 3. 视频通话
- 本地视频显示在右上角小窗口
- 远程视频显示在主屏幕区域
- 支持横屏和竖屏模式
## 开发说明
### 项目结构
```
ichat_app/
├── ViewController.swift # 主界面控制器
├── VideoCallViewController.swift # 视频通话界面
├── NetworkManager.swift # 网络管理
├── VideoStreamManager.swift # 视频流管理
├── Info.plist # 应用配置
└── Assets.xcassets/ # 资源文件
```
### 关键实现
1. **视频捕获**: 使用AVCaptureSession进行摄像头和麦克风访问
2. **视频编码**: 使用VideoToolbox进行H.264硬件编码
3. **网络通信**: 使用URLSessionWebSocketTask进行WebSocket连接
4. **云台控制**: 通过JSON格式发送控制命令
### 自定义配置
- 修改`NetworkManager.swift`中的默认端口号
- 调整`VideoStreamManager.swift`中的视频编码参数
- 更新`Info.plist`中的权限描述文本
## 树莓派端要求
树莓派端需要运行相应的服务程序,支持:
- WebSocket服务器(默认端口8080)
- 视频流接收和发送
- 云台电机控制
- 音频处理
## 故障排除
### 连接问题
- 确保手机和树莓派在同一网络
- 检查IP地址是否正确
- 确认树莓派端服务正在运行
### 视频问题
- 检查摄像头权限是否已授权
- 确认网络连接稳定
- 查看控制台日志获取详细错误信息
### 云台控制问题
- 确保WebSocket连接正常
- 检查树莓派端云台控制服务状态
- 验证控制命令格式是否正确
## 版本历史
- **v1.0**: 初始版本,支持基础视频通话和云台控制
## 许可证
本项目仅供学习和研究使用。