五、WebRTC实现一对一通信
一、浏览器对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实现一对一通信相关推荐
- 前端webRTC实现一对一(也可以转化为一对多)视频聊天及视频流截图上传(拍照上传)——WebRTC实战
一个使用webRTC进行一对一或一对多视频通话的demo并可以对播放视频流截图拍照上传 点击查看具体webRTC API 最终效果如图 一.这个demo满足了: 1.PC端获取远程APP操作人员的后置 ...
- 通过WebRTC实现实时视频通信(三)
通过WebRTC实现实时视频通信(一) 通过WebRTC实现实时视频通信(二) 通过WebRTC实现实时视频通信(三) 在这篇文章中我们继续了解WebRTC的相关API,RTCPeerConnecti ...
- webrtc服务器janus通信方法学习二
webrtc服务器janus通信方法学习二 网关部署了一个客户端可以利用的接口.这个janus.js库以透明的方式使用它,其中与之交流的接口都封装好了,也可以自己使用其他方式进行通信,我不使用js接口 ...
- zigbee基础应用(五)uart串口通信
zigbee基础应用(五)uart串口通信 1.硬件篇 P0.2为RX P0.3为TX 2.芯片篇 用到的芯片的概况 3.计算篇 波特率的计算公式,通过对UxBAUD.BAUD_M和UxGCR.BAU ...
- IOS端使用WebRTC实现一对一音视频通话
前言 WebRTC 实现P2P音视频通话--原生IOS端使用WebRTC实现一对一音视频通话将基于前两篇博客<<信令服务器>><<stun/trun P2P穿透和转 ...
- WebRTC 实现P2P音视频通话——原生IOS端使用WebRTC实现一对一音视频通话
IOS端使用WebRTC实现一对一音视频通话 前言 环境 一.环境配置 搭建项目,配置权限,通过CocoaPods安装第三方库 二.音视频通话的实现 音视频通话实现主要分为两部分,信令客户端以及web ...
- php如何实现局域网,局域网中是如何实现一对一通信
我们知道,局域网采用广播信道进行传输,广播信道可以实现一对多的通信.但现实中并不总是要进行一对多的通信的,那么如何在两台主机之间进行一对一的通信呢?这个问题不是那么简单的,我们需要考虑多个方面:主机是 ...
- 移动开发第五次作业 近场通信
一.Bluetooth.WiFi和NFC技术的简介 1.Bluetooth 蓝牙的起源 蓝牙的历史实际上要追溯到第二次世界大战.蓝牙的核心是短距离无线电通讯,它的基础来自于跳频扩频(FHSS)技术,由 ...
- 虚拟串口与串口服务器,串口服务器USR-DR302与虚拟串口进行一对一通信
一.实物接线 串口服务器DR302网线直连电脑,串口线直连电脑 二.串口服务器302测试说明 本测试是模块默认设置连接电脑测试通信 三.串口服务器302测试目的 测试模块与虚拟串口间的数据透传 四.要 ...
最新文章
- IC/FPGA笔试/面试题分析(七)建立时间和保持时间类型考题汇总分析
- ubuntu 修改root密码
- 外中断---汇编学习笔记
- Nacos自定义共享 Data Id 配置
- Request download hierarchy check
- vnc连接服务器怎么配置文件,vnc服务器和客户端怎么配置文件
- python3迭代器和可迭代对象,Python3学习(8)--迭代,可迭代的和迭代器
- linux之EXT2文件系统--理解block/block group/索引结点inode/索引位图
- 你以为你懂MySQL索引?阿里的面试官:你还太嫩!
- 机器视觉:百万像素工业镜头
- jq+layui之保存修改的表状态
- php重写mysql类_如何成功重写旧的mysql-php代码与已弃用的mysql_ *函数?
- Kotlin Compose 标准组件
- 基于javaweb+mysql的在线购书系统网上书店图书商城(前台、后台)(java+Springboot+ssm+mysql+maven)
- Uniapp引入和使用阿里矢量图
- aria2最新tracker服务器,Aria2自动更新BT Tracker服务器列表的方法
- 2019.07.22--自我总结--分析问题三W原则+做事PDCA法则
- 敷衍的面试|记录问题仅供参考,不代表最终答案
- user模块功能完成crud-王荣荣如此唯美
- Python爬虫教程——入门一之爬虫基础了解
热门文章
- 2020年中国研究生数学建模竞赛A题
- 新手入门必备,分享5个自媒体实用工具,效率和收益都翻倍
- 【转载】SpringBoot 事件发布监听机制使用
- Sqoop_import数据导入
- vue项目中使用pdf.js预览pdf文件
- 20181020遭遇战
- Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 论文笔记
- Windows 使用 rasterio 读取 tif 图像
- USACO铜组测试3
- Humming Bird A20 SPI2驱动编译