WebRTC开源框架
1、什么是WebRTC
WebRTC (Web Real-Time Communications)是一项实时通讯的技术,旨在使得浏览器能为实时通信提供简单的JavaScript接口,让浏览器通过JS实现即时通信接口。这个接口是通过一系列的信令,建立一个浏览器与浏览器之间(peer-to-peer)的信道,这个信道可以发送任何数据,而不需要经过服务器。并且WebRTC通过实现MediaStream,通过浏览器调用设备的摄像头、话筒,使得浏览器之间可以传递音频和视频。
2、相关开源框架
当前Webrtc技术已经成熟,各大公司都在自己的产品中集成Webrtc功能,Webrtc除了要实现视音频通信外还有需要实现信令传输,而Webrtc的核心模块就是流转发模块,即流媒体服务器,如果要自已实现流媒体服务器困难还是比较大的,付出的时间成本也将不少,它里面要涉及到去研究 DTLS 协议、ICE 协议、SRTP/SRTCP 协议等方面,光理解这些协议就要花不少的时间,更何况要去实现它了,所以最快捷的办法就是使用开源的实现,在构建实时多媒体应用时,服务器技术的选择至关重要。该领域的两大巨头是Janus和MediaSoup,它们都支持 WebRTC 功能。
Mediasoup
由应用层和数据处理层组成。应用层是通过 Node.js 实现的;数据处理层由 C++ 语言实现,包括 DTLS 协议实现、ICE 协议实现、SRTP/SRTCP 协议实现、路由转发等。Mediasoup 把每个实例称为一个 Worker,在 Worker 内部有多个 Router,每个 Router 相当于一个房间。在每个房间里可以有多个用户或称为参与人,每个参与人在 Mediasoup 中由一个 Transport 代理。换句话说,对于房间(Router)来说,Transport 就相当于一个用户。
Github开源地址:https://github.com/versatica/mediasoup
Kurento
Kurento是WebRTC媒体服务器和一组客户端API,可简化针对WWW和智能手机平台的高级视频应用程序的开发。Kurento Media Server的功能包括组通信,音视频流的转码,记录,混合,广播和路由。作为一项与众不同的功能,Kurento Media Server还提供了高级媒体处理功能,包括计算机视觉,视频索引,增强现实和语音分析。Kurento模块化体系结构简化了第三方媒体处理算法(即语音识别,情感分析,面部识别等)的集成,可以由应用程序开发人员透明地用作Kurento的其余内置功能。Kurento的功能和文档都相当出众,文档尤佳,功能介绍极其透彻。Janus 则实为 C 语言开发的 WebRTC 网关,支持 GPR 协议,GitHub Star 数较多,性能也非常好。
Github开源地址:https://github.com/Kurento/kurento
https://github.com/Kurento/kurento-media-server
https://doc-kurento.readthedocs.io/en/latest/user/installation.html
Janus
Janus 是一款开源的通用 WebRTC 网关,由Meeteco设计和开发。专为实时通信而设计。其模块化架构、广泛的协议支持和丰富的功能使其成为实时多媒体应用领域最受欢迎的解决方案之一。Janus 可作为不同多媒体组件之间的桥梁,转换协议并实现各种实时功能。它不仅限于 WebRTC,还支持 SIP、RTSP 和普通 RTP 等协议。Janus 可使用插件架构进行扩展,使其适用于流媒体、视频会议和录制等各种用例。
Github开源地址:https://github.com/meetecho/janus-gateway
官网:https://janus.conf.meetecho.com/
3、Janus媒体模块
ICE:打洞,负责与Peer的连通,Janus可以部署在NAT后⾯,使⽤了libnice;
DTLS:UDP版的TLS,就是加密的UDP,WebRTC⽤来传递SRTP的密钥,使⽤了OpenSSL/BoringSSL;
RTP/RTCP:提供RTP/RTCP 封包解包的接⼝,需要发送⼀些WebRTC⽀持的RTCP包,例如FIR、PLI、RR等;
SRTP:加密的RTP,开启后WebRTC传输的RTP负载都是加密的;
SDP:提供SDP封/解包的接⼝,⽤于协商媒体的协议,可以⽤SDP对WebRTC的⼀些功能进⾏设定(编码器优先、码率限制),媒体能⼒的协商;
candidate:⽹络信息,⽹络协商;
SCTP:WebRTC的数据通道使⽤的协议,就是加上了流控的UDP,可以传输任意数据
4、Coturn打洞服务器
Github地址:
https://github.com/coturn/coturn
WebRTC开源框架的更多相关文章
- 跨平台的WebRTC客户端框架:OpenWebRTC
Webrtc的ios框架编译 http://www.th7.cn/Program/IOS/201502/390418.shtml WebRTC in WebKit : http://www.webrt ...
- Android 开源框架Universal-Image-Loader学习
Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用 Android 开源框架Universal-Image-Loader完全解析(二)--- 图片 ...
- iOS常用第三方开源框架和优秀开发者博客等
博客收藏iOS开发过程好的开源框架.开源项目.Xcode工具插件.Mac软件.文章等,会不断更新维护,希望对你们有帮助.如果有推荐或者建议,请到此处提交推荐或者联系我. 该文档已提交GitHub,点击 ...
- 值得推荐的android开源框架
1.volley 项目地址https://github.com/smanikandan14/Volley-demo (1) JSON,图像等的异步下载: (2) 网络请求的排序(scheduling) ...
- 介绍一个非常好用的跨平台C++开源框架:openFrameworks
介绍一个非常好用的跨平台C++开源框架:openFrameworks 简介 首先需要说明的一点是: openFrameworks 设计的初衷不是为计算机专业人士准备的, 而是为艺术专业人士准备的, 就 ...
- iOS超全开源框架、项目和学习资料汇总(5)AppleWatch、经典博客、三方开源总结篇
完整项目 v2ex – v2ex 的客户端,新闻.论坛.apps-ios-wikipedia – apps-ios-wikipedia 客户端.jetstream-ios – 一款 Uber 的 MV ...
- Android开源框架:NineOldAndroid
在android3.0以前的版本,要实现动画,一般是使用NineOldAndroid开源框架,之后,就可以直接使用android提供的animation API了. 仔细看过此开源框架后,可看出此框架 ...
- 【python】15个最受欢迎的Python开源框架
Django: Python Web应用开发框架 Django 应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响.Django是走大而全的方向,它最出名的是其全自动化的管理后台: ...
- 10个顶级的CSS UI开源框架
随着CSS3和HTML5的流行,我们的WEB页面不仅需要更人性化的设计理念,而且需要更酷的页面特效和用户体验.作为开发者,我们需要了解一些宝贵的CSS UI开源框架资源,它们可以帮助我们更快更好地实现 ...
- Pyhton开源框架(加强版)
info:Djangourl:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC)风格的 ...
随机推荐
- SSL证书类型价格和购买
SSL证书 SSL和HTTPS的工作机制就不多说了, 密钥交换加通道依然是非常靠谱的安全访问方式, 除非你的浏览器连证书和DNS都被劫持, 否则中间节点要解密/篡改HTTPS访问的可能性微乎其微. 现 ...
- Vue中$refs的理解
Vue中$refs的理解 $refs是一个对象,持有注册过ref attribute的所有DOM元素和组件实例. 描述 ref被用来给元素或子组件注册引用信息,引用信息将会注册在父组件的$refs对象 ...
- 基于zabbix的数据库查询各种监控数据
select FROM_UNIXTIME(clock) as DateTime, value, round(value/1024,2) as Traffic_in from history_uint ...
- django的orm多表查询作业第五题答案
5.每个作者出版的所有书的最高价格以及最高价格的那本书的名称. 用django的模型类写不出来的,只能用原生sql写这题 关于第五题,mysql5.7及以上版本,使用下面的答案 set sql_mod ...
- chrome浏览器配置自定义搜索引擎
chrome谷歌浏览器配置自定义搜索引擎 放弃百度搜索已经酝酿许久,现在搜索结果简直不忍直视.如果你想放弃使用百度搜索,并转向其他搜索引擎,头条搜索可能是一个不错的选择. 使用以下方式可以丝滑的使用其 ...
- 【Azure API 管理】APIM添加Log-to-eventhub的策略后,一些相关APIM与Event Hub的问题
问题描述 1) APIM 到Event Hub 写入日志是否有数量限制,比如每秒最大写入数量: 2) 是否可以在同一个APIM配置多个Event Hub,如果可以该APIM写入日志的峰值是 ...
- Java 开发人员调度软件项目 (java基础编程总结项目)+javaBean+测试代码+数组知识+数据结构+继承+多态+封装+自定义异常,异常处理+构造器知识+重载+重写+接口+实现接口+关键字使用(static +equalsIgnoreCase+fianl+instanceof判断类型)+向下转型与向上转型
/** * * @Description Java 开发人员调度软件项目 (java基础编程总结项目) * +javaBean+测试代码+数组知识+数据结构+继承+多态+封装+自定义异常,异常处理 * ...
- C++ STL //vector容器存放内置数组
1 //STL初始 2 // 3 //vector容器存放内置数组 4 5 #include <iostream> 6 #include <string> 7 #include ...
- 阿里巴巴/1688 api接口 获取商品详情 数据采集
iDataRiver平台 https://www.idatariver.com/zh-cn/ 提供开箱即用的阿里巴巴1688电商数据采集API,供用户按需调用. 接口使用详情请参考阿里巴巴1688接口 ...
- 在vue3中使用openlayers3实现track轨迹动画
网上太多资料代码,抄来抄去,而且版本也是v5.x版本的,部分API已经弃用 基础知识不多说,直接讲重点 三个关键变量 // 记录开始动画的时间 const startTime = ref(0); // ...