https://github.com/MsloveDl/bbb4go
https://github.com/pion/ion
https://pionion.github.io/docs/frontend/Intro/
WebRTC,名称源自网页即时通信(英语:Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的API。它于2011年6月1日开源并在Google、Mozilla、Opera支持下被纳入万维网联盟的W3C推荐标准。
WebRTC(Web Real-Time Communication)项目的最终目的主要是让Web开发者能够基于浏览器(Chrome\FireFox...)轻易快捷开发出丰富的实时多媒体应用,而无需下载安装任何插件,Web开发者也无需关注多媒体的数字信号处理过程,只需编写简单的Javascript程序即可实现,W3C等组织正在制定Javascript 标准API,目前是WebRTC 1.0版本,Draft状态;另外WebRTC还希望能够建立一个多互联网浏览器间健壮的实时通信的平台,形成开发者与浏览器厂商良好的生态环境。同时,Google也希望和致力于让WebRTC的技术成为HTML5标准之一,可见Google布局之深远。
WebRTC提供了视频会议的核心技术,包括音视频的采集、编解码、网络传输、显示等功能,并且还支持跨平台:windows,linux,mac,android。
https://baike.baidu.com/item/WebRTC/5522744?fr=aladdin
https://blog.51cto.com/u_13943015/3278961
http://www.tsingsee.com/product/easyrtc/
https://www.open-open.com/lib/view/open1438261468191.html
https://blog.csdn.net/kangshaojun888/article/details/118695459
https://gitee.com/openmeeting2/openmeeting2
http://www.kangshaojun.com/
https://www.oschina.net/project/tag/227/video-conferencing
https://www.oschina.net/p/coolmeeting
https://www.oschina.net/p/mediasoup
https://www.oschina.net/p/rabbit-ex
https://www.oschina.net/p/openmeeting2
WebRTC,即Web Real-Time Communication,web实时通信技术。简单地说就是在web浏览器里面引入实时通信,包括音视频通话等。
WebRTC实时通信技术介绍
如何使用
媒体介绍
信令
STUN和TURN介绍
对等连接和提议/应答协商
数据通道
NAT和防火墙穿透
简单应用
其它
媒体介绍
先来看下WebRTC中的本地媒体:
1、WebRTC中的媒体
轨道(MediaStreamTrack,代表设备或录制内容可返回的单一类型的媒体,唯一关联一个“源”,WebRTC不能直接访问或控制“源”,对“源”的一切控制都通过轨道实施;一个“源”可能对应多个轨道对象)
流(MediaStream,轨道对象的集合)
信令
在WebRTC中,信令起着举足轻重的作用。但实现没有标准化,比如http、websocket、xmpp等。
1、信令的作用
协商媒体功能和设置
标识和验证会话参与者的身份(交换SDP对象中的信息:媒体类型、编解码器、带宽等元数据)
控制媒体会话、指示进度、更改会话、终止会话
双占用分解
简单地说,信令就是协调通讯的过程,一旦信令服务建立好了,两个客户端之间建立了连接,理论上它们就可以进行点对点通讯了。
2、信令的传输
WebRTC要求在两个对等端建立双向的信令通道,通常有三种方式来传输WebRTC信令:http、websocket、数据通道
3、WebRTC中的服务器
WebRTC提供了浏览器端的P2P通信,但并不意味着WebRTC不需要服务器。撇开应用服务器不说,至少以下两种服务器是必须的:
浏览器之间建立通信前交换各种元数据(信令)的服务器(信令服务)
穿越NAT和防火墙的服务器(stun、turn、rsip等)
4、信令交互和RTCPeerConnection的建立
WebRTC使用RTCPeerConnection建立连接传送流数据,在建立RTCPeerConnection实例之后,想要建立点对点的信道,需要做两件事:
确定本机上的媒体流的特性,比如分辨率、编解码能力啥的(SDP描述符)
连接两端的主机的网络地址(ICE Candidate)
通过offer和answer交换SDP描述符:
甲和乙各自建立一个PC实例
甲通过PC所提供的createOffer()方法建立一个包含甲的SDP描述符的offer信令
甲通过PC所提供的setLocalDescription()方法,将甲的SDP描述符交给甲的PC实例
甲将offer信令通过服务器发送给乙
乙将甲的offer信令中所包含的的SDP描述符提取出来,通过PC所提供的setRemoteDescription()方法交给乙的PC实例
乙通过PC所提供的createAnswer()方法建立一个包含乙的SDP描述符answer信令
乙通过PC所提供的setLocalDescription()方法,将乙的SDP描述符交给乙的PC实例
乙将answer信令通过服务器发送给甲
甲接收到乙的answer信令后,将其中乙的SDP描述符提取出来,调用setRemoteDescripttion()方法交给甲自己的PC实例
其实WebRTC定义了两组主要的功能,分别是:媒体捕获(getUserMedia(),前面已介绍)、媒体传输。对等连接和提议/应答协商的概念是媒体传输的核心。
1、对等连接
RTCPeerConnection接口是WebRTC的主要API,用来在P2P端建立媒体连接及数据连接路径。RTCPeerConnection对象的构造函数有一系列属性,最主要的是iceServers属性,表示服务器地址列表。用于帮助透过NAT和防火墙建立会话。
2、提议/应答协商
要在二者之间建立连接,必须在二者之间建立会话。offer/answer是一种“一次性通过”型协商机制。实际中该过程可能会反复多次。
WebRTC使用RTCSessionDescription对象表示提议和应答。每个浏览器都将生成一个该对象。
3、JavaScript提议/应答协商控制
https://www.cnblogs.com/vipzhou/p/7994927.html
WebRTC易于使用,只需极少步骤便可建立媒体会话。有些消息在浏览器和服务器之间流动,有些则直接在两个浏览器(成为对等端)之间流动。
1、建立WebRTC会话
建立WebRTC连接需要如下几个步骤:
获取本地媒体(getUserMedia(),MediaStream API)
在浏览器和对等端(其它浏览器或终端)之间建立对等连接(RTCPeerConnection API)
将媒体和数据通道关联至该连接
交换会话描述(RTCSessionDescription)
https://www.cnblogs.com/SingleCat/p/11315349.html