本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 C 创建者库
您可以使用 C Producer 库提供的 Amazon Kinesis Video Streams 编写应用程序代码,将媒体数据从设备发送到 Kinesis 视频流。
物体模型
Kinesis Video Streams C Producer Library 基于一个名为平台独立代码库 (PIC) 的通用组件,该组件可GitHub在 https://github.com/awslabs/ amazon-kinesis-video-streams
-
设备信息提供者-公开可以直接提供给 PIC API 的
DeviceInfo
结构。您可以配置一组提供商,包括应用程序场景优化提供商,这些提供程序可以根据应用程序处理的流数量和类型以及根据可用 RAM 量配置的所需缓冲量来优化内容存储。 -
流信息提供者-公开可以直接提供给 PIC API 的
StreamInfo
结构。有一组特定于应用程序类型和常见流媒体场景类型的提供商。其中包括视频、音频、音频和视频多轨等提供商。这些场景中的每一个都有默认值,您可以根据应用程序的要求进行自定义。 -
回调提供者-公开可以直接提供给 PIC API 的
ClientCallbacks
结构。这包括一组用于联网(基于 curl 的 API 回调)、授权(Amazon凭证 API)和错误时重试流式传输的回调提供商。回调提供商 API 需要配置许多参数,例如Amazon Web Services 区域和授权信息。这可以通过使用 IoT 证书或使用AmazonAccessKeyIdSecretKey、或来完成SessionToken。如果您的应用程序需要进一步处理特定回调以实现某些应用程序特定的逻辑,则可以通过自定义回调来增强回调提供程序。 -
FrameOrderCoordinator— 帮助处理多轨场景的音频和视频同步。它具有默认行为,您可以对其进行自定义以处理应用程序的特定逻辑。它还简化了 PIC Frame 结构中的帧元数据打包,然后将其提交到下层 PIC API。对于非多轨道场景,此组件直接传递到 PIC putFrame API。
C 库提供以下对象来管理向 Kinesis 视频流发送数据的过程:
-
KinesisVideoClient— 包含有关您的设备的信息,并维护回传以报告 Kinesis Video Streams 事件。
-
KinesisVideoStream— 表示有关视频流参数的信息,例如名称、数据保留期和媒体内容类型。
将媒体放到直播中
您可以使用 C 库提供的方法(例如PutKinesisVideoFrame
)将数据放入KinesisVideoStream
对象。随后,该库将管理数据的内部状态,这可包含以下任务:
-
执行身份验证。
-
监视网络延迟。如果延迟太高,库可能会选择丢弃帧。
-
跟踪正在进行的流式处理的状态。
过程:使用 C 创建者开发工具包
此过程演示如何在 C 应用程序中使用 Kinesis Video Streams 客户端和媒体源将 H.264 编码的视频帧发送到您的 Kinesis 视频流。
该过程包括以下步骤:
先决条件
-
证书-在示例代码中,您可以通过指定在证书配置文件中设置的配置文件来提供Amazon凭证。如果尚未执行此操作,请先设置凭证配置文件。
有关更多信息,请参阅设置Amazon证书和开发区域。
-
证书存储集成 — Kinesis Video Streams 制作者库必须与其调用的服务建立信任。这是通过验证公共证书存储中的证书颁发机构 (CA) 来完成的。对于基于 Linux 的模型,此存储位于
/etc/ssl
/ 目录中。从以下位置将证书下载到您的证书存储:
-
为 macOS 安装以下构建依赖项:
-
Autoconf 2.69
(许可证 GPLv3+/Autoconf:GNU GPL 版本 3 或更高版本) -
Bison 2.4
(GNU 许可证) -
Automake 1.15.1
(GNU 许可证) -
GNU Libtool (Apple Inc. 版本 cctools-898)
-
xCode (macOS) / clang / gcc (xcode-选择版本 2347)
-
Java 开发工具包 (JDK) (用于 Java JNI 编译)
-
-
为 Ubuntu 安装以下构建依赖项 (对版本命令的响应已截断):
-
安装 Git:
sudo apt-get install git
$ git --version git version 2.14.1
-
安装 CMake
: sudo 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
-