wangduanduan / wangduanduan.github.io

Wubba Lubba dub-dub
https://wdd.js.org
27 stars 7 forks source link

WebRTC 基础教程 #221

Closed wangduanduan closed 5 years ago

wangduanduan commented 5 years ago

WebRTC 功能

WebRTC 架构

image

内部结构

image

架构图颜色标识说明:

WebRTC有三个模块:

WebRTC 如何通信

WebRTC 的核心组件

WebRTC 音频和视频引擎

image

WebRTC 底层协议

image

浏览器和某些非浏览器之间的呼叫,有些时候以为没有DTLS指纹,而导致呼叫失败。如下图使用JsSIP, 一个sipPhone和WebRTC之间的呼叫,因为没有携带DTLS指纹而导致呼叫失败。

emit "peerconnection:setremotedescriptionfailed" [error:DOMException: Failed to execute 'setRemoteDescription' on 'RTCPeerConnection': Failed to set remote offer sdp: Called with SDP without DTLS fingerprint.

一个完整的SIP INVITE信令。其中a=fingerprint:sha-256字段表示DTLS指纹。

a=fingerprint:sha-256 74:CD:F4:A0:3B:46:01:1C:0C:5D:04:D0:17:E5:A4:A1:04:35:97:1C:34:A3:61:60:79:52:02:F3:05:9E:7D:FE

SDP: Session Description Protocol

SDP协议用来协商两个SIP UA之间能力,例如媒体编解码能力。

sdp协议举例。sdp协议的详细介绍可以参考 RFC4566

v=0
o=- 7158718066157017333 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0
a=msid-semantic: WMS byn72RFJBCUzdSPhnaBU4vSz7LFwfwNaF2Sy
m=audio 64030 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126
c=IN IP4 192.168.2.180

加密

WebRTC对安全性是要求非常高的。无论是信令还是与语音流,WebRTC要求信息传递必须加密。

JavaScript API

参考