ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

一天一个开发技巧:如何基于WebRTC建立P2P通信?

2021-06-22 14:33:47  阅读:263  来源: 互联网

标签:SDP 技巧 接收端 音视频 PeerConnection P2P websocket 方法 WebRTC


目前EasyGBS平台已经支持Webrtc协议的视频流输出了,对我们来说是一个很大的进步。webrtc及时性、低延时的优势可以让视频输出行业达到一个新高度,本文我们主要是和大家分享一下开发过程中webrtc建立P2P的流程,流程主要分为两个部分,一个是发起端,一个是接收端,下面就这两个部分的运行详细讲解一下。

 

 

发起端

a、发起端创建websocket长连接。

b、创建PeerConnection对象,并主要监听onicecandiate、addstream和onconnectionstatechange方法。onicecandiate方法就是数据的收集,在通过websocket发送给接收端进行PeerConnection的addIceCandiate方法进行保存和设置;addstream方法就是获取到的远端流并进行播放;onconnectionstatechange方法就是PeerConnetion连接远端状态(connectioned代表连接成功,disconnected代表断开)。

c、打开本地音视频设备,并将音视频添加到PeerConnection对象上,用到的是addStream或addTrack(此方法只能添加单个流,可使用二次此方法来添加多流)方法。

d、使用PeerConnection的createOffer方法来获取SDP信息,SDP包含各种音视频编解码和加密等相关参数。

e、PeerConnection的setLocalDescription方法把改SDP保存设置进去,在通过websocket服务器发送给接收端。

f、发起端接收到接收端发送过来的SDP信息,并通过PeerConnection的setRemoteDescription方法保存设置进去。

g、这样就可进行相互通信。

接收端

a、接收端创建websocket长连接。

b、创建PeerConnection对象,并主要监听onicecandiate、addstream和onconnectionstatechange方法。onicecandiate方法就是数据的收集,再通过websocket发送给接收端进行PeerConnection的addIceCandiate方法进行保存和设置;addstream方法就是获取到的远端流并进行播放;onconnectionstatechange方法就是PeerConnetion连接远端状态(connectioned代表连接成功,disconnected代表断开)。

c、打开本地音视频设备,并将音视频添加到PeerConnection对象上,用到的是addStream或addTrack(此方法只能添加单个流,可使用二次此方法来添加多流)方法。

d、接收发送端发送过来的offer SDP信息,再通过PeerConnection的setRemoteDescription方法保存设置。

e、在使用PeerConnection的createAnswer方法来获取SDP信息,SDP里面也包含各种音视频等相关参数。并通过websocket服务器发送给发起端。

f、接收到发起端发送过来的SDP信息,并通过PeerConnection的setRemoteDescription方法保存设置进去。

这样就可以相互通信。

总结

1、a~c步骤是一样的;

2、相互设置对方的SDP和ICE信息;

3、监听PeerConnection的addstream来获取远端流;

4、以下是本人总结的主要流程图。

 

 

 

标签:SDP,技巧,接收端,音视频,PeerConnection,P2P,websocket,方法,WebRTC
来源: https://www.cnblogs.com/TSINGSEE/p/14918439.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有