WebRTC学习笔记01——最简单实现一对一视频通讯

news2024/12/22 19:37:37

最近开始学习WebRTC音视频通讯技术,这里来分享一下学习的内容和感受。

学习WebRTC的门槛稍微高那么一点点,需要同时具备服务端和前端的开发能力,因为我主要是做java服务端开发,这里我用到的服务端代码也是java编写的。

在写代码之前我们必须要了解一下WebRTC通讯至少需要哪些步骤。

这里举例有A、B两个人进行视频,步骤如下:

1、A进入房间,初始化RTCPeerConnection对象,设置本地推流和接收远端流的回调方法。

2、B进入房间,初始化RTCPeerConnection对象,设置本地推流的和接收远端流的回调方法。

3、B发起媒体协商请求sdp,发送给服务端,并由服务端转发给A,此时B将开启网络协商。

4、A接收到B的媒体协商请求,将sdp保存到本地;A发送媒体协商应答sdp给服务端,由服务端转发给B,此时A将开启网络协商。

5、B接收到A的网络协商应答后,将sdp保存到本地。

6、双方网络协商完成后,将回调本地推流和接收远端视频流的回调方法,此时视频接通!

ps:

1、媒体协商 请求/应答 发送成功后就会开启网络协商,从stun服务器获取打洞成功的ip地址后发送给服务器,转发给对端,对端保存到本地。

2、网络协商不需要应答,也没有应答。

3、网络协商没有先后顺序,是并行的。

代码地址如下:

https://download.csdn.net/download/lp840312696/87818278

填写不同的用户名后,进入房间最终实现的效果如下:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/567473.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阿里组织架构迎来巨变!拆分为六大业务,或可分别独立上市

“16N”组织调整是阿里巴巴“24年来最重要的一次组织变革”,六大业务集团及业务公司可以独立融资或独立上市,意味着阿里的整体估值将得到大幅提升。 马云回国、阿里巴巴宣布启动“16N”组织调整、具备条件的业务集团和公司将独立上市……一系列有关阿里…

jetcache参考文档

jetcache简介 https://github.com/alibaba/jetcache/blob/master/docs/CN/GettingStarted.md 简介 JetCache是一个基于Java的缓存系统封装,提供统一的API和注解来简化缓存的使用。 JetCache提供了比SpringCache更加强大的注解,可以原生的支持TTL、两级…

SpringBoot + Docker 实现一次构建到处运行

一、容器化部署的好处 Docker 作为一种新兴的虚拟化方式,它可以更高效的利用系统资源,不需要进行硬件虚拟以及运行完整操作系统等额外开销。 传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行宿主内…

javaweb实验:Java Web综合应用开发__基于MVC模式

目录 前言实验目的实验原理实验内容实验过程项目结构代码实现Java代码controller层AddNewsServlet类DeletrNewsServlet类LoginServlet类LogoutServlet类QueryAllNewsServlet类QueryNewsServlet类RegisterServlet类UpdateNewsServlet类 dao层NewsDao类UserDao类 daoimpl层NewsDa…

标签派单系统架构设计

需求描述 项目背景 根据员工历史成单情况,计算员工对不同类型工单的转化能力。根据员工和工单标签匹配进行派单。 业务流程图 规则描述 每10分钟,分城进行一次派单,派单规则可能会动态删减,需要支持动态配置 工单标签说明 一…

抖音seo源码开发,技术交付及故障。服务等响应

抖音seo源码开发、抖音seo源码部署、抖音seo源码开源交付及故障响应 什么是抖音SEO? 抖音SEO主要是指通过一系列优化措施,提高抖音短视频在抖音搜索结果页的排名,从而增加短视频曝光量和观看量的过程。SEO的实现需要涉及多个方面&#xff0c…

MySQL基础一篇打通,图文并茂

准备工作 直接使用MySQL提供的数据,下载MySQL示例数据库 MySQL示例数据库模式由以下表组成: Customers:存储客户的数据。Products:存储比例模型车列表。ProductLines:存储产品系列类别列表。Orders:存储…

【前端工程化】Git入门指南:轻松掌握从安装到操作!

git入门指南 安装和基本配置Bash,CMD和GUI用户名和邮箱的配置 Git仓库本地Git仓库文件状态的划分文件状态检测git忽略文件的配置(了解)文件更新提交git校验和-日志和版本回退git loggit resetgit reflog 远程仓库远程仓库的操作获取远程仓库远…

整合Springboot+MybatisPlus+达梦数据库

1、安装Windows环境的达梦数据库可视化软件 这里不做安装介绍 安装步骤很简单,提供的软件也很全面,特别是数据库迁移工具,支持市面上许多主流的大型数据库,例如:Oracle、SQLServer、MySQL、DB2、PostgreSQL、Informix…

Axure 原型模板素材哪里下载

1、Axure 原型模板素材哪里下载 如果你想要下载 Axure 原型模板素材,可以前往即时设计资源广场进行一键复用。在即时设计资源广场,你可以免费使用所有的 Axure 原型模板素材,而且没有文件数量、团队或项目数量的限制。这大大降低了资源共享的…

医疗平台,专攻医学软件方向,病历云、影像学、实验室检验

一、开源项目简介 JEHC 本开源平台重点打造医疗(专攻医学软件Web方向,病历云,影像学,实验室检验等等),IOT方向,工作流Workflow等。 JEHC-CLOUD基于Spring Cloud 2.X版本,采用前后…

当BIM遇见建筑,设计灵感无限,欣赏有趣的BIM建筑

人们常用“罗马是怎样建成的”来形容建成伟大城邦的复杂和艰辛,也因此,优秀的建筑是如何通过科学严密的设计建成,就成了值得研究的经验。随着国际化交流合作的日益增多,以及BIM先驱者标准院的技术经验引进,BIM在我们的…

zigbee 无线发送数据,呼吸灯

控制端代码: #include "hal_defs.h" #include "hal_cc8051.h" #include "hal_int.h" #include "hal_mcu.h" #include "hal_board.h" #include "hal_led.h" #include "hal_rf.h" #include &…

【服务器数据恢复】IBM服务器虚拟磁盘文件被误删除的数据恢复案例

服务器数据恢复环境: IBM X系列服务器柏科某型号存储。服务器上部署VMware ESXi虚拟主机,存储上存放虚拟机文件。 虚拟主机采用的Windows Server操作系统,部署宏桥和索菲2套应用,数据库是SQL Server。 虚拟磁盘:数据盘…

已经有MySQL了,干嘛还要学MongoDB?

三分钟的时间,通过本文你将学会 1.MongoDB主要特征 2.MongoDB优缺点,扬长避短 3.何时选择MongoDB?为啥要用它? 4.MongoDB与MySQL关键字对比 5.下载与安装MongoDB 6.Java整合MongoDB,实现增删改查 MongoDB和MySQ…

PyTorch-TensorBoard

一、介绍: TensorBoard:是一组用于数据可视化的工具。 SummaryWriter:类,用于提供一个高级API,并在给定目录中创建事件文件,向其中添加摘要和事件。 1. SummaryWriter(log_dir):log_dir表示Tens…

MySQL 索引(w字)

目录 关于索引 关于磁盘 磁盘 ​扇区 结论 MySQL 与磁盘交互基本单位 MySQL 整体轮廓 结论 关于索引 建立测试表 关于 Page 为何IO交互要是 Page 理解单个Page 理解多个Page ​页目录 复盘一下 ​B树 ​B树 聚簇索引 VS 非聚簇索引 总结(重点) …

就业内推 | 地产行业招运维,最高30k*15薪,有住房交通补贴

01 宝能 🔷招聘岗位:网络运维高级工程师 🔷职责描述: 1、负责集团各数据中心和职场网络的设计规划、实施落地和持续优化; 2、负责集团网络的日常运维工作,如服务请求和变更的处理、网络相关故障解决&#…

JSP详解

JSP的概念: 概念:Java Serve Pages Java服务端页面 一种动态的网页技术,其中可以定义Html、css、js等静态内容。还可以定义Java代码的动态内容。 JSPHtmljava JSP的存在使我们可以不用在servlet里面用输出流一行一行的写字符串&#xff0…

拿下7家大厂offer后,整理出来的笔记.....

我第一次接触自动化是在2016年。那时刚毕业一年有余,组内一直做手工功能测试,大概在2018年9月,部门领导要求测试组引入自动化。组内之前从没有开展过任何自动化,测试主管安排了一个刚入职不久的研究生同事去研究。 当时自己内心还…