{"id":31765095,"url":"https://github.com/alfred888/ichat_app","last_synced_at":"2026-05-19T14:10:25.673Z","repository":{"id":313479679,"uuid":"1051572188","full_name":"alfred888/ichat_app","owner":"alfred888","description":"视频对讲系统iOS客户端 - 支持双向视频通话和云台控制","archived":false,"fork":false,"pushed_at":"2025-09-06T09:28:39.000Z","size":18,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-06T11:32:07.451Z","etag":null,"topics":["avfoundation","ios","pan-tilt","swift","video-call","webrtc","websocket"],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alfred888.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-06T09:21:36.000Z","updated_at":"2025-09-06T09:28:43.000Z","dependencies_parsed_at":"2025-09-06T11:32:09.409Z","dependency_job_id":"dba4cf81-17f3-431e-ab1f-0fca52bf2541","html_url":"https://github.com/alfred888/ichat_app","commit_stats":null,"previous_names":["alfred888/ichat_app"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/alfred888/ichat_app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alfred888%2Fichat_app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alfred888%2Fichat_app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alfred888%2Fichat_app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alfred888%2Fichat_app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alfred888","download_url":"https://codeload.github.com/alfred888/ichat_app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alfred888%2Fichat_app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002382,"owners_count":26083356,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["avfoundation","ios","pan-tilt","swift","video-call","webrtc","websocket"],"created_at":"2025-10-10T00:13:03.343Z","updated_at":"2025-10-10T00:13:09.507Z","avatar_url":"https://github.com/alfred888.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 视频对讲系统 iOS客户端\n\n这是一个用于视频对讲系统的iOS客户端应用，支持与树莓派设备进行双向视频通话和云台控制。\n\n## 功能特性\n\n### 📱 手机端功能\n- **双向视频通话**: 实时视频传输，支持前置摄像头\n- **云台控制**: 通过触摸按钮控制云台上下左右移动\n- **音频通话**: 支持双向语音通话\n- **网络连接**: 通过WiFi连接到树莓派设备\n- **实时状态显示**: 显示连接状态和操作反馈\n\n### 🎛️ 云台控制\n- **方向控制**: 上、下、左、右四个方向控制\n- **停止功能**: 一键停止所有云台运动\n- **实时响应**: 按下即执行，松开即停止\n\n## 技术架构\n\n### 核心组件\n- **VideoCallViewController**: 主视频通话界面\n- **NetworkManager**: WebSocket网络通信管理\n- **VideoStreamManager**: 视频流编码/解码管理\n- **AVFoundation**: 摄像头和麦克风访问\n\n### 网络协议\n- **WebSocket**: 用于控制命令传输\n- **H.264**: 视频编码格式\n- **AAC**: 音频编码格式\n\n## 系统要求\n\n- iOS 13.0+\n- Xcode 12.0+\n- Swift 5.0+\n- 支持摄像头和麦克风的设备\n\n## 权限配置\n\n应用需要以下权限：\n- 摄像头访问权限 (`NSCameraUsageDescription`)\n- 麦克风访问权限 (`NSMicrophoneUsageDescription`)\n- 本地网络访问权限 (`NSLocalNetworkUsageDescription`)\n\n## 使用方法\n\n### 1. 连接设备\n1. 启动应用\n2. 点击\"开始视频通话\"\n3. 输入树莓派设备的IP地址（默认：192.168.1.100）\n4. 点击\"连接\"按钮\n\n### 2. 云台控制\n- **↑**: 云台向上移动\n- **↓**: 云台向下移动\n- **←**: 云台向左移动\n- **→**: 云台向右移动\n- **停止**: 停止所有云台运动\n\n### 3. 视频通话\n- 本地视频显示在右上角小窗口\n- 远程视频显示在主屏幕区域\n- 支持横屏和竖屏模式\n\n## 开发说明\n\n### 项目结构\n```\nichat_app/\n├── ViewController.swift              # 主界面控制器\n├── VideoCallViewController.swift    # 视频通话界面\n├── NetworkManager.swift             # 网络管理\n├── VideoStreamManager.swift         # 视频流管理\n├── Info.plist                      # 应用配置\n└── Assets.xcassets/                # 资源文件\n```\n\n### 关键实现\n1. **视频捕获**: 使用AVCaptureSession进行摄像头和麦克风访问\n2. **视频编码**: 使用VideoToolbox进行H.264硬件编码\n3. **网络通信**: 使用URLSessionWebSocketTask进行WebSocket连接\n4. **云台控制**: 通过JSON格式发送控制命令\n\n### 自定义配置\n- 修改`NetworkManager.swift`中的默认端口号\n- 调整`VideoStreamManager.swift`中的视频编码参数\n- 更新`Info.plist`中的权限描述文本\n\n## 树莓派端要求\n\n树莓派端需要运行相应的服务程序，支持：\n- WebSocket服务器（默认端口8080）\n- 视频流接收和发送\n- 云台电机控制\n- 音频处理\n\n## 故障排除\n\n### 连接问题\n- 确保手机和树莓派在同一网络\n- 检查IP地址是否正确\n- 确认树莓派端服务正在运行\n\n### 视频问题\n- 检查摄像头权限是否已授权\n- 确认网络连接稳定\n- 查看控制台日志获取详细错误信息\n\n### 云台控制问题\n- 确保WebSocket连接正常\n- 检查树莓派端云台控制服务状态\n- 验证控制命令格式是否正确\n\n## 版本历史\n\n- **v1.0**: 初始版本，支持基础视频通话和云台控制\n\n## 许可证\n\n本项目仅供学习和研究使用。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falfred888%2Fichat_app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falfred888%2Fichat_app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falfred888%2Fichat_app/lists"}