WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音通话或视频聊天的技术,是谷歌2010年以6820万美元收购Global IP Solutions公司而获得的一项技术。WebRTC提供了实时音视频的核心技术,包括音视频的采集、编解码、网络传输、显示等功能,并且还支持跨平台:windows,linux,mac,android。虽然WebRTC的目标是实现跨平台的Web端实时音视频通讯,但因为核心层代码的Native、高品质和内聚性,开发者很容易进行除Web平台外的移殖和应用。很长一段时间内WebRTC是业界能免费得到的唯一高品质实时音视频通讯技术。

首先是直播,直播非常火。直播的主播端会有需求,在网页端进行开播,因为网页端的屏幕比较大、视频比较清晰、处理能力比较强。同时,也非常有意思,我们一个客户也在用我们网页端的SDK做直播的监控。大家也知道,直播开播的房间数很多,在一个网页上可以监控40-50个房间,来做直播的巡视员,用网页端的实时音视频SDK是比较方便的。

另外一个是在线教育,在线教育的老师端一般都在PC上,如果要安装应用程序,有些老师也不是很懂电脑技术,要去配置的话就比较麻烦。如果有网页端免安装的方案的话,他们用起来的话,用户体验也会比较好。在线教育除了音视频,还要求有屏幕共享、白板,因为都是H5的技术,所以与Web端的SDK集成起来的话也会非常方便。

最后就是视频会议,大家在公司里用过浏览器的视频会议的话都会有体验,HR发一个链接,某一个时间点你点这个链接,除此之外还有一些说明,你要安装哪些东西,这个会比较复杂。现在有了免安装的WebRTC之后,大家对视频会议的体验也会上升一个台阶。这边列的这几个是比较典型的场景,其实还有远程医疗、企业协作之类的。即时通讯聊天软件app开发可以加蔚可云的v:weikeyun24咨询

网页端的实时音视频有什么特点:

首先-在浏览器端:
    依赖于浏览器获取音视频的能力,以及强大的网页上的渲染能力,所以,就能够为高清的通信体验打下基础。同时,相比移动端来说,屏幕比较大,视窗选择也比较灵活;
    第二-跨平台:
    大家都了解浏览器对各个终端的特殊性,不止PC上有浏览器、移动端上有浏览器,甚至是一些知名的社交APP也嵌入了浏览器。这需要一个跨平台的体验,现在支持WebRTC的浏览器也越来越多了,这也是网页实时通信的一个特点;
    第三-免安装,方便接入:
    随着WebRTC的普及,它不需要安装任何插件就可以实现网页端的实时通信。

如果说到网页端、浏览器端的实时通信的话,大家首先会想到的就是Webex,它的体验是非常不错的,也培养了一大群目标用户,让用户认知到在浏览器上就可以进行视频的沟通,打开了一个市场。但是,它有一个缺点,就是必须安装浏览器的插件和扩展程序,和GoToMeeting是一样的,非常不方便。另一种做法是,在PC上安装一个应用程序,通过这个程序来代理获取、处理音视频的流,网页端只是做渲染和展示。

在很长一段时间里,这些网页端的用户觉得这个技术就是这样的,体验就是这样的,无法提升了。直到2011年,WebRTC技术的出现,并且由谷歌做推广。WebRTC带来的体验是因为免安装才受到了关注。现在在差不多6年的发展时间里,其实也有很多的质疑声,比如,Google的项目会不会半途而废,各大浏览器厂商会不会不支持这种打通浏览器生态的想法。

首先,来看一下目前知识WebRTC浏览器和平台的情况。

最早支持WebRTC的是Firefox和Chrome,之后是Opera,跟随者chrome支持WebRTC,它们内核是一样的。微软前两年提出了一个ORTC的协议,跟WebRTC有些相似。ORTC发展并不顺利,现在在edge中开始支持WebRTC。近期苹果更新了IOS系统之后,Safari 11也开始支持WebRTC了。在安卓平台上,其实很早就开始支持了WebRTC。

我们再从协议栈的角度来看一下。WebRTC 1.0 Spec已经基本定稿了,除了一些比较细节的问题还没有最终确认。各个浏览器对标准的支持也越来越好。虽然谷歌自己也在推广这个技术,但是谷歌自己的浏览器Chrome对WebRTC 1.0的支持并不是很好,这是因为谷歌在内部对WebRTC做了很多实验性的东西。Chrome团队对外声称,会在今年底,完全跟上WebRTC 1.0的标准。

另外一个方面,看一下开源社区,举几个比较典型的开源项目:

Kurento:它是功能比较强大的一个多媒体处理框架,支持WebRTC协议栈。它可以作为Media server,后台有转码的能力,并且有OpenCV处理能力;
    Licode:可以作为WebRTC的轻量通信平台,是纯转发的服务器处理模式;
    Janus:可以作为WebRTC通信网关,比较轻量;
    React-Native-WebRTC:值得关注的是React-Native-WebRTC,现在越来越多的开发者开始转向前端,JS。这种情况在国外更为普遍。在开源社区上出现了这么一个项目,封装了一个WebRTC的模块,开发者就可以很方便的在手机上来实现带有实时通信能力、兼容WebRTC的应用。

对于开发者来说,如何用这个技术、如何能够构建起一个WebRTC的系统?其实是有一段必经之路。

我们知道WebRTC的底层是基于P2P连接,是点对点的通信。很多开发者上手的时候,都会去做P2P质量的检验。比如说一个公司的产品经理告诉开发人员说“现在WebRTC很火,你给我整一个WebRTC的系统。”八成的开发人员会交付这样一个网状结构WebRTC的架构。

那么,完全基于点对点之间通信的架构有什么特点?延时会比较小。但是,有一个很大的缺点。这种点对点音视频流的传递,每一个用户都要给另外一个用户传自己的视频流,这样对它上行带宽的压力很大。并且,每一路视频流都是独立进行采集编码,这对浏览器端编码压力的考验也很大。有人会问,能不能只采集一次编码,然后就把这个流发给不同的终端接收者?很遗憾,这是不行的。因为WebRTC的协议是做端到端的质量策略优化,所以它有一些策略调整,都是端对端的RTCP来实现,必须要经过多次的编码,然后分别传输给不同的接收者。

如果按刚才介绍的这个架构,开发人员交付给产品的话,肯定会打回来的,因为大家都知道,上行带宽非常宝贵,也非常受限。为了解决这个问题,开发人员会做一些深度的研究,发现领域内的WebRTC架构其实中间加了一个点,这个点就是服务器,典型的媒体服务器只做多路流的转发,不做后台的媒体处理和转码。

上节提到的Janus和Licode开源项目都可以实现转发媒体服务器的功能。它的特点是,每个终端用户只要上传一路流到中间服务器,节省了带宽。同时SFU只是做转发,所以对延时的影响相对比较小。弊端是,如果有两路接收者,下行带宽的能力不一样,一个是500K,一个是2m,由于源端发送者只送一路流,所以就很难适配多路的终端。

改成纯转发的媒体服务器之后,它还有一些弊端,开发人员又会想办法说,我在中间这个节点加上混流的功能。大家也可以从这个架构当中看出来,在服务器端收到不同的两路视频流之后,会分别做解码、拼接合成、编码。根据不同接收者的带宽情况,分别给不同的接收者发送不同profile的视频流。这就解决了,如果是多个接收端的用户,无法做到带宽的适配。这个缺点也很明显,中间做转码必然带来延时,其次是转码服务器的成本很高,但是,确实节省了下行的带宽,

介绍了几种典型的WebRTC的系统架构之后,开发人员可以基于刚才说的几个开源项目,可以很方便的搭建出,或者是不用费太多的时间就可以搭建出这么一个Demo的系统,是不是故事就到此结束了?其实还差很远,这边还有很多隐藏的坑。

即时通讯开发之网页端实时音视频技术WebRTC相关推荐

  1. 即时通讯开发时移动端实时音视频直播技术之处理

    视频或者音频完成采集之后得到原始数据,为了增强一些现场效果或者加上一些额外的效果,我们一般会在将其编码压缩前进行处理,比如打上时间戳或者公司 Logo 的水印,祛斑美颜和声音混淆等处理.在主播和观众连 ...

  2. 浅析即时通讯开发之移动端实时音视频直播技术编码和封装

    视频编码是本系列一个重要的部分,如果把整个流媒体比喻成一个物流系统,那么编解码就是其中配货和装货的过程,这个过程非常重要,它的速度和压缩比对物流系统的意义非常大,影响物流系统的整体速度和成本.同样,对 ...

  3. 开源实时音视频技术WebRTC在Windows下的简明编译教程

    1.前言 随着音视频技术的不断普及,Google推出的 WebRTC 越来越受到大家的喜欢.现在很多直播产品都是基于WebRTC 进行二次开发做出来的. WebRTC是提供了一整套处理实时音视频的开源 ...

  4. 浅析即时通讯开发中移动端实时消息推送技术

    实时消息推送在移动端互联网时代很平常,也很重要,它的存在让智能终端真正成为全时信息传播的工具.本文将从移动端无线网络的特点来谈谈实时消息推送的技术原理及相关问题,希望能给你带来些许启发. 移动端实时消 ...

  5. 开源实时音视频技术WebRTC中RTP/RTCP数据传输协议的应用

    1.前言 RTP/RTCP协议是流媒体通信的基石.RTP协议定义流媒体数据在互联网上传输的数据包格式,而RTCP协议则负责可靠传输.流量控制和拥塞控制等服务质量保证.在WebRTC项目中,RTP/RT ...

  6. 移动端实时音视频直播技术详解(一):开篇

    移动端实时音视频直播技术详解(一):开篇 1.引言 随着互联网用户消费内容和交互方式的升级,支撑这些内容和交互方式的基础设施也正在悄悄发生变革.手机设备拍摄视频能力和网络的升级催生了大家对视频直播领域 ...

  7. 实时音视频技术(WebRTC/voip/Linphone/P2P)

    实时音视频技术(WebRTC/voip/Linphone/P2P) 视频社交与语音社交???    实时视频(直播)/语音通信.多媒体技术团队在音视频编解码.前后处理.传输等技术:   在语音社交.视 ...

  8. 分享即时通讯开发之实时音视频技术基础知识

    随着移动网络速度越来越快.质量越来越来,实时音视频技术已经在各种应用场景下全面开花,语音通话.视频通话.视频会议.远程白板.远程监控等等.实时音视频技术的开发也越来越受到重视,但是由于音视频开发涉及知 ...

  9. Android端实时音视频开发指南

    简介 yun2win-sdk-Android提供Android端实时音视频完整解决方案,方便客户快速集成实时音视频功能. SDK 提供的能力如下: 发起 加入 AVClient Channel AVM ...

最新文章

  1. 用 Flask 来写个轻博客 (33) — 使用 Flask-RESTful 来构建 RESTful API 之二
  2. Java对象之间相同属性的赋值
  3. ios UISearchBar搜索框的基本使用
  4. vue-json-excel前端导出excel教程
  5. 漫画 | 程序员联名把产品经理告上县衙,并列了8大罪状(下)
  6. 前端工程师应该怎么发展?
  7. Html中代码换行造成空格间距的问题
  8. PWN--collision
  9. MyBatis3教程
  10. macOS Mac10.15修改登录界面背景
  11. 使用Python查看并显示图像
  12. 【PyQt】重写系统事件之拖动改变窗口大小
  13. 嵌入式linux 保存参数的方法
  14. 第四节课 hadoop总结
  15. java后台查询手机号码归属地
  16. 李云大连理工计算机系2015级,大连理工大学考研研究生导师简介-李秀英
  17. 今夜月色必然明朗 水浒
  18. java无锁数据结构,无锁有序链表的实现
  19. 调用android邮件程序,Android开发中怎样调用系统Email发送邮件(多种调用方式)
  20. Xilinx的FPGA硬件设计一——电源篇

热门文章

  1. Debezium报错处理系列之三十三:Unexpected error while connecting to MySQL and looking at BINLOG_FORMAT
  2. VMWare虚拟机局域网网络配置,主机访问虚拟机上的网站(端口映射)
  3. 浅析虚拟化技术之esxi网络管理
  4. 一个80年小子的创业道理,和兄弟们共享
  5. EXCEL 如何同时递增日期跟星期?
  6. 人生苦短,我用小程序刷面试题
  7. van Emde Boas树实现
  8. 类似花间的直播app
  9. miniPCIe接口CAN卡及其使用特点
  10. python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)