An open API service indexing awesome lists of open source software.

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客户端 - 支持双向视频通话和云台控制

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**: 初始版本,支持基础视频通话和云台控制

## 许可证

本项目仅供学习和研究使用。