一、浏览器对WebRTC的支持

Chrome\Safari\FireFox等主流浏览器对WebRTC的支持。

二、遍历音视频设备

navigater.mediaDevices.enumerateDivices().
then(gotDevices)

三、采集音视频数据

navigator.mediaDevices.getUserMdia(constraints)
.then(gotMediaStream)

四、MediaTream与MediaStreamTrack

MediaTream 流

MediaStreamTrack 轨

五、本地视频预览

<video>    标签  srcObject

六、信令状态机

Init

join

joined

离开--->Init

other_jointed-->join_conn

byte--->join_unbind

七、RTCPeerConnection

多个功能模块组成(网络处理、服务质量模块、音视频引擎模块)

1、创建RTCPeerConnection对象

let pc = new RTCPeerConnection(configuration)
configuration json格式的参数。

2、RTCPeerConnection与本地视频数据绑定

ls.getTracks().forEach((strack)=>{pc.addTrack(track,ls);}
)

3、媒体协商

交换的内容格式是SDP。(数据格式、加密方法等)

A用户媒体协商

pc.createOffser()--->SDP格式Offer.

serDescription()---->保存Offer

Offer通过信令发送到对方。

B用户媒体协商

B 接收到A的Offser

setRemoteeDescritiong()-->保存Offer

pc.createAnswer()--->SDP格式Answer.

serLocalDescription()---->保存Answer

Answer通过信令发送到对方。

4、ICE

INteractive connenectivity establishment,交互式连接建立

(1)Candidate

远端的机器信息{address,port,protocol},CandidateType,ufrag.

(2)收集Candidate

host类型Candidate,通过主机网卡获取

srflx类型Candidate,从STUN服务器中获取得IP和端口生成的。

replay类型Candidate,从TRUN服务器中获取得IP和端口生成的。

(3)交换Candidate

收集好后,通过信令发送给对方。对方接收Candidate后,会与本地Candidate形成CandidatePair。

(4)尝试链接

5、SDP与Candidate消息交换

sdp、Candidate,message

客户端A--->服务器-->其他客户端

6、远端音视频渲染

pc.ontrack = getRemoteeStream();
设置回调,监听数据的到来

五、WebRTC实现一对一通信相关推荐

  1. 前端webRTC实现一对一(也可以转化为一对多)视频聊天及视频流截图上传(拍照上传)——WebRTC实战

    一个使用webRTC进行一对一或一对多视频通话的demo并可以对播放视频流截图拍照上传 点击查看具体webRTC API 最终效果如图 一.这个demo满足了: 1.PC端获取远程APP操作人员的后置 ...

  2. 通过WebRTC实现实时视频通信(三)

    通过WebRTC实现实时视频通信(一) 通过WebRTC实现实时视频通信(二) 通过WebRTC实现实时视频通信(三) 在这篇文章中我们继续了解WebRTC的相关API,RTCPeerConnecti ...

  3. webrtc服务器janus通信方法学习二

    webrtc服务器janus通信方法学习二 网关部署了一个客户端可以利用的接口.这个janus.js库以透明的方式使用它,其中与之交流的接口都封装好了,也可以自己使用其他方式进行通信,我不使用js接口 ...

  4. zigbee基础应用(五)uart串口通信

    zigbee基础应用(五)uart串口通信 1.硬件篇 P0.2为RX P0.3为TX 2.芯片篇 用到的芯片的概况 3.计算篇 波特率的计算公式,通过对UxBAUD.BAUD_M和UxGCR.BAU ...

  5. IOS端使用WebRTC实现一对一音视频通话

    前言 WebRTC 实现P2P音视频通话--原生IOS端使用WebRTC实现一对一音视频通话将基于前两篇博客<<信令服务器>><<stun/trun P2P穿透和转 ...

  6. WebRTC 实现P2P音视频通话——原生IOS端使用WebRTC实现一对一音视频通话

    IOS端使用WebRTC实现一对一音视频通话 前言 环境 一.环境配置 搭建项目,配置权限,通过CocoaPods安装第三方库 二.音视频通话的实现 音视频通话实现主要分为两部分,信令客户端以及web ...

  7. php如何实现局域网,局域网中是如何实现一对一通信

    我们知道,局域网采用广播信道进行传输,广播信道可以实现一对多的通信.但现实中并不总是要进行一对多的通信的,那么如何在两台主机之间进行一对一的通信呢?这个问题不是那么简单的,我们需要考虑多个方面:主机是 ...

  8. 移动开发第五次作业 近场通信

    一.Bluetooth.WiFi和NFC技术的简介 1.Bluetooth 蓝牙的起源 蓝牙的历史实际上要追溯到第二次世界大战.蓝牙的核心是短距离无线电通讯,它的基础来自于跳频扩频(FHSS)技术,由 ...

  9. 虚拟串口与串口服务器,串口服务器USR-DR302与虚拟串口进行一对一通信

    一.实物接线 串口服务器DR302网线直连电脑,串口线直连电脑 二.串口服务器302测试说明 本测试是模块默认设置连接电脑测试通信 三.串口服务器302测试目的 测试模块与虚拟串口间的数据透传 四.要 ...

最新文章

  1. IC/FPGA笔试/面试题分析(七)建立时间和保持时间类型考题汇总分析
  2. ubuntu 修改root密码
  3. 外中断---汇编学习笔记
  4. Nacos自定义共享 Data Id 配置
  5. Request download hierarchy check
  6. vnc连接服务器怎么配置文件,vnc服务器和客户端怎么配置文件
  7. python3迭代器和可迭代对象,Python3学习(8)--迭代,可迭代的和迭代器
  8. linux之EXT2文件系统--理解block/block group/索引结点inode/索引位图
  9. 你以为你懂MySQL索引?阿里的面试官:你还太嫩!
  10. 机器视觉:百万像素工业镜头
  11. jq+layui之保存修改的表状态
  12. php重写mysql类_如何成功重写旧的mysql-php代码与已弃用的mysql_ *函数?
  13. Kotlin Compose 标准组件
  14. 基于javaweb+mysql的在线购书系统网上书店图书商城(前台、后台)(java+Springboot+ssm+mysql+maven)
  15. Uniapp引入和使用阿里矢量图
  16. aria2最新tracker服务器,Aria2自动更新BT Tracker服务器列表的方法
  17. 2019.07.22--自我总结--分析问题三W原则+做事PDCA法则
  18. 敷衍的面试|记录问题仅供参考,不代表最终答案
  19. user模块功能完成crud-王荣荣如此唯美
  20. Python爬虫教程——入门一之爬虫基础了解

热门文章

  1. 2020年中国研究生数学建模竞赛A题
  2. 新手入门必备,分享5个自媒体实用工具,效率和收益都翻倍
  3. 【转载】SpringBoot 事件发布监听机制使用
  4. Sqoop_import数据导入
  5. vue项目中使用pdf.js预览pdf文件
  6. 20181020遭遇战
  7. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 论文笔记
  8. Windows 使用 rasterio 读取 tif 图像
  9. USACO铜组测试3
  10. Humming Bird A20 SPI2驱动编译