本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Kinesis Video Streams with WebRTC:工作方式
主题
Amazon Kinesis Video Streams with WebRTC 概念
以下是特定于 Amazon Kinesis Video Streams with WebRTC 的关键术语和概念。
- 信令通道
-
使应用程序能够通过交换信令消息来发现、设置、控制和终止对等连接的一种资源。信令消息是指两个应用程序为了建立对等连接而互相交换的元数据。此元数据包括媒体编解码器和编解码器参数等本地媒体信息,及两个应用程序互相连接以进行实时流式传输而可能使用的网络候选路径。
流式传输应用程序可以与信令通道保持持续连接,并等待其他应用程序连接到它们。或者,只有当它们需要实时流媒体时,才能连接到信令通道。信令通道使应用程序能够采用一个主设备连接多个查看器的概念在一对多模型中互相连接。发起连接的应用程序使用
ConnectAsMaster
API 承担主设备的责任,并等待查看器连接。然后,多达 10 个应用程序可以通过调用ConnectAsViewer
API 来承担查看器责任,以连接到该信令通道。连接到此信令通道后,主设备和查看器应用程序可以相互发送信令消息,以建立对等连接来进行实时媒体流式传输。 - 对等
-
配置为通过 Kinesis Video Streams with WebRTC 实现实时双向流式传输的任何设备或应用程序(例如,移动或网络应用程序、网络摄像头、家庭安全摄像头、婴儿监视器等)。
- 主实例
-
发起连接并连接到信令通道的对等方,能够发现媒体并与任何信令通道的已连接查看器交换媒体。
重要
目前,一个信令通道只能有一个主设备。
- 查看者
-
连接到信令通道的对等方只能通过信令通道的主设备发现和交换媒体。查看器无法通过给定的信令通道发现其他查看器或与其交互。一个信令通道最多可以有 10 个连接的查看器。
WebRTC 技术概念
当您开始使用 Kinesis Video Streams with WebRTC 时,您还可以从了解 WebRTC 技术所包含的几个相互关联的协议和 API 中受益。
- NAT 的会话遍历实用工具 (STUN)
-
一种协议,用于发现您的公有地址并确定路由器中阻止与对等方直接连接的任何限制。
- 使用中继绕过 NAT 的遍历 (TURN)
-
通过打开与 TURN 服务器的连接并通过该服务器中继所有信息来绕过对称 NAT 限制的服务器。
- 会话描述协议 (SDP)
-
一种描述连接的多媒体内容的标准,例如分辨率、格式、编解码器、加密等,以便一旦传输数据,两个对等方就可以相互理解。
- SDP 提议
-
由代理发送的 SDP 消息,代理生成会话描述以创建或修改会话。它描述所需媒体通信的各个方面。
- SDP 应答
-
应答者响应从提议人收到的提议而发送的 SDP 消息。应答指出了已接受的各个方面。例如,提议中的所有音频和视频流是否都被接受。
- 交互式连接建立 (ICE)
-
允许您的 Web 浏览器与对等方连接的框架。
- ICE 候选项
-
发送对等方能够用于通信的方法。
STUN、TURN 和 ICE 如何协同工作
让我们来看看两个对等方 A 和 B 的情况,它们都使用 WebRTC 对等双向媒体流式传输(例如,视频聊天应用程序)。当 A 想打电话给 B 时会发生什么?
要连接到 B 的应用程序,A 的应用程序必须生成 SDP 提议。SDP 提议包含有关 A 的应用程序要建立的会话的信息,包括要使用的编解码器、这是音频会话还是视频会话等。它还包含 ICE 候选项列表,这些候选项是 B 的应用程序可以尝试用来连接到 A 的 IP 和端口对。
要构建 ICE 候选项列表,A 的应用程序向 STUN 服务器发出一系列请求。服务器返回发起请求的公有 IP 地址和端口对。A 的应用程序将每个对添加到 ICE 候选项列表中,换句话说,它收集 ICE 候选项。一旦 A 的应用程序完成收集 ICE 候选项,它可以返回 SDP。
接下来,A 的应用程序必须通过这些应用程序用于通信的信令通道将 SDP 传递给 B 的应用程序。WebRTC 标准中未指定用于此交换的传输协议。它可以通过 HTTPS、安全 WebSocket 或任何其他通信协议执行。
现在,B 的应用程序必须生成 SDP 应答。B 的应用程序遵循 A 在上一步中使用的相同步骤:收集 ICE 候选项等。然后,B 的应用程序需要将此 SDP 应答返回给 A 的应用程序。
A 和 B 交换 SDP 后,它们将执行一系列连接性检查。每个应用程序中的 ICE 算法从它在另一方的 SDP 中收到的列表中获取候选项 IP/端口对,并向其发送 STUN 请求。如果从另一个应用程序返回响应,发起方应用程序会认为检查成功,并将该 IP/端口对标记为有效的 ICE 候选项。
在所有 IP/端口对上完成连接性检查后,应用程序协商并决定使用剩余的有效对之一。当选择一个对时,媒体开始在应用程序之间流动。
如果其中一个应用程序找不到通过了连接性检查的 IP/端口对,它们将向 TURN 服务器发出 STUN 请求以获取媒体中继地址。中继地址是一种公有 IP 地址和端口,用于将接收的数据包转发到应用程序或从应用程序中转发收到的数据包,以设置中继地址。然后,将该中继地址添加到候选项列表中,并通过信令通道进行交换。
Kinesis Video Streams with WebRTC 组件
Kinesis Video Streams with WebRTC 包括以下组件:
-
控制层面
控制层面组件负责创建和维护 Kinesis Video Streams with WebRTC 信令通道。有关更多信息,请参阅 Amazon Kinesis Video Streams API 参考。
-
正在发送信号
信令组件管理 WebRTC 信令终端节点,这些终端节点允许应用程序彼此之间安全地连接,以实现对等的实时媒体流式传输。信令组件包括 Amazon Kinesis Video Signaling REST API 和一组 Websocket API。
-
STUN
此组件管理 STUN 终端节点,这些终端节点使应用程序能够在其位于 NAT 或防火墙后面时发现其公有 IP 地址。
-
TURN
此组件管理 TURN 终端节点,这些终端节点在应用程序无法通过对等方式流式传输媒体时,可通过云启用媒体中继。
-
Kinesis Video Streams WebRTC 开发工具包
这些是软件库,您可以在设备和应用程序客户端上下载、安装和配置这些库,以使具有 WebRTC 功能的摄像头 IoT 设备能够进行低延迟的对等媒体流式传输。这些开发工具包还使 Android、iOS 和 Web 应用程序客户端能够将 Kinesis Video Streams with WebRTC 信令、TURN 和 STUN 功能与任何符合 WebRTC 的移动设备或 Web 播放器集成。