亚马逊AWS Kinesis Video Streams with KVS demo示例

简介: Kinesis Video Streams 不仅用于存储视频数据。您还可以用它来实时监视视频流,因为这些流在云中接收。您既可以在 AWS 管理控制台中监控实时流,也可以开发自己的监控应用程序,以便使用 Kinesis Video Streams API 库显示实时视频。

Kinesis Video Streams 不仅用于存储视频数据。您还可以用它来实时监视视频流,因为这些流在云中接收。您既可以在 AWS 管理控制台中监控实时流,也可以开发自己的监控应用程序,以便使用 Kinesis Video Streams API 库显示实时视频。


1、对象模型


Kinesis Video Streams C 创建者库基于称为独立于平台的代码库 (PIC) 的通用组件,该组件在 GitHub 上的 https://github.com/awslabs/am... 提供。PIC 包含面向低级别的独立于平台的业务逻辑。Kinesis Video Streams C 创建者库通过额外的一层 API 打包 PIC,允许特定于场景和特定于平台的回调和事件。Kinesis Video Streams C 创建器库在 PIC 之上内置了组件:


  • 设备信息提供程序 – 公开 DeviceInfo 结构,该结构可直接提供给 PIC API。有一组易于配置的提供程序,包括应用程序场景优化的提供程序,可以根据您应用程序处理的流的数量和类型来优化内容存储,并根据可用 RAM 的数量优化配置的所需缓存数量。


  • 流信息提供程序 – 公开 StreamInfo 结构,该结构可直接提供给 PIC API。有一组易于配置提供程序,特定于应用程序类型以及常见类型的流式处理场景。这包括诸如视频、音频、音频/视频多轨道等提供程序。每个这些场景都有默认值,您可以根据应用程序需求进行定义。


  • 回调提供程序 – 公开 ClientCallbacks 结构,该结构可直接提供给 PIC API。这包括一组易于配置的回调提供程序,面向网络(基于 CURL 的 API 回调)、授权(AWS 凭证 API)、在错误回调上重试流式处理等。回调提供程序 API 获取一系列参数进行配置,例如 AWS 区域和授权信息(通过 IoT 证书或通过 AWS AccessKeyId、SecretKey、SessionToken)。如果您的应用程序需要进一步处理特定回调以实现某些应用程序特定的逻辑,则可以通过自定义回调来增强回调提供程序。


  • FrameOrderCoordinator – 帮助处理多轨道场景的音频和视频同步。它具有默认行为,您可以自定义以处理应用程序特定的逻辑。它还首先在 PIC 帧结构中简化帧元数据打包,然后提交到较低层的 PIC API。对于非多轨道场景,此组件直接传递到 PIC putFrame API。


C 库提供以下对象来管理向 Kinesis 视频流发送数据的过程:


  • KinesisVideoClient – 包含有关设备的信息,并维护回调以报告 Kinesis Video Streams 事件。
  • KinesisVideoStream – 表示包含有关视频流的参数的信息,例如,名称、数据保留期、媒体内容类型,等等。


2、环境准备


  • 为 macOS 安装以下构建依赖项:



  • 为 Ubuntu 安装以下构建依赖项:


  • 安装 Git:sudo apt-get install git


$ git --version
git version 2.14.1


  • 安装 CMakesudo apt-get install cmake


$ cmake --version
cmake version 3.9.1


  • 安装 Libtool:sudo apt-get install libtool


2.4.6-2


  • 安装 libtool-bin:sudo apt-get install libtool-bin


$ libtool --version
libtool (GNU libtool) 2.4.6
Written by Gordon Matzigkeit, 1996


  • 安装 GNU Automake:sudo apt-get install automake


$ automake --version
automake (GNU automake) 1.15


  • 安装 GNU Bison:sudo apt-get install bison


$ bison -V
bison (GNU Bison) 3.0.4


  • 安装 G++:sudo apt-get install g++


g++ --version
g++ (Ubuntu 7.2.0-8ubuntu3) 7.2.0


  • 安装 curl:sudo apt-get install curl


$ curl --version
curl 7.55.1 (x86_64-pc-linux-gnu) libcurl/7.55.1 OpenSSL/1.0.2g zlib/1.2.11 libidn2/2.0.2 libpsl/0.18.0 (+libidn2/2.0.2) librtmp/2.3


  • 安装 pkg-config:sudo apt-get install pkg-config


$ pkg-config --version
0.29.1


  • 安装 Flex:sudo apt-get install flex


$ flex --version
flex 2.6.1


  • 安装 OpenJDK:sudo apt-get install openjdk-8-jdk


$ java -version
openjdk version "1.8.0_171"


  • 设置 JAVA_HOME 环境变量:export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/


  • 运行构建脚本:./install-script


3、下载编译KVS


下载:


创建一个目录,然后从 GitHub 存储库克隆示例源代码。


git clone --recursive https://github.com/awslabs/amazon-kinesis-video-streams-producer-c.git


编译:


在下载好的源码中创建一个build目录,并在build中执行cmake


mkdir -p amazon-kinesis-video-streams-producer-c/build
cd amazon-kinesis-video-streams-producer-c/build  
cmake ..        // 这里cmake的时候有可能会失败,被墙了,最好自备梯子


您可以将以下选项传递给 cmake ..


  • -DBUILD_DEPENDENCIES - 是否从源代码构建依赖库
  • -DBUILD_TEST=TRUE - 构建单元/集成测试,可能有助于确认对您的设备的支持。
    ./tst/webrtc_client_test
  • -DCODE_COVERAGE - 启用覆盖范围报告
  • -DCOMPILER_WARNINGS - 启用所有编译器警告
  • -DADDRESS_SANITIZER - 使用 AddressSanitizer 构建
  • -DMEMORY_SANITIZER - 使用 MemorySanitizer 构建
  • -DTHREAD_SANITIZER - 使用 ThreadSanitizer 构建
  • -DUNDEFINED_BEHAVIOR_SANITIZER - 使用 UndefinedBehaviorSanitizer 构建
  • -DALIGNED_MEMORY_MODEL -为仅对齐内存模型的设备构建。默认为 OFF


完成后再回到build中执行make构建WebRTC C 开发工具包及其提供的示例


make


示例应用程序 kinesis_video_cproducer_video_only_sample 将文件夹 samples/h264SampleFrames 中的 h.264 编码视频帧发送到 Kinesis Video Streams。以下命令以循环方式发送 10 秒钟的视频帧到 Kinesis Video Streams:


./kinesis_video_cproducer_video_only_sample YourStreamName 10

             

如果指定要从其他文件夹(例如,MyH264FramesFolder)发送 H.264 编码帧,您可以使用以下参数运行命令:


./kinesis_video_cproducer_video_only_sample YourStreamName 10 MyH264FramesFolder


如果你觉得文章还不错,可以给个"三连",文章同步到个人微信公众号[加班猿]


我是hackett,我们下期见

目录
相关文章
|
Web App开发 Ubuntu Android开发
亚马逊AWS Kinesis Video Streams with WebRTC demo示例
以下分步说明介绍如何使用下载、构建和运行 Kinesis Video Streams with WebRTC 开发工具包及其相应示例。
649 0
|
1月前
|
消息中间件 NoSQL atlas
|
1月前
|
存储 SQL Java
阿里Flink云服务提供了CDC(Change Data Capture)功能
【2月更文挑战第10天】阿里Flink云服务提供了CDC(Change Data Capture)功能
34 1
EMQ
|
7月前
|
SQL 存储 数据可视化
EMQX Enterprise 5.2 发布:Flow 设计器,Amazon Kinesis,Azure Event Hubs
EMQX Enterprise 5.2.0 增加了可拖拽的可视化 Flow 设计器,可以快速部署数据集成。同时,新版本新增了对 Amazon Kinesis 和 Azure Event Hubs 的支持。
EMQ
715 0
EMQX Enterprise 5.2 发布:Flow 设计器,Amazon Kinesis,Azure Event Hubs
|
11月前
|
存储 JavaScript 安全
云计算架构:Azure]比较流,逻辑应用(Logic App),函数和 WebJobs
云计算架构:Azure]比较流,逻辑应用(Logic App),函数和 WebJobs
|
存储 SQL 消息中间件
RocketMQ-Streams 首个版本发布,轻量级计算的新选择
RocketMQ-Streams 聚焦「大数据量->高过滤->轻窗口计算」场景,核心打造轻资源,高性能优势,在资源敏感场景有很大优势,最低 1Core,1G 可部署。通过大量过滤优化,性能比其他大数据提升 2-5 倍性能。广泛应用于安全,风控,边缘计算,消息队列流计算。
365 0
RocketMQ-Streams 首个版本发布,轻量级计算的新选择
|
存储 数据可视化 关系型数据库
AWS Data Pipeline调研
AWS Data Pipeline是AWS提供的一项用于在不同计算和存储服务之间大规模传输、转换和处理数据的Web服务。利用AWS Data Pipeline,用户在不用关心计算存储网络等资源的情况下轻松创建出高可用的复杂数据处理任务,可以定期地读取并处理用户存储在AWS上的数据,最终高效地将计算结果传输到如 Amazon S3、Amazon RDS、Amazon DynamoDB 和 Amazon EMR等各种AWS服务中。
282 0
|
移动开发 JavaScript 前端开发
亚马逊AWS Kinesis Video Streams with IOT mqtt的demo示例
AWS IoT Device SDK for Embedded C通常面向需要优化的 C 语言运行时的资源受限设备。您可以在任何操作系统上使用此软件开发工具包,并将其托管在任何类型的处理器(例如 MCU 和 MPU)上。如果您有更多的可用内存和处理资源,我们建议您使用更高级的 AWS IoT 设备和移动开发工具包之一(例如,C++、Java、JavaScript 和 Python)。
173 0
亚马逊AWS Kinesis Video Streams with IOT mqtt的demo示例
|
机器学习/深度学习 人工智能
UniT | Facebook发布全新智能通用Agent!
UniT | Facebook发布全新智能通用Agent!
255 0
UniT | Facebook发布全新智能通用Agent!
|
编解码 Java 开发工具
基于Base64转码实现阿里云金融级人脸检测服务端接入教程Java code Sample
人脸核身提供服务端SDK帮助您在服务端依据被验证的人名和身份证号码,请求身份验证的用户图像信息。通常情况,测试人员可通过将本地图片上传至阿里云对象存储OSS中,然后直接获取图片路径作为参数,本文将介绍基于Base64转码,将本地图片转为Base64字符串格式的参数上传图片参数。
339 0
基于Base64转码实现阿里云金融级人脸检测服务端接入教程Java  code Sample