

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 亚马逊 Kinesis Video Streams 入门
<a name="getting-started"></a>

 本节介绍如何在 Amazon Kinesis Video Streams 中执行以下任务：
+ 如果您尚未设置管理员 AWS 账户 并创建管理员（如果尚未这样做）。
+ 创建 Kinesis 视频流。
+ 从您的摄像机向 Kinesis 视频流发送数据，并在控制台中查看媒体。

如果你不熟悉 Amazon Kinesis Video Streams，我们建议你先[Kinesis Video Streams：它是如何运作的](how-it-works.md)阅读。

**注意**  
遵循入门示例不会对您 AWS 账户产生任何费用. 有关您所在地区的数据成本，请参阅[亚马逊 Kinesis Video Streams](https://aws.amazon.com/kinesis/video-streams/pricing/) 定价。

**Topics**
+ [创建 Amazon Kinesis 视频流](gs-createstream.md)
+ [向 Amazon Kinesis 视频流发送数据](gs-send-data.md)
+ [使用媒体数据](gs-consume-data.md)

# 创建 Amazon Kinesis 视频流
<a name="gs-createstream"></a>

本节介绍如何创建 Kinesis 视频流。

本节包含以下过程：
+ [使用控制台创建视频流](#gs-createstream-console)
+ [使用创建视频流 AWS CLI](#gs-createstream-cli)

## 使用控制台创建视频流
<a name="gs-createstream-console"></a>

1. 打开控制台，网址为 [https://console.aws.amazon.com//kinesisvideo/home](https://console.aws.amazon.com//kinesisvideo/home)。

1. 在 **Video streams (视频流)** 页面上，选择 **Create video stream (创建视频流)**。

1. 在 “**创建新的视频流**” 页面上*YourStreamName*，输入直播名称。保持 “**默认配置**” 按钮处于选中状态。

1. 选择 **Create video stream (创建视频流)**。

1. 亚马逊 Kinesis Video Streams 创建直播后，请查看页面**YourStreamName**上的详细信息。

## 使用创建视频流 AWS CLI
<a name="gs-createstream-cli"></a>

1. 确认您已 AWS CLI 安装并配置了。有关更多信息，请参阅[AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/) 文档。

1. 在 AWS CLI中运行以下 `Create-Stream` 命令：

   ```
   aws kinesisvideo create-stream --stream-name "YourStreamName" --data-retention-in-hours 24
   ```

   该响应应该类似于以下内容：

   ```
   {
       "StreamARN": "arn:aws:kinesisvideo:us-west-2:123456789012:stream/YourStreamName/123456789012"
   }
   ```

# 向 Amazon Kinesis 视频流发送数据
<a name="gs-send-data"></a>

本节介绍如何将媒体数据从摄像机发送到您在上一节中创建的 Kinesis 视频流。本节使用[使用 C\$1\$1 制作人库](producer-sdk-cpp.md)作为[示例：Kinesis Video Streams 制作人 GStreamer SDK 插件-kvssink](examples-gstreamer-plugin.md)插件。

要从各种操作系统上的各种设备发送媒体，本教程使用了 Kinesis Video Streams C\$1\$1 制作器库[GStreamer](https://gstreamer.freedesktop.org/)以及一个标准化摄像机和其他媒体来源访问的开源媒体框架。

**Topics**
+ [构建 SDK 和示例](#send-data-build-sdk)
+ [运行示例将媒体上传到 Kinesis Video Streams](#send-data-run-samples)
+ [查看确认对象](#gs-review-acks)

## 构建 SDK 和示例
<a name="send-data-build-sdk"></a>

您可以在计算机上或中构建 SDK 和示例 AWS Cloud9。请按照以下相应步骤操作。

------
#### [ Build on your computer ]

使用[自述文件](https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp)中的说明来构建生产者库和示例应用程序。

这包括：
+ 安装依赖项
+ 克隆存储库
+ **CMake**用于生成 **makefile**
+ 使用 **mak** e 构建二进制文件

------
#### [ Build in AWS Cloud9 ]

请按照以下步骤上传到中的 Kinesis Video Stream AWS Cloud9 s。您无需将任何内容下载到您的计算机上。

1. 在里面 AWS 管理控制台，打开[AWS Cloud9](https://us-west-2.console.aws.amazon.com/cloud9control/home)。

   选择 “**创建环境**”。

1. 在 “**创建环境**” 屏幕上，完成以下操作：
   + **名称**-键入新环境的名称。
   + **平台** ——选择 **Ubuntu Server 22.0** 4 LTS。

   您可以将其他字段保留为默认选项。

1. 创建环境后，在 **Cloud9 IDE** 列中选择 “**打开**”。

   在屏幕的中间下方区域，你会看到`Admin:~/environment $`。这是 AWS Cloud9 （亚马逊 EC2）终端。
**注意**  
如果您不小心关闭了终端，请选择 “**窗口**”，“**新建终端**”。

   在终端中运行以下命令将音量更改为 20 GiB。

   1. 下载 脚本。

      ```
      wget https://awsj-iot-handson.s3-ap-northeast-1.amazonaws.com/kvs-workshop/resize_volume.sh
      ```

   1. 授予脚本执行权限。

      ```
      chmod +x resize_volume.sh
      ```

   1. 运行 脚本。

      ```
      ./resize_volume.sh
      ```

1. 获取有关您可以通过高级打包工具 (APT) 安装或更新的所有软件的最新信息。

   此命令不会更新软件本身，但可以确保您的系统知道最新的可用版本。

   ```
   sudo apt-get update
   ```

1. 安装 C\$1\$1 制作器 SDK 依赖项。

   ```
   sudo apt-get install -y cmake m4 git build-essential pkg-config libssl-dev libcurl4-openssl-dev \
   liblog4cplus-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \
   gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-bad gstreamer1.0-plugins-good \
   gstreamer1.0-plugins-ugly gstreamer1.0-tools
   ```

1. 使用 git 克隆 C\$1\$1 制作器开发工具包。

   ```
   git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp.git
   ```

1. 准备一个构建目录。

   ```
   cd amazon-kinesis-video-streams-producer-sdk-cpp
   mkdir build
   cd build
   ```

1.  CMake 用于生成生成文件。

   ```
   cmake .. -DBUILD_GSTREAMER_PLUGIN=TRUE -DBUILD_DEPENDENCIES=OFF
   ```

   预期输出的结尾如下所示：

   ```
   -- Build files have been written to: /home/ubuntu/environment/amazon-kinesis-video-streams-producer-sdk-cpp/build
   ```

1. 使用 make 编译 SDK 和示例应用程序，以及构建最终的可执行文件。

   ```
   make
   ```

   预期输出的结尾如下所示：

   ```
   [100%] Linking CXX executable kvs_gstreamer_file_uploader_sample
   [100%] Built target kvs_gstreamer_file_uploader_sample
   ```

1. 确认示例文件已构建。列出当前目录中的文件：

   ```
   ls
   ```

   确认是否存在以下文件：
   + kvs\$1gstreamer\$1sample
   + libgstkvssink.so

1. （可选）您可以将设置 GST\$1PLUGIN\$1PATH 环境变量添加到外壳程序的启动脚本中。这样可以确保在新的终端会话期间正确设置 GST\$1PLUGIN\$1PATH。在中 AWS Cloud9，外壳程序的启动脚本是:`~/.bashrc`.

   运行以下命令将该命令附加到 shell 启动脚本的末尾。

   ```
   echo "export GST_PLUGIN_PATH=~/environment/amazon-kinesis-video-streams-producer-sdk-cpp/build" >> ~/.bashrc
   ```

   键入以下内容以运行 shell 的启动脚本：

   ```
   source ~/.bashrc
   ```

   确认已设置 GST\$1PLUGIN\$1PATH。

   ```
   echo $GST_PLUGIN_PATH
   ```

   如果您正确设置了输出，则会看到以下输出。如果输出为空，则说明环境变量设置不正确。

   ```
   /home/ubuntu/environment/amazon-kinesis-video-streams-producer-sdk-cpp/build
   ```

------

## 运行示例将媒体上传到 Kinesis Video Streams
<a name="send-data-run-samples"></a>

示例应用程序不支持 IMDS 凭证。在您的终端中，导出您的 IAM 用户或角色以及您的直播所在区域的 AWS 证书。

```
export AWS_ACCESS_KEY_ID=YourAccessKey
export AWS_SECRET_ACCESS_KEY=YourSecretKey
export AWS_DEFAULT_REGION=YourAWSRegion
```

如果您使用的是临时 AWS 证书，请同时导出您的会话令牌：

```
export AWS_SESSION_TOKEN=YourSessionToken
```

------
#### [ .mp4 files ]

下载一个.mp4 视频样本上传到 Kinesis Video Streams。

```
wget https://awsj-iot-handson.s3-ap-northeast-1.amazonaws.com/kvs-workshop/sample.mp4
```

视频规格：
+ **分辨率** ——1280 x 720 像素 
+ **帧速率**-每秒 30 帧
+ **持续时间**-14.0 秒
+ **视频编码**-H.264，在轨道 1 中
+ **关键帧**-每 3 秒，片段持续时间（也称为一组图片 (GoP) 大小）为 3 秒，最后一个片段长为 2 秒。

使用您之前创建的直播的名称运行以下命令。如果您尚未创建直播，请参阅[创建 Amazon Kinesis 视频流](gs-createstream.md)。

```
./kvs_gstreamer_sample YourStreamName ./sample.mp4
```

------
#### [ Sample video from GStreamer ]

使用以下命令使用生成视频 GStreamer。

告诉 GStreamer 在哪里可以找到`kvssink` GStreamer插件。在您的生成目录中，指定包含该`libgstkvssink.so`文件的文件夹的路径。

在您的构建目录中，运行以下命令：

```
export GST_PLUGIN_PATH=`pwd`
```

该 GStreamer 管道生成具有标准测试模式的实时测试视频流，该视频流以每秒 10 帧的速度运行，分辨率为 640x480 像素。添加了一个显示当前系统时间和日期的叠加层。然后将视频编码为 H.264 格式，并且最多每 10 帧生成一次关键帧，从而使片段持续时间（也称为一组图片 (GoP) 大小）为 1 秒。 `kvssink`获取 H.264 编码的视频流，将其打包为 Matroska (MKV) 容器格式，然后将其上传到你的 Kinesis 视频流中。

运行如下命令：

```
gst-launch-1.0 -v videotestsrc is-live=true \
  ! video/x-raw,framerate=10/1,width=640,height=480 \
  ! clockoverlay time-format="%a %B %d, %Y %I:%M:%S %p" \
  ! x264enc bframes=0 key-int-max=10 \
  ! h264parse \
  ! kvssink stream-name="YourStreamName"
```

要停止 GStreamer 管道，请选择终端窗口并**按 CTRL\$1C**。

------

**注意**  
有关使用该 GStreamer 插件流式传输来自摄像机的 RTSP 流或 USB 摄像头的视频的更多信息，请参阅[示例：Kinesis Video Streams 制作人 GStreamer SDK 插件-kvssink](examples-gstreamer-plugin.md)。

## 查看确认对象
<a name="gs-review-acks"></a>

在上传过程中，Kinesis Video Streams 会将确认对象发送回执行上传的客户端。您应该在命令输出中看到这些内容。一个例子如下所示：

```
{"EventType":"PERSISTED","FragmentTimecode":1711124585823,"FragmentNumber":"12345678901234567890123456789012345678901234567"}
```

如果确认`EventType`是`PERSISTED`，则表示 Kinesis Video Streams 已对这块媒体进行了持久存储和加密，以供检索、分析和长期存储。

有关致谢的更多信息，请参阅[PutMedia](API_dataplane_PutMedia.md)。

# 使用媒体数据
<a name="gs-consume-data"></a>

您可以通过在控制台中查看媒体数据来使用媒体数据，也可以创建使用超文本直播 (HLS) 从流中读取媒体数据的应用程序。

## 在控制台中查看媒体
<a name="send-data-view-media"></a>

在另一个浏览器选项卡中，打开 AWS 管理控制台。在 Kinesis Video Streams 控制面板[中，选择视频](https://us-west-2.console.aws.amazon.com/kinesisvideo/home?region=us-west-2#/streams)流。

在直播列表中选择您的直播名称。如有必要，请使用搜索栏。

展开 “**媒体播放**” 部分。如果视频仍在上传，则会显示该视频。如果上传已完成，请选择左双箭头。

## 使用 HLS 使用媒体数据
<a name="consume-with-hls"></a>

您可以使用 HLS 创建使用来自 Kinesis 视频流的数据的客户端应用程序。有关使用 HLS 创建使用媒体数据的应用程序的信息，请参阅[Kinesis Video Streams 回放](how-playback.md)。