计划将自己写的视频会议系统架构写一下
ccwgpt 2024-10-30 01:35 64 浏览 0 评论
- 项目背景:已上线
- 技术栈: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 服务器作为中继服务器,以防点对点通信失败。
相关推荐
- 谷歌正在为Play商店进行Material Design改造
-
谷歌最近一直忙于在其应用程序中完成MaterialDesign风格的改造,而Play商店似乎是接下来的一个。9to5Google网站报道,有用户在Play商店的最新版本中发现了新界面,暗示该应用和网...
- 企业网站免费搭建,定制化建站CMS系统
-
科腾软件企业网站CMS管理系统已完成开发工作,首次开源(全部源码)发布。开发工具:VisualStudioEnterprise2022数据库:SQLite(零配置,跨平台,嵌入式)开发...
- 您需要的 11 个免费 Chrome 扩展程序
-
来源:SEO_SEM营销顾问大师Chrome扩展程序是SEO的无名英雄,他们在幕后默默工作,使您的策略脱颖而出并提高您的努力效率。从竞争对手研究到审核您的网站,速度比您说“元描述”还快,这些小工具发...
- 户外便携设备抗干扰困境如何破局?CMS-160925-078S-67给出答案
-
在户外复杂的电磁环境中,便携式设备中的扬声器需具备出色抗干扰能力,CUID的CMS-160925-078S-67在这方面表现突出。 从其结构设计来看,矩形框架虽主要为适配紧凑空...
- 一个基于NetCore开发的前后端分离CMS系统
-
今天给大家推荐一个开源的前后端分离架构的CMS建站系统。项目简介这是一个基于.Net3构建的简单、跨平台、模块化建站系统。系统业务简单、代码清晰、层级分明、全新架构便于二次扩展开发。支持多种数据库,...
- 本地Docker部署ZFile网盘打造个人云存储
-
前言本文主要介绍如何在LinuxUbuntu系统使用Docker本地部署ZFile文件管理系统,并结合cpolar内网穿透工具实现远程访问本地服务器上的ZFile传输与备份文件,轻松搭建个人网盘,无...
- pcfcms企业建站系统 免费+开源的企业内容管理系统
-
项目介绍pcfcms是基于TP6.0框架为核心开发的免费+开源的企业内容管理系统,专注企业建站用户需求提供海量各行业模板,降低中小企业网站建设、网络营销成本,致力于打造用户舒适的建站体验。演示站...
- 【推荐】一个高颜值且功能强大的 Vue3 后台管理系统框架
-
如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍SnowAdmin是一款基于Vue3、TypeScript、Vite5、Pinia、Arco-Desi...
- java开源cms管理系统框架PublicCMS后台管理系统
-
一款使用Java语言开发的CMS,提供文章发布,图片展示,文件下载,用户权限、站点模块,内容管理、分类等功能。可免费用于商业用途maven工程数据库脚本在工程中database文件夹下代码结构:效果...
- 一定要大量读书:当我问Deepseek,它给出的高效阅读方法厉害了!
-
一年一度的世界读书日,总该写点什么。于是,我去问Deepseek给我推荐人生破局必读的10本书,结果它给了我回复,竟然10本推荐的书籍里,我都曾经浏览过,同时还给出破局关键。而说浏览过,不是读过,是因...
- 《搜神札记》:不应磨灭的惊奇(小说《搜神记》)
-
□黄勃志怪传说的书写一直是文人墨客的后花园,晚近尤盛,从张岱到袁枚到纪昀,收集那些或阴森或吊诡的行状故事,遂成一类,到民国年间,周作人挟此遗传,捋袖子拿希腊神话动刀,乃兄鲁迅不甘其后,《故事新编》虎...
- 《如何构建金字塔》之第三章总结(构建金字塔结构的方法有)
-
“没有什么比一套好理论更有用了。”——库尔特.勒温这篇读后感依然引用了这句库尔特.勒温名言,这句话也是我读芭芭拉.明托这本书的初衷。今天就“如何构建金字塔”,我来谈谈我的读后心得。我热爱写作,但是写...
- 《助人技术》第一章助人引论内容框架
-
第一章内容基本呈现如何成为助人者(心理咨询师)以及一些相关基础知识,对于进入这个行业有兴趣以及希望通过心理咨询寻求帮助但存有疑虑的当事人,都值得一读。心理咨询的三个阶段(不是说严格的三个阶段,而是广义...
- AI助手重构读后感写作流程:从提纲到完整性思考的转换
-
大家好!你有没有遇到过读完一本书,想要写读后感,却不知道从何下手的情况呢?今天我们要来探讨一下如何利用稿见AI助手来重构读后感写作流程,从提纲到完整性思考的转换。让我们一起来看看这个全新而又实用的方法...
- 图解用思维导图做读书笔记技巧(图解用思维导图做读书笔记技巧视频)
-
做阅读笔记非常有利于读后进行有效的深入思考,而思维导图这一强大的工具其最大的特点就是架构清晰,在阅读过程中对文章的分析、总结、分类起着很大的辅助作用。思维导图读书笔记步骤:1、阅读大纲。首先要快速浏览...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- MVC框架 (46)
- spring框架 (46)
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- laravel框架 (46)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- JAVA集合框架 (47)
- mfc框架 (52)
- abb框架断路器 (48)
- grpc框架 (55)
- ppt框架 (48)
- 内联框架 (52)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)