本指南演示了如何通过 WebRTC 使用 HAQM Kinesis Video Streams,以实现来自家居监控摄像头的低延迟、双向和对等视频流传输。Kinesis Video Streams 是一项用于实时视频处理的托管服务,可存储视频和其他媒体文件以供重播和分析,而 WebRTC 则有助于摄像头和客户端应用程序之间的直接、低延迟的连接。本指南支持通过移动设备或网络浏览器实现无缝、响应式的家居监控,与传统的客户端-服务器流式传输相比,采用对等的 WebRTC 连接方式,可最大限度地减少延迟和节省带宽。它还包括随附的软件开发工具包 (SDK) 的示例应用程序。摄像头制造商和智能家居供应商可以利用 SDK 作为基础,开发定制化的摄像头管理和观看体验。这有助于他们更便捷地将高质量、低延迟的视频功能集成到互联家居产品中,同时为消费者提供稳定可靠的家居监控体验。
请注意:[免责声明]
架构图

-
实时查看智能家居监控摄像头
-
智能家居监控摄像头
-
实时查看智能家居监控摄像头
-
此架构图显示了如何将 Kinesis Video Streams 用于 WebRTC,从而允许低延迟、双向、对等传输来自家居监控摄像头的视频。
第 1 步
摄像头使用凭证提供程序对 AWS IoT Core 进行身份验证。第 2 步
HAQM Kinesis Video Streams 软件开发工具包 (SDK) 向信令通道开放信令,等待查看器请求。第 3 步
HAQM CloudFront 是 HAQM Simple Storage Service (HAQM S3) 中托管的静态单页应用程序 (SPA) 的内容分发网络 (SPA)。第 4 步
摄像头所有者登录移动客户端。HAQM Cognito 和 HAQM API Gateway 管理移动客户端的用户访问权限。第 5 步
移动客户端调用 API 来查找属于所有者的摄像头。然后,所有者选择特定的摄像头来启动实时视频流。第 6 步
移动客户端启动与 Kinesis Video Streams 信令通道的连接,即摄像头侦听查看器连接请求的 WebSocket 连接。查看器和摄像头通过信令通道相互发送消息,协商连接详情。
第 7 步
移动客户端和摄像头建立对等连接。Kinesis Video Streams 客户端通过 WebRTC 对等连接传输视频数据,摄像头所有者则在移动客户端上查看视频流。或者,WebRTC 数据通道可用于发送双向命令和控制消息。如果无法建立直接的对等连接,则可通过 Kinesis Video Streams Traversal Using Relays around NAT (TURN) 服务器中继视频数据。
-
智能家居监控摄像头
-
此架构图显示了如何将智能家居摄像头的视频流式传输到 Kinesis Video Streams,以进行存储、播放和分析。它还展示了如何向移动应用程序用户发送推送通知,通知他们发生的事件。
第 1 步
摄像头检测到事件,开始使用本地存储录制视频和音频。第 2 步
摄像头应用程序向 AWS IoT Core 发布事件。在 Rules for IoT Core 中配置了规则,其中包含发布 HAQM Simple Notification Service (HAQM SNS) 消息的操作,可触发向最终用户的移动应用程序推送通知。AWS Lambda 函数订阅 HAQM SNS 主题,以将事件保存在 HAQM DynamoDB 表中。
第 3 步
Kinesis Video Streams 创建器软件开发工具包使用 X.509 证书, 通过凭证提供程序对 AWS IoT Core 进行身份验证。然后,它将媒体流式传输到属于摄像头的流,用于存储、播放和分析。HAQM S3 触发器配置为调用 Lambda 函数,该函数将调用 HAQM Rekognition Image,在 HAQM SNS 中执行对象检测并触发通知。
第 5 步
摄像头所有者登录移动客户端。HAQM Cognito 和 API Gateway 管理移动客户端的用户访问权限。第 6 步
移动客户端应用程序调用 API 来检索摄像头列表并查看事件列表。事件列表视图使用存储在 HAQM S3 中的图像作为预览缩略图,用于查看存储的媒体。第 7 步
移动应用程序用户选择要重播的事件,并使用 Kinesis Video Streams 来重播存储的视频和音频。
开始使用

Well-Architected 支柱

当您在云中构建系统时,AWS Well-Architected Framework 可以帮助您了解所做决策的利弊。框架的六大支柱使您能够学习设计和操作可靠、安全、高效、经济高效且可持续的系统的架构最佳实践。使用 AWS 管理控制台中免费提供的 AWS Well-Architected Tool,您可以通过回答每个支柱的一组问题,根据这些最佳实践来检查您的工作负载。
上面的架构图是按照 Well-Architected 最佳实践创建的解决方案示例。要做到完全的良好架构,您应该遵循尽可能多的 Well-Architected 最佳实践。
-
卓越运营
本指南使用 Kinesis Video Streams 和 AWS IoT Core,使用户能够确定优化位置事件摄取工作流程的方法,确保在大量新事件涌入时,工作流程能够顺利扩展。例如,Kinesis Video Streams 向 HAQM CloudWatch 发送指标,使用户可以看到视频流数据。此外,AWS IoT Core 向 CloudWatch 发送指标,以监控传入的消息,并在摄取过程停止或变慢时发出警报,提示可能存在网络或其他问题。AWS IoT Core 还提供队列管理功能,让运营商能够深入了解互联摄像头的状态。
-
安全性
AWS Identity and Access Management (IAM) 策略将所需 AWS 服务的权限范围限制在最低级别。Kinesis Video Streams 允许将权限范围限定为授权用户和设备;它还通过AWS Key Management Service (AWS KMS) 保护静态数据和使用 TLS 传输中的数据。此外,AWS IoT Core 策略控制设备对 MQTT 主题的访问和云交互。最后,HAQM Cognito 为移动应用程序提供身份验证和授权控制。
-
可靠性
跨多个可用区 (AZ) 设计的无服务器服务提供了针对多种失效的弹性支持。具体来说,它有助于确保数据摄取到 AWS IoT Core,然后由 Lambda 进行处理,并存储在 HAQM S3 中,后者提供版本控制、对象锁定和生命周期配置,以确保可靠性。
DynamoDB 提供按需备份、时间点恢复和用于数据同步的全局表等功能。此外,Kinesis Video Streams 建立在 AWS 区域和可用区之上,可提供低延迟、高吞吐量和高度冗余的网络。这使应用程序和数据库能够自动在可用区之间进行失效转移,相较于传统的数据中心,它提供了更高的可用性、容错能力以及可扩展性。
-
性能效率
AWS IoT Core 能够根据不断增长的消息摄取需求进行扩展,同时提供低延迟的服务。Lambda 支持配置并发预留,以缩短冷启动时间并提高性能。Kinesis Video Streams 可以自动预置和扩展从数百万台设备中提取视频流所需的所有基础设施。
-
成本优化
Kinesis Video Streams for WebRTC 通过对等连接减少了对云视频流服务的需求,同时在需要云流式传输时,提供即用即付的 TURN 服务定价模式。AWS IoT Core 按照实际使用量来调整定价,在成本标记和账单组的帮助下,通过确定目标、衡量指标并进行持续的改进,实现持续的成本优化。采用 HAQM S3 的云存储可通过无限扩展、存储类选择以及 HAQM S3 Intelligent-Tiering 存储类等功能,实现灵活性和成本节省。同样,DynamoDB 通过容量模式、表类和成本分配标签提供成本优化。
-
可持续性
本指南中的大多数服务都是使用无服务器技术构建的,因此减少了所需的计算占用量。例如,Lambda 仅在 AWS IoT Core 调用时才会执行,而 HAQM S3 可将更节能的存储卷用于长期媒体存储,例如缩略图预览图像。通过构建无服务器服务,可以降低总体计算使用量,实现完全由事件驱动的架构,该架构可根据流量需求进行扩展和缩减,在数据摄取量较低的时段,进一步降低能源消耗。
此外,采用 Kinesis Video Streams 后,不再需要维护在实例上运行的稳定应用程序,而是自动预置和弹性扩展从数百万台设备摄取流媒体视频数据所需的所有基础设施。
其他资源

这些额外资源可以帮助摄像头端应用程序以及 Web 和移动应用程序。其中包括指向包含示例应用程序的关联 GitHub 存储库的链接。
-
HAQM Kinesis Video Streams
本开发人员指南概述了 HAQM Kinesis Video Streams 的 C++ Producer Library,包括关键对象、功能和使用 SDK 的三步过程。 本开发者指南提供了有关如何在 Raspberry Pi 设备上设置和使用 HAQM Kinesis Video Streams 的 C++ Producer Library 的分步指南。 在 HTML 和 JavaScript 中使用 HLS 本开发人员指南提供了如何使用 HTTP Live Streaming (HLS) 观看 Kinesis Video Streams 的示例,内容包括如何检索 HLS 流式传输会话的 URL、如何在网页中使用不同播放器展示流媒体,以及如何解决常见的 HLS 播放问题。 -
HAQM Kinesis Video Streams WebRTC
本开发人员指南提供了如何在嵌入式设备中使用 WebRTC SDK 下载、构建和运行 Kinesis Video Streams 的说明,包括有关支持的编解码器和示例应用程序的详细信息。 本开发者指南提供了在用于 Web 应用程序的 JavaScript 中通过 WebRTC SDK 安装、使用和自定义 Kinesis Video Streams 的说明。 这些示例涵盖了构建具有 WebRTC 功能的移动应用程序的框架,适用于 Android 和 iOS 平台,并介绍了如何与 HAQM Kinesis Video Streams 集成以实现实时视频流的功能。
免责声明
示例代码;软件库;命令行工具;概念验证;模板;或其他相关技术(包括由我方人员提供的任何前述项)作为 AWS 内容按照《AWS 客户协议》或您与 AWS 之间的相关书面协议(以适用者为准)向您提供。您不应将这些 AWS 内容用在您的生产账户中,或用于生产或其他关键数据。您负责根据特定质量控制规程和标准测试、保护和优化 AWS 内容,例如示例代码,以使其适合生产级应用。部署 AWS 内容可能会因创建或使用 AWS 可收费资源(例如,运行 HAQM EC2 实例或使用 HAQM S3 存储)而产生 AWS 费用。
本指南中提及第三方服务或组织并不意味着 HAQM 或 AWS 与第三方之间存在认可、赞助或从属关系。AWS 的指导是一个技术起点,您可以在部署架构时自定义与第三方服务的集成。