构建安防视频云存,和传统安防视频业务的烦恼说再见!
安防视频云存业务特点与面临挑战
传统视频数据因为缺乏元数据索引,因此在无法确定精确的事件发生时间时,无法快速有效的定位视频信息,需要大量人力对存量视频信息进行检索。由此引入巨大的人力成本,并需要更多时间完成视频检索。
此外,传统安防视频具有以下特点:
使用 RTMP/RTSP 协议实现视频流收流。
需要海量、可靠的视频存储。
仅在有事件发生,并需要了解现实情况时才进行回看。
回看框架需要确保 7*24 可用,在需要时可以快速访问从而实现回看功能。
以上特点意味着:
需要在云端或本地部署额外的软/硬件资源,实现视频流接收,引入额外成本。
传统的本地视频存储受限于单一副本,存在单点故障导致的视频丢失风险。固定的本地存储容量,使得增加摄像头数量时需要配套考虑存储设施容量规划和部署方案,使得项目周期变长,项目规划更加复杂。
回看框架访问频率不高,但 7*24 可用意味着即使没有回看需求的时间段内,仍然需要支付对应的系统运行成本。
针对以上困难和特点,我们针对 IPC 视频云存成本优化场景,开发了可以植入到 IPC 内部的视频切片云存 SDK,并利用亚马逊云科技提供的云上托管服务构建视频检索、回看平台,从而降低回看平台基础运行成本,实现回看成本与累积回看时长相关,在不使用回看平台时,几乎无需支付平台运行成本,而当有人访问时又可以快速提供服务。
📢 想要了解更多亚马逊云科技最新技术发布和实践创新,敬请关注在上海、北京、深圳三地举办的 2021 亚马逊云科技中国峰会!点击图片报名吧~
解决方案架构与主要功能模块
系统架构图:
主要功能模块:
IPC C SDK
植入到 IPC 内部的 SDK,用于实现视频分片和封装,将可以直接回看的视频分片存储到 Amazon S3 存储桶中。并通过 IAM 权限管理,实现 IPC 上传权限的管理,从而确保各 IPC 视频上传权限相互独立。
利用 SDK 直接将视频上传至 Amazon S3 存储桶,从而摆脱本地或云端视频流转存所需的资源,实现云存成本与存储视频累计时长相关。
Amazon S3 视频存储桶
用于存储 IPC 视频分片信息,支持使用 Amazon S3 对象标签和生命周期管理功能,实现视频分片保存周期管理和视频存储成本优化。
同时,利用 Amazon S3 每个前缀提供 3500 PUT 和 5500 GET 请求的性能,利用前缀命名规则,实现云存空间性能自动扩展,从而实现使用统一的框架支持从几个到数以百万计的 IPC 设备。
对视频抽帧并调用 AI 接口和 DynamoDB 元数据存储
针对传统 IPC 视频存储难以检索的情况,引入云上 AI 服务,实现智能视频分析,并根据视频内容,生成相应元数据信息,并保存在 DynamoDB 之中。用户可以选择使用 DynamoDB 中信息,对视频内容进行检索,从而快速定位到所需的视频片段和对应时间,进而有效提升视频检索效率,缩短视频检索所需时间。
AI 服务
亚马逊云科技提供了丰富的 AI 服务可以用于视频分析与检索。目前支持的主要 AI 服务可以参考以下解决方案:
https://www.amazonaws.cn/solutions/ipc-ai-saas-solution/
由于 AI 服务部分内容较多,限于篇幅,该解决方案另行刊文作详细介绍。敬请期待。
无服务器架构构建回放平台
为了切实降低回看平台运行成本,特别是没有回看请求时的成本,本解决方案采用了云原生的无服务器架构。具有无用户使用时,成本极低,收到请求时支持秒级快速启动,自动扩展,统一系统架构支持几个到数以百万计的用户同时访问。
IPC-C-SDK
用户可以从 Github 下载 SDK 代码并编译到自己的 IPC 之中:
https://github.com/aws-samples/ipc-h264-hls-c-sdk/
IPC-C-SDK 内部工作逻辑如下:
IPC-C-SDK 从 IPC 内部视频、音频编码器获得视频、音频流,并通过增加 TS、PAT、PMT、PES 头,形成 TS 格式音视频流,并存储于 IPC SoC 内存缓存区中。
当内存缓存区中的音视频流达到一定阈值后,IPC-C-SDK 会自动通过内置 Amazon S3 客户端,将视频内容以对象形式推送到 Amazon S3 存储桶中。
得益于 IPC-C-SDK,视频分片得以直接存储到 Amazon S3 中,而无需其他音视频码流处理设备或资源。从而使得成本得以有效降低到仅需要 Amazon S3 存储和 API 调用成本的程度。实现了成本的最优化。
IPC-C-SDK 使用亚马逊云科技 IAM 进行权限管理。支持 AK+SK 和 AK+SK+Token 的身份验证模式。实际生产环境中,推荐使用 Amazon IoT 进行设备管理,配合 IoT Credential Provider 服务,实现物联网设备证书换临时 IAM 身份信息。该方案提供最佳的云上数据安全性,支持按照设备证书 ID 管理设备权限,从而确保 IPC 云存视频的安全性。其参考架构如下:
用户可以参考以下文档:
https://docs.aws.amazon.com/iot/latest/developerguide/authorizing-direct-aws.html
Amazon S3 视频存储桶
Amazon S3 视频存储桶提供高达 99.999999999%的数据持久性。意味着如果以 3 秒分片保存到 Amazon S3,每 10000 年才会丢失一个 3 秒的视频分片。从而确保存储视频的安全性。
此外,在视频云存时,推荐使用以下格式进行存储:
S3://{桶名称}/{设备证书 ID}
/{年}/{月}/{日}/{时}/{分}/{秒}.ts
该格式可以提供以下优势:
确保数据存储和访问安全
利用设备证书 ID 作为第一级前缀,实现各个 IPC 设备之间的权限相互独立与隔离。即每个摄像头均只能访问自己证书 ID 前缀之下的视频分片。通过 IAM 角色配置,更加可以实现限制 IPC 设备仅能够进行上传操作,而无法下载视频分片,从而确保视频云存安全性。
性能自动扩展
由于各个 IPC 分别属于不同的前缀之下,亚马逊云科技为每个 Amazon S3 前缀提供每秒 3500 PUT 和 5500 GET 请求的性能,因此当 IPC 摄像头数量增加时,Amazon S3 将自动优化并提供对应性能的处理能力。从而实现使用统一架构支持从几个到数以百万计 IPC 设备的能力。
视频抽帧并调用 AI 接口将结果存储到 DynamoDB 中
当视频分片上传到 Amazon S3 存储桶中后,用户可以选择使用 AI 技术对视频内容进行分析。例如:检测视频中出现的人脸和相应位置,并将结果保存到 DynamoDB 中,供后续查询使用。
视频数据在上传到 Amazon S3 后,会触发 Amazon S3 事件通知。通过云端 Lambda 函数,可以实现抽取视频关键帧,并转换为 JPEG 格式,发送给 AI 接口进行分析。
AI 分析的结果会以 JSON 格式,返回给 Lambda 函数,Lambda 函数将分析结果信息存储到 DynamoDB 数据库中,供回看平台检索使用。
无服务器架构构建视频回看平台
得益于以 TS 格式保存的视频分片,云存视频分片可以实现任意时间段内分片连接成整体视频进行回看。因此无需在云端进行二次转码操作。从而降低系统成本。
无服务器的视频回看平台使用开源 Video.js 框架,提供两种回看模式:
近实时回看(延迟 6-20 秒,取决于网络和客户端配置情况)
在近实时回看模式下,客户端通过 API Gateway HTTP API 请求 m3u8 播放列表,Lambda 函数检查 Amazon S3 桶中存储的分片,并将 2 分钟之内,最后上传的 3 个视频分片返回给客户端。通过滚动更新 m3u8 返回分片清单,实现近实时的查看视频内容。
指定时间段回看
客户端通过 API Gateway HTTP API 请求 m3u8 播放列表,并提供回看时间段的开始、截止时间。Lambda 函数检查 Amazon S3 桶中存储的分片,并将指定时间段内的视频分片按照顺序添加到 m3u8 播放列表中返回给客户端,从而实现制定时间段的视频回看功能。
指定时间段回看支持通过检索 DynamoDB 中存储的视频元数据,获取所需回看的时间段范围,将结果返回给客户端进行回看。
您可以通过以下链接在亚马逊云科技的环境中一键部署回看框架。框架中的回看应用带有示例视频供您参考。
📢 7 月 21-7 月 22 号,上海世博中心,2021 亚马逊云科技中国峰会——上海站强势登陆!没有报名的你,还不赶快点击上方卡片,速速报名!成功报名参会的 Builders 也要记得准时参会哦~
本篇作者
李挚
亚马逊云科技 解决方案架构师
徐高伟
亚马逊云科技 创新解决方案架构师
陈海云
亚马逊云科技 UI / UX 开发人员
李智勤
亚马逊云科技 物联网原型架构师
评论