五、WebRTC实现一对一通信

一、浏览器对WebRTC的支持

Chrome\Safari\FireFox等主流浏览器对WebRTC的支持。

二、遍历音视频设备

navigater.mediaDevices.enumerateDivices().
then(gotDevices)

三、采集音视频数据

navigator.mediaDevices.getUserMdia(constraints)
.then(gotMediaStream)

四、MediaTream与MediaStreamTrack

MediaTream 流

MediaStreamTrack 轨

五、本地视频预览

<video>    标签  srcObject

六、信令状态机

Init

join

joined

离开--->Init

other_jointed-->join_conn

byte--->join_unbind

七、RTCPeerConnection

多个功能模块组成(网络处理、服务质量模块、音视频引擎模块)

1、创建RTCPeerConnection对象

let pc = new RTCPeerConnection(configuration)
configuration json格式的参数。

2、RTCPeerConnection与本地视频数据绑定

ls.getTracks().forEach((strack)=>{
        pc.addTrack(track,ls);
    }
)

3、媒体协商

交换的内容格式是SDP。(数据格式、加密方法等)

A用户媒体协商

pc.createOffser()--->SDP格式Offer.

serDescription()---->保存Offer

Offer通过信令发送到对方。

B用户媒体协商

B 接收到A的Offser

setRemoteeDescritiong()-->保存Offer

pc.createAnswer()--->SDP格式Answer.

serLocalDescription()---->保存Answer

Answer通过信令发送到对方。

4、ICE

INteractive connenectivity establishment,交互式连接建立

(1)Candidate

远端的机器信息{address,port,protocol},CandidateType,ufrag.

(2)收集Candidate

host类型Candidate,通过主机网卡获取

srflx类型Candidate,从STUN服务器中获取得IP和端口生成的。

replay类型Candidate,从TRUN服务器中获取得IP和端口生成的。

(3)交换Candidate

收集好后,通过信令发送给对方。对方接收Candidate后,会与本地Candidate形成CandidatePair。

(4)尝试链接

5、SDP与Candidate消息交换

sdp、Candidate,message

客户端A--->服务器-->其他客户端

6、远端音视频渲染

pc.ontrack = getRemoteeStream();
设置回调,监听数据的到来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gdliweibing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值