网站首页 > 博客文章 正文
- 项目背景:已上线
- 技术栈:golang、webRTC、Redis
- 效果图:
主要功能
- 利用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.19
- MYSQL VERSION 8.0.32
依赖
- github.com/redis/go-redis/v9 v9.3.0
- github.com/go-sql-driver/mysql v1.7.1
- github.com/zeromicro/go-zero v1.5.3
- github.com/pion/rtcp v1.2.12
- github.com/pion/rtp v1.8.3
- github.com/pion/sctp v1.8.9
- github.com/pion/sdp/v3 v3.0.6
- github.com/pion/transport/v2 v2.2.4
- github.com/pion/turn/v2 v2.1.4
- github.com/pion/webrtc/v3 v3.2.22
前提条件
- WebRTC 相关的 API 需要 Https(或者 localhost)环境支持,因为在浏览器上通过 HTTP 请求下来的 JavaScript 脚本是不允话访问音视频设备的,只有通过 HTTPS 请求的脚本才能访问音视频设备。
- WebRTC 旨在实现点对点工作,因此用户可以通过最直接的路由进行连接。但是,WebRTC 是为了应对实际网络而构建的。客户端应用需要遍历 NAT 网关和防火墙,点对点网络需要回退机制,以防直接连接失败。在此过程中,WebRTC API 使用 STUN 服务器获取您的计算机的 IP 地址,使用 TURN 服务器作为中继服务器,以防点对点通信失败。
猜你喜欢
- 2025-07-14 边缘计算网关的实现原理和技术特点-网关的实现原理
- 2025-07-14 笔记本遇到人工智能会怎样?英特尔这次又要革命了
- 2025-07-14 《权力的游戏:冰龙》:虐你到天昏地暗
- 2025-07-14 腾讯开源框架TarsCpp-rpc设计分析-server(二)
- 2025-07-14 90后小伙一首神曲收获数十亿流量 但不想当明星
- 2025-07-14 英特尔发布两款AI芯片SpringCrest和SpringHill
- 2025-07-14 Icepak环境级热分析——户外产品工业设计
- 2025-07-14 基于WebRTC的Android移动端无线视频传输
- 2025-07-14 Mavenir的“融合分组核心网”为Ice挪威公司的4G和5G网络提供支持
- 2025-07-14 freeswitch的ACL规则(freeswitch originate 详解)
你 发表评论:
欢迎- 最近发表
-
- 解决Win10打开软件提示“服务器没有及时响应或控制请求”
- 用友UAP解开非结构化大数据处理与分析的密码
- Windows 25H2 修复底层崩溃(windows修复环境)
- 开源技巧:使用Docker实现交互式任务
- Win11 任意版本 直接安装 Android 应用 教程完整版
- Windows Terminal已成为Windows 11操作系统的默认终端
- 那些好莱坞电影中炫酷的特效 原来是这么拍的
- Windows 10 Build 21327.1010发布:测试服务管道更新
- Made in China: The story behind the label
- PowerShell登录远程Linux系统(powershell开启远程桌面)
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- googlecloud (64)
- flutterrun (59)
- 系统设计图 (58)
- powershellfor (73)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- qcombobox样式表 (68)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)