# webrtc-server **Repository Path**: webrtcsfu/webrtc-server ## Basic Information - **Project Name**: webrtc-server - **Description**: 基于pion/wertc开发的视频会议平台 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-08-04 - **Last Updated**: 2026-08-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # WebRTC 视频会议平台 > 基于 pion/webrtc 的跨平台、多协议、大规模视频会议协作平台 [![Go Version](https://img.shields.io/badge/go-1.21+-blue.svg)](https://golang.org) [![C++ Standard](https://img.shields.io/badge/c++-17-blue.svg)](https://isocpp.org) [![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE) ## 📋 项目简介 本项目是一个完整的视频会议平台,支持多种终端接入、多种协议互通、多种音视频编解码格式。平台采用微服务架构,包含 19 个独立模块,可支持 500+ 参与者的超大规模会议。 ### 核心特性 - **多终端支持**: Windows、iOS、Android、HarmonyOS、Web 浏览器 - **多协议互通**: SIP、H.323、自定义 JSON 协议 - **多编解码格式**: OPUS、AAC、G.711、H264、H265、VP8、VP9 - **大规模会议**: 支持 500+ 参与者,分层级联 SFU - **混合模式**: SFU 为主 + 可选 MCU,适应不同场景 - **实时协作**: 会议内聊天、屏幕共享、白板 - **录制直播**: 服务端录制、RTMP/HLS 直播推流 - **安全认证**: JWT 认证、API Key、RBAC 权限控制 - **通知推送**: Push/Email/SMS 多渠道通知 ## 🏗️ 系统架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ 客户端层 (Client Layer) │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌────────┐│ │ │ Windows │ │ iOS │ │ Android │ │ Harmony │ │ Web ││ │ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ └───┬────┘│ │ └────────────┴───────────┴───────────┴──────────┘ │ │ C++ Core SDK │ └──────────────────────────────┬──────────────────────────────┘ │ WebSocket / SIP / H.323 ┌──────────────────────────────┴──────────────────────────────┐ │ 接入网关层 (Access Layer) │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐ │ │ │ WS Gateway │ │ SIP Gateway │ │ H.323 Gateway │ │ │ │ (JSON协议) │ │ (SIP→内部) │ │ (H.323→内部) │ │ │ └──────┬───────┘ └──────┬───────┘ └────────┬─────────┘ │ │ └──────────────────┴───────────────────┘ │ │ Protocol Bridge (M8) │ └──────────────────────────────┬──────────────────────────────┘ │ gRPC ┌──────────────────────────────┴──────────────────────────────┐ │ 核心服务层 (Core Layer) │ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │ │ Signaling │ │ Room │ │ Media │ │ │ │ Service │ │ Service │ │ Router │ │ │ └─────┬──────┘ └────────────┘ └─────┬──────┘ │ │ │ │ │ │ ┌─────┴────────────────────────────────┴─────┐ │ │ │ Media Router (路由决策) │ │ │ └────────────────────┬───────────────────────┘ │ └────────────────────────┼────────────────────────────────────┘ │ ┌────────────────────────┴────────────────────────────────────┐ │ 媒体处理层 (Media Layer) │ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │ │ SFU Node │ │ MCU │ │ Transcoder │ │ │ │ (选择性转发)│ │ (混音混画面)│ │ (转码适配) │ │ │ └─────┬──────┘ └─────┬──────┘ └────────────┘ │ │ │ │ │ │ ┌─────┴───────────────┴─────────────────────┐ │ │ │ Media Pipeline (RTP/RTCP) │ │ │ └─────────────────────────────────────────────┘ │ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │ │ Recording │ │ Streaming │ │ Cascade │ │ │ │ Service │ │ Service │ │ Manager │ │ │ └────────────┘ └────────────┘ └────────────┘ │ └─────────────────────────────────────────────────────────────┘ ``` ## 📦 模块概览 ### 核心模块 (M1-M16) | 模块 | 名称 | 职责 | 状态 | |------|------|------|------| | M1 | WS Gateway | WebSocket 信令网关 | ✅ | | M2 | SIP Gateway | SIP 协议网关 | ✅ | | M3 | H.323 Gateway | H.323 协议网关 | ✅ | | M4 | TURN/STUN | NAT 穿透服务 | ✅ | | M5 | Signaling Service | 信令编排服务 | ✅ | | M6 | Room Service | 房间管理服务 | ✅ | | M7 | Media Router | 媒体路由控制 | ✅ | | M8 | Protocol Bridge | 协议桥接 | ✅ | | M9 | SFU Node | 媒体转发引擎 | ✅ | | M10 | MCU Service | 混音混画面 | ✅ | | M11 | Recording Service | 录制服务 | ✅ | | M12 | Streaming Service | 直播服务 | ✅ | | M13 | Transcoder Service | 转码服务 | ✅ | | M14 | Cascade Manager | 级联管理 | ✅ | | M15 | Client Core | C++ 核心库 | ✅ | | M16 | Client Bindings | 平台绑定 | ✅ | ### 扩展模块 (M17-M19) | 模块 | 名称 | 职责 | 状态 | |------|------|------|------| | M17 | Auth Service | 用户认证、API Key、RBAC | ✅ | | M18 | Chat Service | 实时聊天、频道、在线状态 | ✅ | | M19 | Notification Service | 推送通知、邮件、短信 | ✅ | ## 🚀 快速开始 ### 前置条件 - Docker 24.0+ - Docker Compose 2.20+ - Go 1.21+ (本地开发) - 至少 8GB 可用内存 ### 一键启动 ```bash # 克隆项目 git clone https://github.com/webrtc-platform/webrtc-server.git cd webrtc-server # 启动所有服务 ./deploy/scripts/start.sh # 查看服务状态 ./deploy/scripts/status.sh ``` ### 服务端口 | 服务 | 端口 | 说明 | |------|------|------| | WS Gateway | 8080 | WebSocket 信令 | | Signaling | 8081/50051 | HTTP/gRPC | | Room | 8082/50053 | HTTP/gRPC | | SFU Node | 8085/50055 | HTTP/gRPC | | Auth Service | 8091/50061 | HTTP/gRPC | | Chat Service | 8092/50062 | HTTP/gRPC | | Notification | 8093/50063 | HTTP/gRPC | | Redis | 6379 | 缓存 | | NATS | 4222/8222 | 消息总线 | | PostgreSQL | 5432 | 数据库 | | MinIO | 9000/9001 | 对象存储 | | Prometheus | 9090 | 监控 | | Grafana | 3000 | 可视化 | ## 📁 项目结构 ``` webrtc-server/ ├── docs/ # 项目文档 │ ├── README.md # 文档中心 │ ├── architecture/ # 架构设计 │ ├── api/ # 接口设计 │ ├── modules/ # 模块设计 │ ├── development/ # 开发指南 │ ├── testing/ # 测试策略 │ ├── deployment/ # 部署指南 │ └── guides/ # 运维指南 │ ├── deploy/ # 部署相关 │ ├── docker/ # Docker 配置 │ │ ├── Dockerfile.go-service # Go 服务 Dockerfile 模板 │ │ └── prometheus.yml # Prometheus 配置 │ ├── scripts/ # 部署脚本 │ │ ├── init.sh # 初始化环境 │ │ ├── build.sh # 构建镜像 │ │ ├── start.sh # 启动服务 │ │ ├── stop.sh # 停止服务 │ │ ├── logs.sh # 查看日志 │ │ ├── status.sh # 查看状态 │ │ ├── clean.sh # 清理资源 │ │ └── test.sh # 运行测试 │ └── kubernetes/ # K8s 配置 │ ├── api/ # Proto 定义 │ ├── proto/ # .proto 文件 │ └── go/ # 生成的 Go 代码 │ ├── pkg/ # 共享库 │ ├── errors/ # 统一错误码 │ ├── logger/ # 结构化日志 │ └── websocket/ # WebSocket 工具 │ ├── services/ # 微服务 (19个) │ ├── ws-gateway/ # M1: WebSocket 网关 │ ├── sip-gateway/ # M2: SIP 网关 │ ├── h323-gateway/ # M3: H.323 网关 │ ├── turn-server/ # M4: TURN/STUN │ ├── signaling-service/ # M5: 信令服务 │ ├── room-service/ # M6: 房间服务 │ ├── media-router/ # M7: 媒体路由 │ ├── protocol-bridge/ # M8: 协议桥接 │ ├── sfu-node/ # M9: SFU 节点 │ ├── mcu-service/ # M10: MCU 服务 │ ├── recording-service/ # M11: 录制服务 │ ├── streaming-service/ # M12: 直播服务 │ ├── transcoder-service/ # M13: 转码服务 │ ├── cascade-manager/ # M14: 级联管理 │ ├── auth-service/ # M17: 认证服务 │ ├── chat-service/ # M18: 聊天服务 │ └── notification-service/ # M19: 通知服务 │ ├── client/ # 客户端 SDK │ ├── core/ # M15: C++ 核心库 │ │ ├── include/ # 头文件 │ │ ├── src/ # 实现 │ │ ├── tests/ # 单元测试 │ │ └── CMakeLists.txt │ └── bindings/ # M16: 平台绑定 │ ├── windows/ # WinRT │ ├── ios/ # Objective-C++ │ ├── android/ # JNI + Java │ ├── harmonyos/ # N-API │ ├── web/ # WASM │ └── CMakeLists.txt │ ├── tests/integration/ # 跨服务集成测试 │ ├── docker-compose.yml # Docker Compose 配置 ├── .dockerignore # Docker 构建排除 ├── .env # 环境变量 ├── go.mod # Go 模块定义 ├── go.work # Go 工作区 └── README.md # 本文件 ``` ## 📚 文档 - [架构设计](./docs/architecture/overview.md) — 系统整体架构 - [接口设计](./docs/api/overview.md) — 15 个接口定义 - [模块设计](./docs/modules/overview.md) — 19 个模块规格 - [代码规范](./docs/development/code-standards.md) — 编码规范 - [测试策略](./docs/testing/strategy.md) — 测试金字塔 - [部署指南](./docs/deployment/docker.md) — Docker 部署 - [故障排查](./docs/guides/troubleshooting.md) — 常见问题 ## 🧪 测试 ```bash # 运行所有测试 ./deploy/scripts/test.sh # 运行单元测试 go test ./... -count=1 -short # 运行集成测试 go test ./tests/integration/... -count=1 # 查看覆盖率 go test ./... -coverprofile=coverage.out go tool cover -html=coverage.out ``` ## 🛠️ 技术栈 | 类别 | 技术 | |------|------| | 服务端 | Go 1.21+ (pion/webrtc 生态) | | 客户端核心 | C++17 | | 内部通信 | gRPC + NATS JetStream | | 数据库 | PostgreSQL + Redis Cluster | | 对象存储 | MinIO (S3 兼容) | | 编排 | Kubernetes | | 可观测性 | Prometheus + Grafana + Jaeger | | 认证 | JWT + bcrypt | | 通知 | APNs/FCM + SMTP + SMS | ## 🤝 贡献指南 1. Fork 本项目 2. 创建功能分支 (`git checkout -b feature/amazing-feature`) 3. 提交变更 (`git commit -m 'Add amazing feature'`) 4. 推送分支 (`git push origin feature/amazing-feature`) 5. 创建 Pull Request 请确保: - 代码通过 `go vet` 检查 - 所有测试通过 - 新增功能有对应的单元测试 - 代码符合项目规范 ## 📄 许可证 本项目采用 MIT 许可证 — 详见 [LICENSE](LICENSE) 文件。 ## 📮 联系方式 - 项目主页: https://github.com/webrtc-platform/webrtc-server - 问题反馈: https://github.com/webrtc-platform/webrtc-server/issues - 文档中心: ./docs/README.md --- > **注意**: 本项目为架构设计与原型实现,生产环境部署前需要进行安全审计和性能优化。