作者:Thorben Sanktjohanser,发表于2023年7月14日,来源于 Amazon API Gateway,Amazon Cognito,Amazon DynamoDB,Amazon Kinesis,AWS IoT Core,Intermediate (200),物联网,Kinesis Video Streams,技术如何做永久链接
设计和开发一个经济高效的、云连接的视频监控平台用于监控摄像头和智能家居设备,需要开发者构建和整合一个能够以规模化的方式接收、存储和处理非结构化媒体数据的流媒体服务。
这样的平台基础设施需要处理大量的数据负载,并具备应对突发需求的灵活性。从缓冲和延迟到连接中断和数据存储问题,智能家居设备的视频流可能会面临诸多困难。因此,智能摄像头解决方案的一个关键目标必须是能够支持数百万台设备、数万亿条消息和千兆字节的数据的灵活性和可扩展性。
采用无服务器计算可消除对服务器的配置需求,自动扩展、按实际使用计费实现成本优化,同时提供内置的容错和高可用性。无服务器架构促进了敏捷开发,降低了运营复杂性,加快了企业的上市时间。
express加速器要提供一个可扩展、可靠且高效的视频流服务的智能摄像头解决方案,需要考虑管理服务器、存储和网络硬件的成本,这些硬件负责提供高带宽和低延迟的网络性能。采购、安装和维护硬件可能会降低您员工在创建差异化应用程序和提供更好用户体验方面的专注力。
Amazon Kinesis Video Streams 是一项完全托管的AWS服务,允许您安全地流式传输媒体进行存储、分析和播放,而无需配置服务器。您无需构建、运行或扩展任何WebRTCWeb实时通信相关的云基础设施,例如信令服务器或媒体中继服务器,以确保在应用程序和设备之间安全地流媒体。这使其成为与AWS IoT连接产品结合使用的理想服务。
HTTP直播流HLS和动态自适应流媒体传输DASH是两种用于从服务器交付预录制的点播和直播视频内容的流媒体协议。WebRTC是一个开源项目和技术集,支持实时和低延迟的点对点通信,直接在Web浏览器或移动应用之间建立。使用Amazon Kinesis Video Streams,您可以从HLS和DASH中选择两种选项来提供直播视频流:从流中回放视频;或使用WebRTC进行低延迟双向媒体流。
选择使用HLS和DASH进行流媒体将会导致从Kinesis Video Streams服务到互联网的数据传输费用。Kinesis Video Streams服务会按照每GB计费数据的摄入和消耗。从互联网到AWS的数据没有额外费用。自2021年12月1日起,每月前100GB数据传出是免费的。超过部分按GB收费。
通过使用压缩或动态比特率和帧率调整可以进一步降低数据传输成本。在24/7流媒体场景中,建议将比特率降低到可接受的最低水平。您产品中使用的比特率是整体KVS服务成本的主要影响因素。
Amazon Kinesis Video Streams支持不同的视频编码格式,例如H264高级视频编码或AVC和H265高效视频编码或HVEC。您可以在这篇博文中了解更多关于它们的差异和权衡。在选择产品的编码格式时,请考虑整体的视频和音频质量、有效比特率、生成的数据量以及硬件的能力。
直播使用HLS和DASH时,数据的传出成本会随相机数量和平台用户数量的增加而上升。使用WebRTC和点对点连接时,Kinesis Video Streams可以避免数据传出费。
Kinesis Video Streams与WebRTC使用信令通道在对等方之间交换连接信息。之后,对等方直接相连进行直播,而不是从AWS云发送或接收数据。在给定月份活动的信令通道和发送、接收的信令消息数会产生费用。直接进行点对点视频内容流媒体而无需中继服务器不收费。如果由于网络条件限制无法建立直接连接,则会使用Kinesis Video Streams提供的中继服务器TURN。该服务器在对等方之间中继媒体流量,以确保连接。通过TURN服务器中继媒体流量会按流媒体分钟收费,在前100GB数据传出之后按GB收费。
图1 监控摄像头平台架构图。
借助于Amazon Kinesis Video Streams的完全托管能力,您无需构建、操作或扩展与WebRTC相关的任何云基础设施,例如信令服务器或媒体中继服务器,以确保在应用程序和设备之间安全流媒体。您可以与相机和客户端一起使用Kinesis Video Streams与WebRTC SDK。
到目前为止,我已讨论了如何通过点对点连接将视频从智能摄像头流式传输到客户端以及有关成本的考虑。该架构的另一部分是智能摄像头的管理和控制,例如建立、配置、安全和维护,以确保智能设备正常运作。
您可以通过使用AWS IoT Core将智能摄像头引入AWS,以实现设备与AWS之间的安全连接来管理它们。该服务包括设备网关和消息代理。相机与AWS IoT Core的通信基于MQTT,这是一种轻量级的发布订阅网络协议。
保护智能家居设备与AWS云之间管理连接的推荐方式是使用X509证书。这些证书允许您授权相机访问AWS上的服务。AWS IoT Core可以为每个设备生成和注册个别证书。该架构中采用的是根据声明的群组引导方法。
在相机中保存的引导证书将在引导期间自动替换为独特的设备证书。在配置过程中,AWS Lambda函数会读取一个数据库表,该表保存所有制造的监控摄像头的信息,例如序列号,以验证访问服务的相机。
在此架构中,使用无服务器的键值数据库服务Amazon DynamoDB来验证身份,存储用户和设备数据。DynamoDB与AWS IoT服务无缝集成,在任何规模下提供一致的单数字毫秒延迟,支持实时处理和分析IoT数据。
在客户端通信方面,您可以实施无服务器身份验证和授权模式来控制对后端服务的访问。Amazon Cognito提供用户目录,存储用户的配置文件属性,例如用户名、电子邮件地址和电话号码。客户端从Cognito接收访问令牌,以验证用户并授权对后端服务和监控摄像头的访问。
Amazon API Gateway处理访问令牌的验证,提供与Amazon Cognito集成的REST API。这允许经过身份验证的用户通过Amazon API Gateway代理请求,从客户端到后端服务。
接收和返回请求的后端服务使用AWS Lambda构建,允许您按需运行代码。您可以使用Lambda函数从制造商数据库中读取数据以验证设备,并将用户帐户与相机绑定。Lambda将按需请求AWS身份与访问管理IAM的会话凭证,以访问Kinesis Video Streams上的相机信令通道。使用生成的凭证,您可以将客户端隔离。
您在帐户中部署Amazon Kinesis Video Streams无服务器监控平台时会产生费用。完成示例的检查后,请按照清理部分中的步骤删除基础设施,以停止产生费用。
请查看存储库中的README文件,以详细了解平台示例的构建模块。
您可以使用AWS Cloud9来部署代码示例。Cloud9提供一种基于云的平台,供开发人员通过网络浏览器编写、调试和协作代码,使其便利且可从任何地方访问。代码示例已在Cloud9上测试,这降低了本地设置和配置的需求。
步骤1:创建Cloud9环境
在AWS管理控制台中打开Cloud9点击创建环境命名您的环境为surveillancecameraide点击创建并等待环境创建完成选择surveillancecameraide并在Cloud9中打开在Cloud9中打开终端克隆Amazon Kinesis Video Streams无服务器监控平台库bash git clone https//githubcom/awssamples/amazonkinesisvideostreamsserverlesssurveillanceplatformgit
步骤2:部署监控摄像头平台
从浏览器地址栏复制Cloud9 ID,例如ltREGIONgtconsoleawsamazoncom/cloud9/ide/59f5e14c6cdb4fbb95f61f107b5ad86d在根目录下使用Cloud9 ID安装基础设施,如下所示:bash cd infrastructure sh /installinfrastructuresh 59f5e14c6cdb4fbb95f61f107b5ad86d
从根目录部署相机模拟,如下所示:bash cd camera sh /installmocksh
相机的部署最多需要10分钟从根目录部署Web客户端,如下所示:bash cd webclient yarn install silent yarn start
打开 https//59f5e14c6cdb4fbb95f61f107b5ad86dvfscloud9ltREGIONgtamazonawscom可选择在Cloud9的顶部栏中点击预览选择预览正在运行的应用程序 在预览窗口中选择弹出到新窗口步骤3:登录并将相机模拟绑定到您的帐户
复制 用户名 和 密码,然后选择登录输入凭据并选择新密码在Cognito托管UI中设置软件MFA输入提供的 序列号 和 密钥,然后选择提交一旦相机模拟的配置状态为 true,在表中选择 BCM283500000000b211cf11。 刷新页面以请求状态更新,或在发生错误时执行此操作您将看到来自相机模拟的测试流,如下所示。图2 Web客户端示例流
删除基础设施、相机模拟和Cloud9环境
在Cloud9 ID下从根目录删除基础设施,如下所示:
bash cd infrastructure sh /uninstallinfrastructuresh
在Cloud9 ID下从根目录删除相机模拟,如下所示:bash cd camera sh /uninstallmocksh
导航到AWS管理控制台的Cloud9选择surveillancecameraide点击删除上述架构展示了一种如何构建云连接监控摄像头的方法。考虑这些因素后,您可以确定定价模型,利用AWS IoT构建经济高效的云连接视频监控平台。请按照后续步骤阅读相关资源,为客户提供先进的功能和用例:
使用Amazon Rekognition在实时视频流中集成实时警报。在此处跟随本文。为摄像头提供自己的机器学习模型,进行无云连接的推理。[在此处了解更多](https//awsamazoncom/blogs/machinelearning/buildmachinelearningattheedgeapplicationsusingamazonsagemakeredgemanagerandawsiotgreengrass2026-01-27 12:54:49
Q4 Inc 如何利用 Amazon Bedrock、RAG 和 SQLDatabaseChain 解决数据集挑战,构建其问答聊天机器人by Stanislav Yeshchenko Tamer So...
利用 Amazon Bedrock 精简保险承保流程 第一部分主要内容概述在保险行业中,承保是风险评估及管理的基础功能,对保险公司的财务稳定性与获利能力至关重要。本文将探讨如何利用 AWS 生成性人工...