进击的WebRTC:我们为什么需要它?

搭建WebRTC服务器 把/data/apprtc/src/collider/目录下的三个目录(collider、collidermain、collidertest)复制到/usr/local/go/src/目录下。b.修改 /data/apprtc/src/web_app/js/appcontroller.js,找到:440行。a.编辑文件/root/go/src/collidermain/main.go,修改房间服务器的地址。a.修改/data/apprtc/src/app_engine/constants.py。 阅读详情
作者|毛玉杰编辑|覃云编者按:有人说 2017 年是 WebRTC 的转折之年,2018 年将是 WebRTC 的爆发之年。去年,WebRTC 1.0 标准草案出炉,并将于今年正式发布。与此同时,越来越多的浏览器和厂商都开始对它进行广泛的支持,WebRTC 即将成为互联网的基础设施了。

根据腾讯全球合作伙伴大会上发布的《2017 年微信数据报告》显示,截止到 2017 年 9 月,微信日成功通话次数 2.05 次,月人均通话时长 139 分钟,月人均通话次数 19 次。通过这些数据我们可以看到,微信视频通话的出现,已潜移默化地改变了人与人通信的方式。

而回望三大运营商的数据,语音通话量在 2015 年首次出现了负增长,可以看到互联网 OTT 应用对传统语音通话业务的冲击有多强烈。正是由于这些日益完善的基础设施,更快的智能手机,更快的网络,更丰富的使用场景,实时通信的需求越来越强烈。

从 2015 开始不断涌现出的互动直播、狼人杀、抓娃娃、直播答题、线上 KTV 等创新,将常见的线下场景转至线上,也足以作为实时音视频通信风头正劲的有力佐证。

越来越多的创业者都在思考如何将线下互动的场景搬到线上,从而打造下一个风靡全民爆款的应用。

说到实时通信,不得不提到 WebRTC,WebRTC 全名为 Web Real Time Communication,从 Web 这个词就可以看出,最初这项技术是为浏览器量身打造用以实时音视频能力而准备的。

但其实 WebRTC 在不同场景下包含不同的含义,它既可以代表 Google 开源的 WebRTC 项目,又可以代表 W3C 工作组制定的 WebRTC 标准,也可以代表浏览器中的 WebRTC 接口,我们将他们统称为 WebRTC 技术。当前具有实时音视频能力的应用或者服务,或多或少都使用了 WebRTC 技术,当然所有的这些背后都离不开 Google 开源的 WebRTC 项目,下面我们扒一扒 WebRTC 背后的故事。

回溯历史:为什么需要 WebRTC

说到 WebRTC,我们不得不提到 Gobal IP Solutions,简称 GIPS。这是一家 1990 年成立于瑞典斯德哥尔摩的 VoIP 软件开发商,提供了可以说是世界上最好的语音引擎。

Skype、腾讯 QQ、WebEx、Vidyo 等都使用了它的音频处理引擎,包含了受专利保护的回声消除算法,适应网络抖动和丢包的低延迟算法,以及先进的音频编解码器。

Google 在 Gtalk 中也使用了 GIPS 的授权。Google 在 2011 年收购了 GIPS,并将其源代码开源,加上在 2010 年收购的 On2 获取到的 VPx 系列视频编解码器,WebRTC 开源项目应运而生,即 GIPS 音视频引擎 + 替换掉 H.264 的 VPx 视频编解码器。

在此之后,Google 又将在 Gtalk 中用于 P2P 打洞的开源项目 libjingle 融合进了 WebRTC。所以目前 WebRTC 提供了在 Web、iOS、Android、Mac、Windows、Linux 在内的所有平台的 API,保证了 API 在所有平台的一致性。使用 WebRTC 的好处主要有以下几个方面:

  1. 免费的使用 GIPS 先进的音视频引擎,在此之前都需要付费授权。

  2. 由于音视频传输是基于点对点传输的,所以实现简单的 1 对 1 通话场景,需要较少的服务器资源,借助免费的 STUN/TURN 服务器可以大大节约成本开销。

  3. 开发 Web 版本的应用非常方便,使用简单的 JS 接口,无需安装任何插件,即可实现音视频互通。

WebRTC 标准掀起的影响

2017 年 11 月 2 日,在经历了 6 年的时间之后,W3C WebRTC 1.0 草案正式定稿。同样也是在 2017 年,Microsoft Edge 与 Apple Safari 也纷纷宣称了在其最新的版本里支持 WebRTC 1.0 标准 API。

虽然不同浏览器厂商在某些实现细节方面有所差别,比如 Safari 只支持 H.264,不同的 SDP 描述格式等等,但除了 IE 之外,所有主流浏览器 Google Chrome、Mozilla Firefox、Apple Safari、Microsoft Edge 都已经支持 WebRTC 1.0,所有浏览器之间无插件化的音视频互通已经成为一种可能。

越来越多的终端设备上,无需借助任何插件或者 native 应用,通过打开网页链接,即可进行高质量的音视频通话,应用开发者也无需关注音视频引擎实现细节,大大节约了开发成本。

广泛的适用场景

WebRTC 适用的场景可以说是非常广泛,很多行业结合实时通信都可以创造出非常有意思的场景,传统的实时通信应用场景主要是在视频会议、视频面试、VoIP 通话、呼叫中心,产品如 WebEx、Skype 等。

当下比较火的场景主要集中在社交、游戏、体育、电视、相亲类的直播,以及互动连麦、在线教育、在线医疗、金融证券在线开户、智能硬件(如无人机)、智能家居设备如摄像头监控以及智能语音设备。

当然 WebRTC 除了提供音视频传输功能,还有一个容易被忽略的功能就是数据传输。利用点对点的传输机制,一些开发者创造出了诸如 Webtorrent 以及 PeerCDN 这样的不经过服务器的数据传输网络服务。所以 WebRTC 非常适合用来打造实时通信的应用。

而直播作为当下的热点应用,肯定少不了对于 WebRTC 的使用,而这又要提到 rtmp。

从 RTMP 到 WebRTC

从应用角度来讲,受到用户使用习惯的改变,越来越多的直播产品都开始加入视频互通的功能。同时,像视频会议、视频核保一类的应用方式也在不断增加。这影响着技术选型的变迁。

RTMP(Real Time Messaging Protocol) 实时消息传送协议是 Adobe Systems 公司为 Flash 播放器和服务器之间音频、视频和数据传输开发的开放协议。随着直播兴起,很多人都将它用在直播上。

在协议方面,rtmp 完全可以满足直播产品的需求,但由于其相对延时较高,不能满足视频互通的产品需求。于是大家很自然地将目光投向 UDP、QUIC(基于 UDP)一类延时更低的网络协议。

在技术框架方面,由于自研一套符合视频互通要求的通信系统相对复杂,不仅涉及网络传输、前端开发、移动端开发,还要解决音视频编解码中复杂的算法优化,对开发者的技术栈要求很高,所以越来越多的人选择 WebRTC。

目前来看,WebRTC 已经获得了越来越多浏览器厂商及相关技术厂商的支持,应用的前景将会更加广阔。

但是受限于 WebRTC 自身的一些缺憾,一般开发者都不是直接完全使用 WebRTC,而是根据实际场景基于 WebRTC 进行二次开发。WebRTC 本身并不是万能钥匙,不可能一套代码以及接口可以解决所有问题。

如何做二次改造?

WebRTC 是一个非常优秀的项目,但如果直接拿来使用也存在以下问题。

第一,WebRTC 使用的是对点对传输,虽然节约了服务器资源的开销,但实际使用时也带来了传输质量的问题,比如跨国以及跨运营商网络之间的传输质量往往很难保证,虽然 webRTC 有优秀的端对端质量控制算法,但在错综复杂的网络条件下,表现也很难让人满意。

第二,WebRTC 在移动端的表现也很难让人满意。早期由于缺少对于 H.264 编解码器的支持,使得移动端很长一段时间只能使用 VP8 软件编解码,导致在中低端手机上的表现较差,加上安卓自身碎片化的属性,如果不针对不同机型做适配,很难有统一的用户体验。

第三,WebRTC 是为 1 对 1 通信场景设计的,如果要实现多人的场景,还是需要借助服务端方案。即使当前有很多开源的 webRTC 服务器实现,一个流媒体中转服务器或者混流服务器的部署以及维护也是非常复杂的。

第四,在 Web 端需要面临不同浏览器之间的兼容性问题。虽然使用 AdapterJS 可以解决不同浏览器之间的接口适配问题,但除此之外依然要面临不同浏览器行为不一致的问题。可以说如果 WebRTC 如果直接拿过来商用的话,几乎是不太可能的,当下普遍的解决方案是自研,根据自身的业务场景进行二次定制开发,或者更简单一点使用第三方 SDK。

WebRTC 的前景

未来在实时通信领域,WebRTC 依然是非常重要的一块拼图。

无论是 Web 还是 Native,都非常依赖 WebRTC 提供的音视频引擎,尤其是在 Web 端,几乎所有浏览器厂商的实现都是基于 Google WebRTC 项目。随着 WebRTC 1.0 标准的定稿,各大浏览器的 WebRTC 接口已经基本得到统一。

一直以来,WebRTC 都缺少测试工具。在去年年底,Google 推出了 KITE 开源项目,用于帮助开发者检测 WebRTC 应用在不同浏览器的互通性。对于标准化社区来讲,下一步工作主要会围绕提供一组更完备的测试套件,不仅可以帮助开发者测试 WebRTC 应用在 Web 端、Native 端的互通性与体验,还有助于保证各厂商浏览器 WebRTC 接口功能的一致性,并逐步完善 WebRTC 缺失的功能。

在相关技术方面,QUIC 也进入更多人的视野。对于 WebRTC 来讲,QUIC 可以加速数据通道的连接(至少原理上可行),还可以完全替代 SCTP。但问题是,目前支持 QUIC 的浏览器只有 Chrome 和 Opera。

另一方面,各浏览器也在持续不断地修复问题,对不同硬件设备以及系统平台进行适配,保证 WebRTC 能稳定运行于除主流机型、系统版本以外,更多的设备上。

 作者简介

毛玉杰,声网 WebRTC 专家,WebRTC Committer

视频谈话记录和直播系统的实现(二)blazor+srs+nginx开发和运行环境搭建 利用.netcore blazor srs ffmpeg nginx webrtc efcore等技术实现视频谈话记录和直播系统 阅读详情

相关推荐

使用FFmpeg做视频解码

音频的压缩编码标准包含AAC,MP3,AC-3等等,视频的压缩编码标准则包含H.264,MPEG2,VC-1等等。封装格式种类很多,例如MP4,MKV,RMVB,TS,FLV,AVI等等,它的作用就是将已经压缩编码的视频数据和音频数据按照一定的格式放到一起。例如,FLV格式的数据,经过解封装操作后,输出H.264编码的视频码流和AAC编码的音频码流。视音频同步的作用,就是根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来。

yinshipin007的博客 826

Windows下搭建nginx和rtspToWebRTC以及Windows程序添加为服务开机启动和后台运行

之前的rtsp转webrtc的服务很好用(https),测试使用效果都很好,而且由于Go的特性很容易将程序编译为跨平台的程序。由于高并发的需求,一般会搭建nginx服务,Linux和openwrt上都测试过命令直接安装运行nginx可行,这里在Windows下也做简单总结便于后续服务搭建在Windows上。接下来我们总结一下搭建stun服务的搭建和使用,自己有域名以及公网服务器的话可以贡献一下空闲的流量,没有公网服务器和域名也可以在局域网下用ip玩一下。httpshttpshttpshttps。...

逍遥游的博客 3143

基于Nginx的媒体服务器技术 - 在线公开课 WebRTC

总结起来,基于Nginx的媒体服务器技术与WebRTC的结合为实时音视频通信提供了强大的支持。通过将Nginx和Kurento结合起来,我们可以构建一个可靠的媒体服务器,用于支持在线公开课等实时通信应用。通过将Nginx和Kurento结合起来,我们可以构建一个可靠的媒体服务器,用于支持在线公开课等实时通信应用。结合Nginx和WebRTC,我们可以搭建一个可靠的媒体服务器,用于处理音视频流的传输和实时通信。结合Nginx和WebRTC,我们可以搭建一个可靠的媒体服务器,用于处理音视频流的传输和实时通信。

syntax_bug719的博客 888

关于SRS-webrtc走Nginx代理

因为需求原因,以及隐私原因,在使用SRS流媒体服务器进行webrtc流播放的时候,需要使用nginx代理来代替IP+端口形式,是因为IP+端口形式webrtc的HTTP请求会直接暴露服务器信息。所以使用nginx代理SRS服务的webrtc请求,基本行不通。可以通过修改源代码实现,但不建议。个人尝试过使用nginx代理webrtc转的http请求,从而不暴露srs服务器信息。webrtc流地址播放时,srs内部转为http请求向srs流媒体服务器发送。从0开始搭建webrtc!

路虽远,行则将至 2967

WebRTC系列-WebRTC基础(一)

文章目录1. WebRTC 历史由来2. 实时音视频参数2.1 基本分类2.2 一些指标3. 音视频的一些技术难度4. WebRTC的优势 1. WebRTC 历史由来 WebEx是一家美国公司,最初于1996年由Subrah Iyar和朱敏以ActiveTouch创建;在90年代就实现了多人实时音视频会议 ; Adobe 在2002推出使用Adobe传统的流媒体协议RTMP(实时消息协议)提供视频的点播和直播服务的流媒体服务FMS(Adobe Flash Media Serve);从此推动了流媒体服务的

HOSTEN的博客 388

android广告SDK原理详解(附源码)

广大的开发者吃糠咽菜开发了一两款APP,获取了一些流量后自然就会想到流量变现,一般情况下大家会选择到百度联盟或者Google Admob这些广告服务提供商注册开发者账号,在自己的APP里面加上几行广告位代码,集成他们的广告SDK包。然后谋事在人,成事在天,只有每天看报表查查收益。   也有一些开发者为了能够提高自己的变现水平,同时接入了好几家的sdk,哪家出的收益高一点我就出哪家的广告,但是这

rmcgogo的博客 1万+

进击的WebRTC

有人说 2017 年是 WebRTC 的转折之年,2018 年将是 WebRTC 的爆发之年。去年,WebRTC 1.0 标准草案出炉,并将于今年正式发布。与此同时,越来越多的浏览器和厂商都开始对它进行广泛的支持,WebRTC 即将成为互联网的基础设施了。 根据腾讯全球合作伙伴大会上发布的《2017 年微信数据报告》显示,截止到 2017 年 9 月,微信日成功通话次数 2.05 次,月人均通话...

caodongfang126的博客 390

Spring Boot整合Apache Hop 2.3.0实战:从零搭建数据管道(附完整代码)

本文详细介绍了如何在Spring Boot项目中整合Apache Hop 2.3.0,从零开始构建可嵌入的数据管道。内容涵盖环境初始化、依赖配置、管道设计,并通过完整代码示例演示了如何通过REST API触发执行,实现数据同步与ETL流程的自动化管理,为微服务架构提供灵活的数据集成方案。

web99的专栏 632

七牛云 RTN:基于 WebRTC 零基础搭建实时音视频平台

近年来,在线教育、狼人杀、在线抓娃娃、线上 KTV 等多人视频互动模式不断涌现,实时音视频通信风头正劲,实时音视频技术 WebRTC 也因此受到了广泛关注。相关数据显示,2017-2021 年期间,全球网络实时通信(WebRTC)市场将以 34.37% 的年均复合增长率增长。(数据来源: Technavio 《全球网络实时通讯(WebRTC)市场,2017-2021》报告)   实时互动新...

u010042747的博客 1652

【47】软考软件设计师——全真模拟卷(下午题)|5道案例分析+答题模板+评分标准

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第47篇,属于**模块六:冲刺与模拟**第四篇,严格遵循软考下午题真题规范(5道案例分析题,150分钟,满分75分,45分及格),覆盖数据流图(DFD)、E-R图与关系模式、UML类图与用例图、算法设计与代码填空、设计模式应用五大核心题型。全文采用“真题级案例+分步答题模板+采分点明细+评分标准”的形式,每道题配套“审题技巧→解题步骤→规范作答模板→常见错误扣分点”,深度拆解案例分析题的得分逻辑,帮助考生掌握“按点踩分、规范表述、避坑扣分”的核心能力

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 685

【数字孪生与仿真技术】10:半导体制造中的虚拟量测技术深度解析:从多尺度建模到工业级应用

摘要:半导体制造过程中,晶圆加工需实时监测300+关键参数,传统物理量测技术面临产能损耗、延迟检测等痛点。本文系统阐述虚拟量测(Virtual Metrology)技术的完整解决方案,通过多尺度混合建模实现物理机理与数据驱动的深度融合。内容涵盖等离子体刻蚀、薄膜沉积等关键工艺的物理模型构建,LSTM神经网络的数据校正算法,以及边缘-云协同的实时部署架构。某12英寸晶圆厂实践表明,虚拟量测技术可减少70%物理量测频次,异常漏检率从18%降至3%,机台利用率提升11%。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 2548

【网易云信获奖啦】2020 年值得再读一遍的技术干货 | 下篇

12 月 22 日,SegmentFault 思否发布中国技术先锋年度评选 | 2020 中国技术品牌影响力企业榜单,网易云信入选榜单。感谢 SegmentFault 思否对网易云信在开...

netease_im的博客 368

Qt5.15.2配置安卓环境

否则,将会跳转到github,你可以自行下载解压到你设置的目录中,然后Qt会自动检测到。以上所需的工具确实有些繁多,而且如果单独下载又涉及科学上网问题,版本问题十分麻烦,好在Qt Creator 4.12之后已经可以自动下载SDK工具,NDK,基础包,openssl,以及gradle等,十分省心。回到正题,无论通过在线安装的方式,安装时勾选了Android,还是编译的方式,编译时编译了Qt Android库,想要使用Qt开发安卓应用仍然需要一些其他工作,包括安装编译安卓项目需要的SDK,NDK等。

weixin_41392061的博客 978

2020年终总结

2020年,是多灾多难的一年,也是很传奇的一年。年初,新冠肺炎,如寒流一般不可阻挡的席卷了整个华夏。庚子年正月,南方无雪,却似大雪封城。 这一年离开了坑的我简历可以说是留下污点的公司(跳槽太频繁了,我也不想)没办法,疫情都拖工资了,所以求稳,又进了一个比较大的上市公司。不过竟然降薪,非常难受,倒不是看重这几千块钱,只是这弄的我好像很菜似的。 不过,确实也是自己的求职战略出了错,我一直都是想先斩获两个备用offer,然后有底气了再去冲心仪的大厂。这不对,社招不同于校招,社招是接了offer希望你尽早过去打工的

一看就是大佬的专栏 1013

用 Message Monitoring Overview 打造接口健康驾驶舱:SAP AIF 消息监控实战解析

究竟解决了什么痛点?概括起来,这个应用把SAP AIF的接口监控,从传统的事务码和技术视角,带到了一个更加直观、业务友好的层次:(通过卡片式总览,让你在一个页面上看到所有自己负责的接口及其健康状况。通过和的联动,实现了从接口态势到具体消息的快速钻取。通过Recipient模型和应用,实现了监控职责的灵活分配。借助拖拽排序、搜索过滤等特性,让每个运维人员都可以打造属于自己的接口健康 cockpit。如果你正在做S/4HANA或项目,无论是公有云还是本地部署,只要系统启用了SAP AIF。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 106

基于 Qt C++ 开发一套西门子量子测量系统的控制与数据采集平台

sensorIdCombo->addItems({"QTS-100-001 (温度)", "QPG-200-001 (压力)", "QDS-300-001 (位移)"});precisionTable->setHorizontalHeaderLabels({"传感器ID", "类型", "标称精度", "实际精度", "校准状态"});QWidget *dispWidget = createSensorWidget("量子位移", "mm (±1μm)", 50.0, 0.001);// 传感器状态更新。

寒寒豆豆软件公司的博客 253

音视频技术开发周刊 90期

『音视频技术开发周刊』由LiveVideoStack团队出品,专注在音视频技术领域,纵览相关技术领域的干货和新闻投稿,每周一期。点击『阅读原文』,浏览第90期内容,祝您阅...

LiveVideoStack 919

具身智能:原理、算法与系统 第1章 具身智能的本质与范畴

从学术定义的角度,具身智能可被界定为"与物理环境进行有目的的能量与信息交换"的智能形式。这一定义揭示了具身智能的两个本质维度:信息处理维度与能量交互维度。与传统人工智能系统仅在信息空间操作不同,具身智能系统必须同时处理信息流与能量流,在物理约束下实现感知、认知与行动的统一。具身智能体具有三个核心构成要素:物理身体(Physical Body)、感知系统(Sensory System)与效应器(Effectors)。这三者共同构成了感知与行动的基础,使智能体能够通过物理交互而非纯粹符号操作来理解世界。

VectorShift的博客 270

iPhone 上也能用安卓系统了?!

这是「进击的Coder」的第33篇个人随想作者:崔庆才来源:崔庆才丨静觅“ 阅读本文大概需要 3 分钟。 ”今天看到一个视频,视频里一个人拿着一个 iPhone,但是里面运行的却是安卓...

静觅 824

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

2020 年 7 月 Github 上最热门的 JavaScript 开源项目

“ 阅读本文大概需要 10分钟。 ”1vuehttps://github.com/vuejs/vue Star 16048Vue.js 是构建 Web 界面的 JavaScript 库...

静觅 395

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

2020 年度开发者工具 Top 100 名单!

这是「进击的Coder」的第 157篇热点新闻译者:李磊来源:优快云“ 阅读本文大概需要 10分钟。 ”StackShare是一个开发者工具及服务分享平台,成立于 2013 年,...

静觅 817

购物系统java设计模式_【前端早读会】每天记录前端学习的过程

在这里使用学而思网校的录像设备,记录前端工程师每天学习的内容:9月2019-9-30 作用域链2019-9-29 Vue+Electron构建跨平台桌面应用2019-9-27 事件机制比较,从原生到react(下)2019-9-26 事件机制比较,从原生到react(上)2019-9-25 跨域资源共享cors2019-9-24 原型链2019-9-23 基础运动原理2019-9-2...

weixin_33469623的博客 190

一对一WebRTC视频通话系列(六)——部署到公网

本系列博客主要记录WebRtc实现过程中的一些重点,代码全部进行了注释,便于理解WebRTC整体实现。一对一WebRTC视频通话系列。

君莫笑lucky的博客 1800
上一篇: Mixed Reality Toolkit-Unity开发系列—Sharing模块
下一篇: 为什么微服务一定要有网关?
codinghello
博客等级 码龄25年 47粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值