WebRTC 系列(一、简介)

news2024/11/15 23:35:54

一、什么是 WebRTC

WebRTC 全称是 Web Real­Time Communication,是一个用于实时通讯的技术,Google 公司在 2010 年用 6829 万美元将其从 Global IP Solutions 公司收购,并于 2011 年开源,不得不说 Google 确实是一家伟大的公司,花这么多钱买到的技术,说开源就开源。

二、为什么用 WebRTC

由于 WebRTC 封装得足够完善,所以它使音视频实时对话变得简单,足够客户端来说只需要少量的代码就能实现实时通话的目的。现在,WebRTC 已经成为 H5 的标准之一,并且它也支持 Android 和 iOS。

我觉得它至少有以下优点:

  1. 各端统一,名为 “Web”,但其实只要遵循该协议,手机端、PC端、终端设备都能实现音视频互通。
  2. 对音视频捕获有较好封装,开发者无需关心视频捕获过程,桌面共享也有较好支持。
  3. 开源

另外,它还解决了实时音视频的两个难点:

1.网络协商

两端之间如果想要在互联网上通信,必须先要找到一条可通讯的链路,实际情况中大部分的设备是没有自己的独立公网 IP 的,所以我们需要进行 NAT(Network Address Translation,网络地址转换),WebRTC 使用 STUN 和 TURN 协议来帮助我们完成这个操作。

2.媒体协商

两端之间建立好通讯链路后,可以通讯了,还想要实现音视频画面交换,那你给对方的音视频数据对方得能够解码才能播放和渲染,对方给你的音视频数据同样你也得能够解码才能播放和渲染,所以在交换数据之前,你们得互相知道对方能够解码什么样的格式,才好给对方想要的。WebRTC 在会在通讯之前通过 Session Description Protocol(SDP)先进行一个友好协商,交换双方的媒体能力,从而选择达成一个共识。

三、怎么用 WebRTC

奉上一张经典图:

其实这个流程图就已经很清晰了,能看懂这个流程图,再按照这个流程编写代码就能实现音视频通话了。网上的很多 demo 一上来就会讲如何搭建 STUN/TURN 服务器,但我反而觉得这个是其次的,想快速看到音视频效果的大部分还是做客户端开发的小伙伴,对服务端怎么操作可能不是很熟悉,这是其一。其二呢是我们在写 demo 的时候一般还是在局域网内的,比如自己家里的两个设备,连接的都是家里的 wifi,还不需要打洞这个操作,所以我觉得网络穿透的优先级并不高,等我们明白 WebRTC 怎么用了,看到效果了,再学习如何搭建打洞服务器也不迟。

后面的 demo 我就会按照本地 demo、局域网点对点通话、局域网多端通话这样的方式一步一步来记录。

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

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

相关文章

uniapp 引入插件市场的echart插件,使用指南!+踩坑记录!!血泪史!!!

此文章适用于微信小程序中,在uniapp做的小程序中使用echarts 插件地址:echarts-for-wx - DCloud 插件市场 插件网页往下翻有详细的使用步骤,这里简短的贴上几张图片 以下是我 项目中的使用情况,分享给大家: 1.一键导…

网关和spring cloud网关技术Gateway

文章目录一、网关1.1 网关是什么1.2 API网关的作用二、Spring Cloud Gateway2.1 简介2.2 搭建步骤2.3 路由断言工厂2.3.1 什么是路由断言工厂2.3.2 Spring Cloud Gateway提供的11 种断言工厂2.4 网关过滤器2.4.1 介绍2.4.2 网关过滤器作用2.4.3 过滤器配置2.4.4 全局过滤器Glob…

【STM32学习】模数转换器——ADC

【STM32学习】模数转换器——ADC零、参考一、ADC转换耗时二、转换模式三、对某些寄存器的理解1、ADC_CR22、ADC_SQRX四、库函数注意事项零、参考 STM32固件库(标准外设库)入门学习 第七章 ADC数模转换(一) 刘凯:STM32…

flyway:数据库移植框架,再也不用担心历史版本表结构管理问题

0. 引言 在开发周期较长,或者需求变更频繁,涉及多版本发布的项目中,我们常常遇到这样的问题: 改了表结构,开发环境执行了,忘记保存,发测试、生产环境时又要重写一遍DDL多人开发,都…

ChatGPT如何应用在数据治理的具体场景中?

自从ChatGPT爆火以来,技术圈的爆炸新闻是一波接一波,让人目不暇接,突然有了一种“人间一日,AI一年的感觉”。上周就有几条重磅新闻,来跟大家分享一下: New Bing 对所有用户放开,注册即可用周三…

每个企业经营者都应该了解的几个网络安全趋势

每个企业主都应了解的一些网络安全趋势: 1. 对实时数据可见性的需求增加 根据 IBM 发布的调查数据,企业发现并遏制漏洞的平均时间为 277 天。这种漏洞得不到解决的时间越长,泄露的数据就越多。这反过来会对您的业务产生更大的影响。企业需要…

【无人机】基于灰狼优化算法的无人机路径规划问题研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

蓝桥杯0基础学习

目录 Split()分隔字符串 StringBuilder用法 反转字符串中的单词 LocalDate用法 LocalDate类具体方法 查询年月日 修改时间 判断日期先后,是否是闰年,月份年份长度 对时间进行加减操作 跑步锻炼 使用LoaclDate解法 没使用LocalDate解法 next()…

Linux学习_设备树理论

Linux学习_设备树总结三种写驱动的方法资源和驱动在同一个文件里资源用 platform_device 指定、驱动在 platform_driver 实现资源用设备树指定驱动在 platform_driver 实现设备树的语法实际使用时,include模板小改常用属性#address-cells、#size-cells、regcompatib…

DBSCAN聚类算法及Python实现

DBSCAN聚类算法 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,可以将数据点分成不同的簇,并且能够识别噪声点(不属于任何簇的点)。 DBSCAN聚类算法的基…

告诉老默我想学Spring Cloud了(新手篇):从0到1搭建Spring Cloud项目(实际项目开发的浓缩精华版)

告诉老默我想学Spring Cloud了(新手篇):从0到1搭建Spring Cloud项目一、前言二、如何选择版本2.1 SpringCloud 和 Spring Boot 版本选型2.1.1 Spring Cloud 版本与 Spring Boot 版本关系2.1.2 选择具体的合适版本2.2 第三方组件的版本选型三、…

SpringCloud之Eureka原理分析与实战(注册与发现)

目录 1、从本质理解服务治理思想 2、为什么选择Spring Cloud服务治理组件 3、Spring Cloud Eureka服务发现 3.1 Eureka的优势 3.2 Eureka架构组成 3.3 搭建Eureka Server 实战 3.3.1 添加依赖 3.3.2 开启服务注册 3.3.3 添加YML配置 3.3.4 访问服务 3.4 搭建Eureka …

【c语言】指针数组、数组指针

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ…

打造出ChatGPT的,是怎样一群人?

震惊世界的ChatGPT&#xff0c;要多少人才能开发出来&#xff1f;几百&#xff0c;还是几千&#xff1f; 答案是&#xff1a;87个人。 老实说&#xff0c;刚看到这个数字真是惊到我了&#xff0c;印象里&#xff0c;之前看媒体报道各大巨头人工智能人才储备时&#xff0c;动辄…

学编程应该选择什么操作系统?

今天来聊一个老生常谈的问题&#xff0c;学编程时到底选择什么操作系统&#xff1f;Mac、Windows&#xff0c;还是别的什么。。 作为一个每种操作系统都用过很多年的程序员&#xff0c;我会结合我自己的经历来给大家一些参考和建议。 接下来先分别聊聊每种操作系统的优点和不…

Linux服务器如何查看CPU使用率、内存占用情况

Linux服务器如何查看CPU使用率、内存占用情况 作为Linux运维工程师&#xff0c;系统维护过程以及日常工作中需要我们经常查看CPU使用率、内存使用率、带宽占用&#xff0c;从资源使用的程度分析系统整体的运行情况。 在 Linux 上查看资源使用情况有很多命令可以参考&#xff0c…

【SpringMVC】9—底层原理

⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记链接&#x1f449;https://github.com/A-BigTree/Code_Learning ⭐⭐⭐⭐⭐⭐ 如果可以&#xff0c;麻烦各位看官顺手点个star~&#x1f60a; 如果文章对你有所帮助&#xff0c;可以点赞&#x1f44d;…

基于springboot和ajax的简单项目 02 代码部分实现,xml文件sql语句优化 (中)

上次说到了log/log_list.html的doGetObjects()&#xff0c;其中有doFindPageObjects&#xff08;&#xff09;方法。 找到全部的日志对象&#xff0c;并且输出到div上。这里是后台的代码。 01.pojo对象&#xff0c;这里需要序列化保存。序列化的作用是保存对象到内存缓存中&am…

腾讯38K测试良心分享,熬夜整理10万字详细软件测试面试笔记

国内的互联网面试&#xff0c;恐怕是现存的、最接近科举考试的制度。 这是由于互联网IT行业的求职者太多了&#xff0c;如果考察的是清一溜的算法题和设计题&#xff0c;那么会要求面试官有极高的技术水平&#xff0c;还要花大量的时间成本和精力。 所以&#xff0c;八股文面…

普通人如何使用ChatGPT接单挣钱-第一弹

嘿&#xff0c;我是灵牧&#xff0c;今天这一期给大家带来的是普通人如何使用chatGPT挣钱的第一期 第一弹&#xff1a;通过GPT写一个Tkinter数独案例赚取&#xffe5;50 事情原委&#xff1a; 今天在接单群里看到一个Tkinter写数独的需求案例&#xff0c;想要加一个独立的弹…