亚马逊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 开发工具包及其相应示例。
773 0
|
3月前
|
SQL JSON API
【Azure Developer】使用REST API获取Activity Logs、传入Data Lake的数据格式问题
【Azure Developer】使用REST API获取Activity Logs、传入Data Lake的数据格式问题
|
3月前
|
物联网 C# C++
【Azure 事件中心】 Event Grid(事件网格)+Azure Functions处理IOT Hub中的消息
【Azure 事件中心】 Event Grid(事件网格)+Azure Functions处理IOT Hub中的消息
|
3月前
|
消息中间件 Kafka 网络安全
【Azure 应用服务】本地创建Azure Function Kafka Trigger 函数和Kafka output的HTTP Trigger函数实验
【Azure 应用服务】本地创建Azure Function Kafka Trigger 函数和Kafka output的HTTP Trigger函数实验
|
3月前
|
人工智能
【Azure Application Insights】在Azure Function中启用Application Insights后,如何配置不输出某些日志到AI 的Trace中
【Azure Application Insights】在Azure Function中启用Application Insights后,如何配置不输出某些日志到AI 的Trace中
|
6月前
|
存储 SQL Java
阿里Flink云服务提供了CDC(Change Data Capture)功能
【2月更文挑战第10天】阿里Flink云服务提供了CDC(Change Data Capture)功能
97 1
|
6月前
|
消息中间件 NoSQL atlas
EMQ
|
SQL 存储 数据可视化
EMQX Enterprise 5.2 发布:Flow 设计器,Amazon Kinesis,Azure Event Hubs
EMQX Enterprise 5.2.0 增加了可拖拽的可视化 Flow 设计器,可以快速部署数据集成。同时,新版本新增了对 Amazon Kinesis 和 Azure Event Hubs 的支持。
EMQ
766 5
EMQX Enterprise 5.2 发布:Flow 设计器,Amazon Kinesis,Azure Event Hubs
|
6月前
|
存储 缓存 分布式计算
Spark与云存储的集成:S3、Azure Blob Storage
Spark与云存储的集成:S3、Azure Blob Storage
|
存储 数据可视化 关系型数据库
AWS Data Pipeline调研
AWS Data Pipeline是AWS提供的一项用于在不同计算和存储服务之间大规模传输、转换和处理数据的Web服务。利用AWS Data Pipeline,用户在不用关心计算存储网络等资源的情况下轻松创建出高可用的复杂数据处理任务,可以定期地读取并处理用户存储在AWS上的数据,最终高效地将计算结果传输到如 Amazon S3、Amazon RDS、Amazon DynamoDB 和 Amazon EMR等各种AWS服务中。
368 0