亚马逊AWS官方博客
快速落地智能云存储摄像机解决方案
介绍
加速IPC设备开发进度
为IPC出海客户提供快速开发产品的代码原型参考。
相信每个想要IPC出海的厂商,在设备接入亚马逊Kinesis Video Stream服务时都面临同样一个痛点:如何快速的开发一款安全,稳定,高效,低成本的亚马逊云连接IPC。KVS embedded producer C SDK就是为了这个目的而诞生的。
KVS embedded producer C SDK延续了亚马逊云一贯的高安全性。并且我们着重深度优化了软件的内存占用情况,使得仅拥有64MB甚至32MB的低成本IPC SoC一样可以正常运行。在与芯片厂商(如本文下面提到的君正T31)深度合作的背景下,这款SDK拥有了更好的稳定性和高效的性能表现。它提供了“自带电池”一般的使用体验,极易上手。
Kinesis Video Stream介绍
T31介绍
T31智能视频处理器拥有1.5G高主频CPU计算性能,星光增强ISP,5M@30帧视频编码,安全引擎 并且内置DDR 。
专业的成像能力,领先的编码品质,丰富的差异化扩展,极致的成本控制和低功耗基因,搭配整合好的丰
富AI功能算法,使T31成为业内最全面均衡的H.265+AI视频处理器。
T31 硬件开发板
使用方法
下载代码
如果在执行 git clone 命令的时候忘记带上 –recursive ,参数,可以进入代码目录中执行 git submodule update –init –recursive 。
预置设备证书(可选)
IP Camera设备也可以使用 X.509 证书连接到AWS IoT,然后从AWS IoT credentials provider 中获取授权信息,并用此信息来授权Kinesis Video Streams service的相关操作。请参考文档中 “how-iot” 的相关操作步骤。
准备H264视频文件
上面介绍的代码中,我们上传的视频是预先录制好,并以文件形式储存在本地的。可以在代码中 “samples/h264SampleFrames/” 目录下面找到,这些文件都是以”frame-[index].h264″作为开头。比如,”frame-001.h264″, “frame-002.h264”, 等等。
You can also use sample frames of amazon-kinesis-video-streams-producer-c.
Ingenic T31 example
准备工作
- Ingenic T31 SDK ISVP-T31-1.1.3-20210223:
- 注意:上面的代码中没有附带君正T31的SDK,所以需要自行联系君正或者该SDK
- Ingenic T31 EVB 开发板
- 以太网网络连接
Device 设置
请跟随君正T31的SDK中附带的”T31 SNIPE_user_guide.pdf”配置设备,加入如下配置到 /system/init/app_init.sh
设置 DNS server
使用如下命令设置DNS服务器。.其中 “8.8.8.8” 是谷歌的DNS服务器,可以根据实际情况修改。.
echo 'nameserver 8.8.8.8' > /etc/resolv.conf
然后,使用如下命令验证DNS服务器是否正确。
设置 NTP time
注意:请确保你的NTP服务器工作正常,可以根据实际情况修改NTP服务器地址。
ntpd -nqp pool.ntp.org
然后,使用如下命令验证NTP服务器是否正确。
挂载 SD card
这里我们会把执行程序放在SD中,如果你使用其他地址存放执行程序,比如Flash,可以跳过这一步。
使用如下命令挂载SD卡。
mount -t vfat /dev/mmcblk0p1 /mnt
使能 音频驱动
使用如下命令加载音频模块,如果你不想使用音频,可以跳过这一步。
insmod /system/lib/modules/audio.ko
构建代码
下载代码
如果在执行 git clone 命令的时候忘记带上 –recursive ,参数,可以进入代码目录中执行 git submodule update --init --recursive
。
配置 T31 SDK
将 T31 的 SDK 放到 “samples/kvsapp-ingenic-t31/sdk/”目录下
最终的目录结构如下:
配置 toolchain
添加”mips-gcc472-glibc216-64bit”交叉编译链到系统的PATH中
配置 sample
如果你想使用环境变量,可以跳过这一步。
详细配置保存在 “samples/kvsapp-ingenic-t31/include/sample_config.h“文件中。
Build
创建build目录
mkdir build && cd build
执行cmake命令
Build 整个项目
cmake --build .
在编译完成以后,在”build/bin/”目录下将会出现两个可执行文件: “kvsappcli-ingenic-t31” 和 “kvsappcli-ingenic-t31-static” 。 “kvsappcli-ingenic-t31″ 使用”build/lib/” 目录下的shared library。 “kvsappcli-ingenic-t31-static” 是一个静态可执行程序,它不需要其他的动态库,除了最基本的运行时 library,比如 “libc” 和 “pthread”。 将上述编译生成的文件以及相关的音视频文件拷贝到SD卡中。
运行 sample
如果你没有把配置写入文件 “samples/kvsapp-ingenic-t31/include/sample_config.h“,可以直接配置环境变量:
现在可执行文件已经在SD卡上了,可以使用如下命令启动应用,其中 kvs-stream-name 是KVS 流的名字。也可以把这些参数细节写入sample_config.h 文件中。
如果一切正常,可以看到如下输出:
KVS sample for Ingenic T31
上面的build 步骤以后,””build/ingenic_t31_kvs_sample”目录中将会出现一些预编译好的 libraries。这样可以大大加速再次build 的速度。
目前支持的其他硬件平台
上面介绍的代码是为嵌入式设备特殊优化的,比如FreeRTOS/Embedded Linux。如下的几种常见的嵌入式平台,目前都可以使用这份代码安全的上传音视频流到 Kinesis Video Streams.
KVS认证
AWS 提供一系列硬體相關的認證程序,用來協助合作伙伴驗證其硬體設備正常運行在AWS相關服務。經由AWS認證通過的硬件設備將會被列表在AWS合作伙伴的設備目錄。此設備目錄將協助終端用戶快速搜索相關的硬件設備,加速搭建解決方案所選用之硬件,目的在於讓用戶專注在解決方案之開發,利用AWS IoT 生態圈來簡化硬件的選用,達成最佳的用戶體驗。 Amazon Kinesis Video Streams 為 AWS Device Qualification Program 其中一項硬體認證服務。
Amazon Kinesis Video Streams 認證程序基於有攝像頭的設備,或是俱備上傳影音功能之設備已整合相關軟件。確保設備正常運行KVS相關軟件,且能持續的將影音資料上傳至KVS服務。認證程序涵蓋了設備連線能力,與KVS服務之交互,設備身份驗證程序,以及合乎最佳安全實踐。客戶透過登入 AWS Partner Central 來取得相關認證文件。
合作伙伴所提交之設備,經過技術團隊驗證以及市場團隊審核其內容,完成認證流程後,硬件設備將會被公開發佈在AWS Partner Device Catalog 以及 AWS 硬件合作伙伴 之中。