AWS KVS(Kinesis Video Streams)之WebRTC
STUN 、TURN 和ICE如何工作 (两个端点交互流程):
我们假设两个对等方A和B都使用WebRTC对等双向媒体流(例如,视频聊天应用程序)的情况。
要连接到B的应用程序,A的应用程序必须生成SDP offer。SDP offer包含有关A的应用程序想要建立的会话的信息,包括要使用的编解码器,这是音频还是视频会话等。它还包含 ICE candidates,它们B应用程序用于尝试连接A应用程序需要用到的A的IP和port。
为了建立ICE候选者列表,A的应用程序向STUN服务器发出了一系列请求。服务器返回发起请求的公共IP地址和端口对。A的应用程序将每对添加到ICE候选列表中,换句话说,它收集ICE候选。一旦A的应用程序完成了ICE候选者的收集,它就可以返回SDP。
接下来,A的应用程序必须通过这些应用程序进行通信的信令通道将SDP传递给B的应用程序。WebRTC标准未指定用于此交换的传输协议。它可以通过HTTPS,安全WebSocket或任何其他通信协议执行。
现在,B的应用程序必须生成一个SDP Answer。B的应用程序遵循上一步中使用的A步骤:收集ICE candidates等。然后B的应用程序需要将此SDP Answer通过信令服务器返回给A的应用程序。
在A和B交换了SDP之后,它们将执行一系列连接检查。每个应用程序中的ICE算法都从对方SDP中收到的列表中获取ICE candidates IP /端口对,并向其发送STUN请求。如果另一个应用程序返回了响应,则原始应用程序认为检查成功,并将该IP /端口对标记为有效的ICE候选者。
在对所有IP /端口对完成连接检查之后,应用程序进行协商并决定使用剩余的有效对之一。选择一对后,媒体开始在应用程序之间流动。(有效通道选择策略一般是host>p2p>releay)
如果任何一个应用程序都找不到通过连通性检查的IP /端口对,它们将向TURN服务器发出STUN请求以获取媒体中继地址。中继地址是一个公共IP地址和端口,用于转发与应用程序之间接收到的数据包并设置中继地址。然后将该中继地址添加到候选列表,并通过信令通道进行交换。
PS:实际上实现时,使用的是生成SDP和交换ICE candidates 可以是并行执行。即生成SDP并不需要与STUN服务器通信。ICE candidate 信息不用包含在SDP 中发送。这样可以提高建立链接的速度。不用等ICE candidate搜集完成后才进行信令通信。
AWS KVS(Kinesis Video Streams)之WebRTC相关推荐
- AWS KVS(Kinesis Video Streams)之WebRTC的C库
作为小白用户编译就卡出各种问题.各种环境问题各种bug调试. 针对亚马逊的kvs 的vs2019编译去除kvs的信令服务器代码,实现自己的mqtt信令控制.最终可以p2p发送视频数据和音频数据. 编译 ...
- AWS KVS(Kinesis Video Streams)之WebRTC的C库测试
想要验证AWS KVS with WebRTC的嵌入式C库,我们将其源码编译(详见WebRTC编译过程)后,可以运行其提供的sample,注:该过程是在Linux环境上. 1.编译结束后,我们在bui ...
- AWS KVS(Kinesis Video Streams)之WebRTC集成过程(六)
因为我们的实际的使用过程是智能摄像头设备(门铃/Camera)和Echoshow(实际上是Alexa)对接,实现语音全双工,我们计划集成AWS提供的完整的WebRTC的方案(SDK),因此在所有依赖库 ...
- AWS KVS(Kinesis Video Streams)之WebRTC移植编译(五)
在使用KVS完整的WebRTC的SDK(包括信令.STUN/TURN等),我们还需要编译(详见SDK的依赖项)如下两个库 1.amazon-kinesis-video-streams-producer ...
- AWS KVS(Kinesis Video Streams)之WebRTC移植编译(一)
本文在于记录amazon-kinesis提供的设备端WebRTC SDK的依赖项编译过程,该过程在嵌入式设备君正平台验证 1.首先我们可能需要一个墙外的服务器拉取代码,我是在开启了一个AWS的美国环境 ...
- AWS KVS(Kinesis Video Streams)之WebRTC移植编译(三)
继上一篇文章后,中途被其他事情耽误两周,现在继续... 编译第三方库: 一.[君正平台:编译usrsctp] 1.下载源码 git clone https://github.com/sctplab/u ...
- AWS KVS(Kinesis Video Streams)之WebRTC依赖项
KVS WebRTC依赖于openssl.srtp.usrsctp.kvspic.我们挨个来编译,如果我们需要往嵌入式设备中移植,需要移植这些依赖项,因此在编译移植前,我们需要得到源码. 先下载所有代 ...
- AWS KVS(Kinesis Video Streams)之WebRTC集成过程报错问题整理(七)
在前面我已经将君正T31X平台的WebRTC相关的依赖库编译完成,且现在将kvsWebrtcClientMaster测试用例也需要编译出来,在Camera中运行,验证依赖库的正确性. 根据自己编写的C ...
- AWS KVS(Kinesis Video Streams)之WebRTC集成过程报错问题整理(八)
1.用例情况: [1]第一组 master:君正平台的 kvsWebrtcClientMaster viewer:https://us-west-2.console.aws.amazon.com/ki ...
最新文章
- 利用计算机解决问题实际依赖,行测答题技巧:准确把握加强、削弱的“相关性”...
- Android - 文件读写操作 总结
- for循环与while循环效率对比·5年以下编程经验必看C#】
- 视频 | OFC上的腾讯声音
- RxLifecycle详细解析
- google Chrome 浏览器源码地址地址!
- VDI序曲二十七 IE7,IE8,IE9应用程序虚拟化
- python, numpy
- Poj 1936,3302 Subsequence(LCS)
- 一步一坑学android之安装andriod studio(andriod studio3.0)
- 【Tricks】半监督深度学习训练和实现小Tricks
- 传统HTML页面实现模块化加载
- Latex入门----从提纲开始
- 计算机管理中无法格式化,Win7电脑无法格式化SD卡怎么办?
- 基于node.js的网页聊天系统设计与实现
- win7中inter信息服务器,Win7系统Internet选项在哪里?
- 以太坊源码分析之 P2P网络(五、p2p连接控制与消息处理(中))
- 针对WM6.5系统和软件的注册表修改以及优化
- M - 魔戒(四维BFS)
- 51单片机 LED点亮、闪烁以及流水灯实现