WebRTC 实现一对一通信

WebRTC 实现一对一通信

需要使用的 API 简介

  • getUserMedia:用于从用户的摄像头和麦克风获取媒体流。通过调用该API的方法,可以请求用户授权,并获取音频和视频的本地媒体流用于后续处理和传输。
    方法:navigator.mediaDevices.getUserMedia()
  • RTCPeerConnection:用于在浏览器之间创建点对点连接,处理音视频流的传输和通信。通过这些方法,可以创建连接、交换媒体信息、处理ICE候选等,实现音视频通话功能。
    方法:new RTCPeerConnection(), createOffer(), createAnswer(), setLocalDescription(), setRemoteDescription(), addIceCandidate(),onicecandidate(),ontrack(),addTrack()。

相关术语

  1. SDP(Session Description Protocol):SDP是一种用于描述媒体流参数的协议。在WebRTC中,设备之间通过交换SDP来协商媒体流的设置。SDP描述了媒体流的编解码器、分辨率、传输协议等信息。
  2. ICE(Interactive Connectivity Establishment):ICE是一种用于处理网络连通性和NAT穿越的技术。它允许设备在不同的网络环境中建立直接连接。ICE使用候选项(Candidates)来表示设备的网络地址,通过交换候选项,设备可以找到合适的路径建立连接。
  3. STUN(Session Traversal Utilities for NAT)服务器:STUN服务器用于帮助设备发现自己的公共IP地址和端口,以克服NAT限制。设备可以通过向STUN服务器发送请求,获取自己的公共地址,并将其用作候选项。
  4. TURN(Traversal Using Relays around NAT)服务器:TURN服务器是作为备选方案的中继服务器。如果设备无法直接建立点对点连接(例如,由于防火墙或限制),它可以通过TURN服务器中继数据流。

一对一通话流程

在这里插入图片描述

上述流程图,其实就做了两件事:

  1. 媒体协商:PeerA与PeerB通过交换双方的SDP(会话描述协议),确定媒体类型、媒体格式等。
  2. 网络协商:通过交换ICE候选项(Candidate),确定对方的网络位置。

两个协商都成功以后,就能实现双方的音视频通话了,也就是媒体传输。

协商过程中,因为PeerA与PeerB并不知道彼此位置的存在,PeerA与PeerB不能直接通信,这就是需要中间人来传话,中间人就是信令服务器。

ICE是一种应用在公网的技术,帮助Peer实现自己身份(地址)的确认。事实上,在许多场景中,我们都是基于局域网进行生产开发,也就是每一端都清楚彼此的身份(固定IP),就能知道对方的身份(固定IP),所以ICE的过程是不必要的,可以直接将自己的candidate告诉对方。

关于局域网下P2P通信以及协商流程见下图:

在这里插入图片描述

参考

  1. https://juejin.cn/post/7267892210304565303
  2. https://blog.csdn.net/qq_27890899/article/details/135019080
  3. https://blog.csdn.net/qq_18286031/article/details/126226393
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

UestcXiye

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

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

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

打赏作者

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

抵扣说明:

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

余额充值