作者:Tsahi Levent-Levi(原文链接)
翻译:刘通
原标题:How WebRTC Works
前文链接:WebRTC是如何工作的1; WebRTC是如何工作的2
WebRTC API视角
WebRTC主要有三个主要的API大类:
1. getUserMedia
2. PeerConnection
3. Data Channel
getUserMedia
getUserMedia负责让用户能够访问摄像头,麦克风和屏幕。它对那些在本地上工作,而不需要实时通话的人来说也有价值。
一下是独立的getUserMedia的一些应用:
# 拍摄用户的档案照片
# 采集音频样本,并且把它们发给语音转文字引擎
# 录制音频和视频,而不会由于丢包导致质量下降
我相信你还能想到一些其他的应用
PeerConnection
PeerConnection是WebRTC的心脏,也是最难实现最难理解的部分。从某种程度上来说,它可以做任何事情。
# 它处理所有的SDP消息交换过程(不通过网络本身发送,而是生成他们并处理输入的消息)
# 它实现ICE以连接媒体通道,如果需要的话,要通过TURN中继。
# 它实时地对音视频数据进行编码和解码
# 它通过采用自适应的抖动缓冲区,带宽估计,数据丢包隐藏,前向纠错以及其他算法来处理网络问题,这些算法你并不想了解,但往往最终必须要学习它们。
# 它使用诸如回声消除算法来处理本地音频问题。
对等连接内部影响最终媒体质量的因素大部分都是基于启发式的。这是一组特定的规则。因此,不同的实现可能会有不同的表现以及不同的媒体质量。
DataChannel
我早些的时候讨论过数据通道。
唯一需要补充的是:
1. 数据通道可以配置为可靠或者不可靠的。如果将它们设置为不可靠,则消息不会在其上面进行自动重传。某些情况,你可能会更想要这种情况。也可以将它们配置为按照传递消息的方式进行排序,或者是配置为无序的。
2. 数据通道被设计为在类似于WebSocket的API级别上工作,所以一旦打开它的话就可以用类似WebSocket的方式思考它。
你可以在这里找到关于人们在数据通道上做什么的一些想法。当然你还有很多其他可以使用它的方法。
未完待续……