一人会议展示
会议列表
主要功能利用WebRTC(Web Real-Time Communications)技术,允许网络应用或者站点,在不借助中间媒介和不需要了解音视频编码器相关技术的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。封装WebRTC(Web Real-Time Communications)相关接口,构建RTC基础服务。在WebRTC(Web Real-Time Communications)的基础之上,通过SFU(Selective Forwarding Unit)架构来实现高可用、高性能的网络音视频中间件。架构图

架构图
术语解释1. RTC 技术指的是实时通信技术(Real-Time Communication),它是一种用于在网络上实现实时音频、视频和数据传输的技术。
2. Track:代表一个stream 的信息,可以是音频、视频或自定义数据。
3. Room:代表real-time 的客户端与服务端的一次会话,基于同步状态机制的容器对象。
4. RTP(实时传输协议):RTP是用于在IP网络上传输音频和视频等实时多媒体数据的协议。
5. RTSP(Real Time Streaming Protocol)是一种用于控制实时多媒体流传输的网络协议。RTSP 本身并不具备音视频数据传输的能力,通常需要与 RTP结合使用,RTP 负责传输实际的音视频数据,而 RTSP 则负责控制和管理这些数据流。
6. RTCP(实时传输控制协议):RTCP是RTP的控制协议,用于传输与媒体流相关的控制信息,如参与者列表、媒体流统计数据和网络质量反馈等。
7. RTMP(Real-Time Messaging Protocol)是一种用于实时流传输的协议。它最初由 Adobe Systems开发,用于在 Flash 平台上传输音频、视频和数据。是 Adobe 的专有协议,它的使用受到一些限制,可能需要相应的许可或使用费用。
8. SRTP(安全实时传输协议):SRTP是RTP的扩展,提供了对实时多媒体数据的加密和身份验证功能,以保护数据的安全性和完整性。
9. SIP(Session Initiation Protocol)是一种应用层协议,用于建立、修改和终止多媒体会话(如音频、视频、即时消息等)。是一种客户端/服务器协议,通过 SIP 服务器来处理各种会话请求和响应。主要目的是在不同终端设备之间建立通信并传递媒体数据。SIP 会话可以使用 UDP 或 TCP 进行传输,使用 Session Description Protocol(SDP)描述媒体参数和属性。
10. NAT(网络地址转换)是一种常见的网络技术,用于将私有网络中的多个设备映射到公共网络上的单个IP地址。
11. STUN(Session Traversal Utilities for NAT)(会话穿透实用工具):STUN是一种协议,用于在NAT后面的设备上发现自己的公共IP地址和端口。
12. TURN(Traversal Using Relays around NAT)(遍历使用中间设备):当两个设备无法直接通信(例如由于双方都在NAT后面),TURN可以作为一种中继机制。
13. ICE(Interactive Connectivity Establishment)(交互式连接建立):ICE是一种框架,用于在对等连接或实时通信中选择最佳的通信路径。ICE利用STUN来获取公共地址,利用TURN作为备用中继机制,并通过多种候选路径进行探测,以确保设备之间能够建立可靠的连接。
开发环境系统环境Golang VERSION 1.19MYSQL VERSION 8.0.32依赖github.com/redis/go-redis/v9 v9.3.0github.com/go-sql-driver/mysql v1.7.1github.com/zeromicro/go-zero v1.5.3github.com/pion/rtcp v1.2.12github.com/pion/rtp v1.8.3github.com/pion/sctp v1.8.9github.com/pion/sdp/v3 v3.0.6github.com/pion/transport/v2 v2.2.4github.com/pion/turn/v2 v2.1.4github.com/pion/webrtc/v3 v3.2.22前提条件WebRTC 相关的 API 需要 Https(或者 localhost)环境支持,因为在浏览器上通过 HTTP 请求下来的 JavaScript 脚本是不允话访问音视频设备的,只有通过 HTTPS 请求的脚本才能访问音视频设备。WebRTC 旨在实现点对点工作,因此用户可以通过最直接的路由进行连接。但是,WebRTC 是为了应对实际网络而构建的。客户端应用需要遍历 NAT 网关和防火墙,点对点网络需要回退机制,以防直接连接失败。在此过程中,WebRTC API 使用 STUN 服务器获取您的计算机的 IP 地址,使用 TURN 服务器作为中继服务器,以防点对点通信失败。