MediaDevices
- enumerateDevices()可用的媒体输入和输出设备的列表,例如麦克风,摄像头,耳机,切换设备时用
- getDisplayMedia() 选择和授权捕捉用户选择的屏幕区域以及一个可选的音频轨道
- getSupportedConstraints()监视客户端所支持的约束属性,比如视频高宽,码率等
- getUserMedia()提示用户授权使用媒体输入,媒体输入会产生MediaStream,里面包含了请求的媒体类型的音视频
A-> Create HTCPeerConnection-流->Add Stream->CreateOffer<->Send Offer SDP <->CreateAnswer(B)
A-> Create HTCPeerConnection-流->Add Stream->CreateOffer->OnceCand date<->send Cand date <->Add Cand date(B)
A-> Create HTCPeerConnection-流->Add Stream->CreateOffer->Stream Peer to pour
WebRTC --SDP格式解析
o = 生成id 版本号 ip地址
t = 开始时间 结束时间
a= group:BUNDLE audio video 流包含音频还是包含视频(默认都会包含)
a=stream id
m=音频 端口 UDP传输TLS加密传RTP的包根据SAVPF监控传输状态 支持编码
a=协议
a=安全机制
a=加密sha-256
a=setup:actpass 当成客户端或者服务端
a=mid:audio里面是音频
a=sendrecv可以发送也可以接收
a=音频
WebRTC 点对点连接,不需要服务器进行干涉
公网IP进行交互,NAT防火墙
STUN 服务器(google服务器)获取公网ip
TURN 服务器 自己的服务器
createOffer 别人发起视频请求
createAnswer 我接听
SDP (SessionDescription) 告诉两个机器用哪种方式转码
Candidate 参与者 触发条件
在你给我answer时候
get anser 把对方添加到自己的 candidate
给对方发get offer 那接收方就要把发起者添加到 Candidate
电脑a <->NAT<->Relay server<->NAT<->电脑b
//agora.io/cn