

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

# 示例：Kinesis Video Streams 制作人 GStreamer SDK 插件-kvssink
<a name="examples-gstreamer-plugin"></a>

本主题介绍如何构建用作 GStreamer 插件的 Amazon Kinesis Video Streams 制作人软件开发工具包。

**Topics**
+ [下载、构建和配置 GStreamer 元素](#examples-gstreamer-plugin-download)
+ [运行 GStreamer 元素](#examples-gstreamer-plugin-run)
+ [GStreamer 启动命令示例](#examples-gstreamer-plugin-launch)
+ [在 Docker 容器中运行该 GStreamer 元素](#examples-gstreamer-plugin-docker)
+ [GStreamer 元素参数参考](examples-gstreamer-plugin-parameters.md)

[GStreamer](https://gstreamer.freedesktop.org/)是一种流行的媒体框架，可供多个摄像机和视频源使用，通过组合模块化插件来创建自定义媒体管道。Kinesis Video GStreamer Streams 插件简化了 GStreamer 现有媒体管道与 Kinesis Video Streams 的集成。集成后 GStreamer，您可以将来自网络摄像头或实时流媒体协议 (RTSP) 摄像机的视频流式传输到 Kinesis Video Streams，以便进行实时或以后的播放、存储和进一步分析。

该 GStreamer 插件通过将 Kinesis Video Streams 制作人 SDK GStreamer 提供的功能封装在接收器元素中，自动管理将视频流传输到 Kinesis Video Streams 的过程。`kvssink`该 GStreamer 框架提供了一个标准的托管环境，用于从摄像机或其他视频源等设备构建媒体流，用于进一步处理、渲染或存储。

 GStreamer 管道通常由源（摄像机）和接收器元素（用于渲染视频的播放器或用于离线检索的存储）之间的链接组成。在本示例中，您使用创建者开发工具包元素作为视频源（网络摄像机或 IP 摄像机）的*接收器*或媒体目标。然后，封装 SDK 的插件元素将视频流发送到 Kinesis Video Streams。

本主题介绍如何构建能够将视频源（例如网络摄像机或 RTSP 流）中的视频流式传输的 GStreamer 媒体管道，该视频通常通过中间编码阶段（使用 H.264 编码）连接到 Kinesis Video Streams。当您的视频流作为 Kinesis 视频流可用时，您可以使用[使用解析器库观看摄像机的输出](parser-library.md)对视频流进行进一步处理、播放、存储或分析。

![\[用于将视频从摄像机流式传输到服务的 GStreamer 媒体管道的功能视图。\]](http://docs.aws.amazon.com/zh_cn/kinesisvideostreams/latest/dg/images/gstreamer-pipeline.png)


## 下载、构建和配置 GStreamer 元素
<a name="examples-gstreamer-plugin-download"></a>

 GStreamer 插件示例包含在 Kinesis Video Streams Video Streams C\$1\$1 制作人 SDK 中。有关该开发工具包的先决条件和下载信息，请参阅[下载并配置 C\$1\$1 制作器库代码](producersdk-cpp-download.md)。

你可以在 macOS、Ubuntu、Raspberry Pi 或 Windows 上将制作 GStreamer 器 SDK 接收器构建为动态库。该 GStreamer 插件位于您的`build`目录中。要加载此插件，它必须位于您的插件中`GST_PLUGIN_PATH`。运行如下命令：

```
export GST_PLUGIN_PATH=`pwd`/build
```

**注意**  
在 macOS 上，只有在 Docker 容器 GStreamer 中运行时，才能从网络摄像机流式传输视频。在 macOS 上的 Docker 容器中，不支持对来自 USB 摄像机的视频进行流式处理。

## 运行 GStreamer 元素
<a name="examples-gstreamer-plugin-run"></a>

要使用 Kinesis Video Streams 制作人 SDK 元素作为接收器运行 GStreamer ，请使用命令`gst-launch-1.0`。使用适合 GStreamer 插件使用的上游元素。例如，对于 Linux 系统上的 v4l2 设备使用 [v4l2src](https://gstreamer.freedesktop.org/documentation/video4linux2/v4l2src.html?gi-language=c#v4l2src-page)，或对于 RTSP 设备使用 [rtspsrc](https://gstreamer.freedesktop.org/documentation/rtsp/rtspsrc.html#rtspsrc-page)。指定 `kvssink` 作为向创建者开发工具包发送视频的接收器（管道的最终目标）。

除了[提供凭证](https://docs.aws.amazon.com//kinesisvideostreams/latest/dg/examples-gstreamer-plugin-parameters.html#credentials-to-kvssink)和[提供区域外，该](https://docs.aws.amazon.com//kinesisvideostreams/latest/dg/examples-gstreamer-plugin-parameters.html#kvssink-region)`kvssink`元素还具有以下必需参数：
+ `stream-name`— 目的地 Kinesis Video Streams 的名称。

有关 `kvssink` 可选参数的信息，请参阅[GStreamer 元素参数参考](examples-gstreamer-plugin-parameters.md)。

有关 GStreamer 插件和参数的最新信息，请参阅[GStreamer 插件](https://gstreamer.freedesktop.org/documentation/plugins_doc.html?gi-language=c)。您也可以使用元素或插件名称`gst-inspect-1.0`后面加上 GStreamer 元素或插件的名称来打印其信息，并验证其是否在您的设备上可用：

```
gst-inspect-1.0 kvssink
```

如果构建`kvssink`失败或 GST\$1PLUGIN\$1PATH 设置不正确，则输出将如下所示：

```
No such element or plugin 'kvssink'
```

## GStreamer 启动命令示例
<a name="examples-gstreamer-plugin-launch"></a>

以下示例演示如何使用该`kvssink` GStreamer 插件从不同类型的设备流式传输视频。

### 示例 1：在 Ubuntu 上直播来自 RTSP 摄像头的视频
<a name="examples-gstreamer-plugin-launch-ex1"></a>

[以下命令使用 rtspsr GStreamer c 插件在 Ubuntu 上创建一个管道，该管道从网络 RTSP 摄像机进行直播：](https://gstreamer.freedesktop.org/documentation/rtsp/rtspsrc.html?gi-language=c) GStreamer 

```
gst-launch-1.0 -v rtspsrc location="rtsp://YourCameraRtspUrl" short-header=TRUE ! rtph264depay ! h264parse ! kvssink stream-name="YourStreamName" storage-size=128
```

### 示例 2：在 Ubuntu 上对来自 USB 摄像头的视频进行编码和流式传输
<a name="examples-gstreamer-plugin-launch-ex2"></a>

以下命令在 Ubuntu 上创建一个 GStreamer 管道，该管道以 H.264 格式对来自 USB 摄像机的直播进行编码，然后将其流式传输到 Kinesis Video Streams。此示例使用 [v4l2src 插件](https://gstreamer.freedesktop.org/documentation/video4linux2/v4l2src.html?gi-language=c#v4l2src-page) GStreamer 。

```
gst-launch-1.0 v4l2src do-timestamp=TRUE device=/dev/video0 ! videoconvert ! video/x-raw,format=I420,width=640,height=480,framerate=30/1 ! x264enc  bframes=0 key-int-max=45 bitrate=500 ! video/x-h264,stream-format=avc,alignment=au,profile=baseline ! kvssink stream-name="YourStreamName" storage-size=512 access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"
```

### 示例 3：在 Ubuntu 上流式传输来自 USB 摄像头的预编码视频
<a name="examples-gstreamer-plugin-launch-ex3"></a>

以下命令在 Ubuntu 上创建了一个 GStreamer 管道，该管道将摄像机已经以 H.264 格式编码的视频流式传输到 Kinesis Video Streams。此示例使用 [v4l2src 插件](https://gstreamer.freedesktop.org/documentation/video4linux2/v4l2src.html?gi-language=c#v4l2src-page) GStreamer 。

```
gst-launch-1.0 v4l2src do-timestamp=TRUE device=/dev/video0 ! h264parse ! video/x-h264,stream-format=avc,alignment=au ! kvssink stream-name="plugin" storage-size=512 access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"
```

### 示例 4：在 macOS 上流式传输来自网络摄像机的视频
<a name="examples-gstreamer-plugin-launch-ex4"></a>

以下命令在 macOS 上创建一个 GStreamer 管道，该管道通过网络摄像机将视频流式传输到 Kinesis Video Streams。此示例使用 rt [spsrc 插件](https://gstreamer.freedesktop.org/documentation/rtsp/rtspsrc.html#rtspsrc-page) GStreamer 。

```
gst-launch-1.0 rtspsrc location="rtsp://YourCameraRtspUrl" short-header=TRUE ! rtph264depay ! h264parse ! video/x-h264, format=avc,alignment=au ! kvssink stream-name="YourStreamName" storage-size=512  access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"
```

### 示例 5：在 Windows 上流式传输来自网络摄像机的视频
<a name="examples-gstreamer-plugin-launch-ex5"></a>

以下命令在 Windows 上创建了一个 GStreamer 管道，该管道将视频从网络摄像机流式传输到 Kinesis Video Streams。此示例使用 rt [spsrc 插件](https://gstreamer.freedesktop.org/documentation/rtsp/rtspsrc.html#rtspsrc-page) GStreamer 。

```
gst-launch-1.0 rtspsrc location="rtsp://YourCameraRtspUrl" short-header=TRUE ! rtph264depay ! video/x-h264, format=avc,alignment=au ! kvssink stream-name="YourStreamName" storage-size=512  access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"
```

### 示例 6：在 Raspberry Pi 上直播来自摄像机的视频
<a name="examples-gstreamer-plugin-launch-ex6"></a>

以下命令在 Raspberry Pi 上创建了一个将视频流式传输到 Kinesis Video Streams 的 GStreamer 管道。此示例使用 [v4l2src 插件](https://gstreamer.freedesktop.org/documentation/video4linux2/v4l2src.html?gi-language=c#v4l2src-page) GStreamer 。

```
gst-launch-1.0 v4l2src do-timestamp=TRUE device=/dev/video0 ! videoconvert ! video/x-raw,format=I420,width=640,height=480,framerate=30/1 ! omxh264enc control-rate=1 target-bitrate=5120000 periodicity-idr=45 inline-header=FALSE ! h264parse ! video/x-h264,stream-format=avc,alignment=au,width=640,height=480,framerate=30/1,profile=baseline ! kvssink stream-name="YourStreamName" access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"
```

### 示例 7：在 Raspberry Pi 和 Ubuntu 中同时直播音频和视频
<a name="examples-gstreamer-plugin-launch-ex7"></a>

了解在 Raspberry-PI 和 Ubuntu 中如何[运行 gst-launch-1.0 命令开始对音频和视频进行流式处理](https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/blob/master/docs/linux.md#running-the-gst-launch-10-command-to-start-streaming-both-audio-and-video-in-raspberry-pi-and-ubuntu)。

### 示例 8：在 macOS 中流式传输来自设备源的音频和视频
<a name="examples-gstreamer-plugin-launch-ex8"></a>

了解在 MacOS 中如何[运行 gst-launch-1.0 命令开始对音频和视频进行流式处理](https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/blob/master/docs/macos.md#running-the-gst-launch-10-command-to-start-streaming-both-audio-and-raw-video-in-mac-os)。

### 示例 9：上传同时包含音频和视频的 MKV 文件
<a name="examples-gstreamer-plugin-launch-ex9"></a>

了解如何[运行 gst-launch-1.0 命令来上传包含音频和视频的 MKV 文件](https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/blob/master/docs/windows.md#running-the-gst-launch-10-command-to-upload-mkv-file-that-contains-both-audio-and-video)。你需要一个包含 h.264 和 AAC 编码媒体的 MKV 测试文件。

## 在 Docker 容器中运行该 GStreamer 元素
<a name="examples-gstreamer-plugin-docker"></a>

Docker 是一个使用容器来开发、部署和运行应用程序的平台。使用 Docker 创建 GStreamer 管道可以标准化 Kinesis Video Streams 的操作环境，从而简化了应用程序的构建和使用。

要安装和配置 Docker，请参阅以下内容：
+ [Docker 下载说明](https://docs.docker.com/engine/install/)
+ [开始使用 Docker](https://docs.docker.com/guides/getting-started/)

安装 Docker 后，你可以使用下面`docker pull`提供的命令之一从亚马逊弹性容器注册表下载 Kinesis Video Streams C\$1\$1 Producer SDK（ GStreamer 和插件）。

要将 Kinesis Video Streams 制作器 SDK 元素作为 Docker 容器中的接收器运行 GStreamer ，请执行以下操作：

**Topics**
+ [对你的 Docker 客户端进行身份验证](#examples-gstreamer-plugin-docker-authenticate)
+ [下载用于 Ubuntu、macOS、Windows 或 Raspberry Pi 的 Docker 映像](#examples-gstreamer-plugin-docker-download)
+ [运行 Docker 镜像](#examples-gstreamer-plugin-docker-run)

### 对你的 Docker 客户端进行身份验证
<a name="examples-gstreamer-plugin-docker-authenticate"></a>

将您的 Docker 客户端验证到要从中提取镜像的 Amazon ECR 注册表。您必须为使用的每个注册表获取身份验证令牌。代币的有效期为 12 小时。有关更多信息，请参阅 *Amazon Elastic Container Registry 用户指南*中的[注册表身份验证](https://docs.aws.amazon.com/AmazonECR/latest/userguide/Registries.html#registry_auth)。

**Example 向 Amazon ECR 进行身份验证**  
要使用 Amazon ECR 进行身份验证，请复制并粘贴以下命令，如图所示。  

```
sudo aws ecr get-login-password --region us-west-2 | docker login -u AWS --password-stdin https://546150905175.dkr.ecr.us-west-2.amazonaws.com
```
如果成功，输出将打印 `Login Succeeded`。

### 下载用于 Ubuntu、macOS、Windows 或 Raspberry Pi 的 Docker 映像
<a name="examples-gstreamer-plugin-docker-download"></a>

根据您的操作系统，使用以下命令之一将 Docker 映像下载到您的 Docker 环境：

#### 下载用于 Ubuntu 的 Docker 映像
<a name="examples-gstreamer-plugin-docker-download-ubuntu"></a>

```
sudo docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux:latest
```

#### 下载用于 macOS 的 Docker 映像
<a name="examples-gstreamer-plugin-docker-download-macos"></a>

```
docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux:latest
```

#### 下载用于 Windows 的 Docker 映像
<a name="examples-gstreamer-plugin-docker-download-windows"></a>

```
docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-windows:latest
```

#### 下载用于 Raspberry Pi 的 Docker 映像
<a name="examples-gstreamer-plugin-docker-download-rpi"></a>

```
sudo docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-raspberry-pi:latest
```

要验证是否已成功添加镜像，请使用以下命令：

```
docker images
```

### 运行 Docker 镜像
<a name="examples-gstreamer-plugin-docker-run"></a>

根据您的操作系统，使用以下命令之一运行 Docker 映像：

#### 在 Ubuntu 上运行 Docker 镜像
<a name="examples-gstreamer-plugin-docker-run-ubuntu"></a>

```
sudo docker run -it --network="host" --device=/dev/video0 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux /bin/bash
```

#### 在 macOS 上运行 Docker 镜像
<a name="examples-gstreamer-plugin-docker-run-macos"></a>

```
sudo docker run -it --network="host" 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux /bin/bash
```

#### 在 Windows 上运行 Docker 镜像
<a name="examples-gstreamer-plugin-docker-run-windows"></a>

```
docker run -it 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-windows AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY RTSP_URL STREAM_NAME
```

#### 在树莓派上运行 Docker 镜像
<a name="examples-gstreamer-plugin-docker-run-rpi"></a>

```
sudo docker run -it --device=/dev/video0 --device=/dev/vchiq -v /opt/vc:/opt/vc 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-raspberry-pi /bin/bash
```

Docker 启动容器并显示命令提示符，供您在容器中使用命令。

在该容器中，使用以下命令设置环境变量：

```
export LD_LIBRARY_PATH=/opt/awssdk/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib:$LD_LIBRARY_PATH
export PATH=/opt/awssdk/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/bin:$PATH
export GST_PLUGIN_PATH=/opt/awssdk/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib:$GST_PLUGIN_PATH
```

开始`kvssink`使用流式传输`gst-launch-1.0`以运行适合您的设备和视频源的管道。有关管道的示例，请参见[GStreamer 启动命令示例](#examples-gstreamer-plugin-launch)。

# GStreamer 元素参数参考
<a name="examples-gstreamer-plugin-parameters"></a>

要向 Amazon Kinesis Video Streams Video Streams 制作人 C\$1\$1 SDK 发送视频，请*将*视频`kvssink`指定为管道的接收方或最终目的地。此参考提供了有关 `kvssink` 必需参数和可选参数的信息。有关更多信息，请参阅 [示例：Kinesis Video Streams 制作人 GStreamer SDK 插件-kvssink](examples-gstreamer-plugin.md)。

**主题**
+ [向提供凭证 `kvssink`](#credentials-to-kvssink)
+ [提供一个区域给 `kvssink`](#kvssink-region)
+ [`kvssink`可选参数](#kvssink-optional-parameters)

## 向提供凭证 `kvssink`
<a name="credentials-to-kvssink"></a>

要允许`kvssink` GStreamer 元素向其发出请求 AWS，请提供 AWS 凭证供其在调用 Amazon Kinesis Video Streams 服务时使用。凭证提供商链按以下顺序查找证书：

### 1。 AWS IoT 证书
<a name="collapsible-section-1"></a>

要设置 AWS IoT 凭证，请参阅[使用控制对 Kinesis Video Streams 资源的访问权限 AWS IoT](how-iot.md)。

`iot-credentials`参数值必须以逗号分隔`iot-certificate,`的以下 *key* = *value* 对开头，后面是逗号分隔的列表。


****  

| Key | 必需 | 描述 | 
| --- | --- | --- | 
| ca-path | 是 | 用于通过 TLS 与后端服务建立信任的 CA 证书的文件路径。 

**Example**  
**示例**：` /file/path/to/certificate.pem` | 
| cert-path | 是 | X.509 证书的文件路径。 

**Example**  
**示例**：`/file/path/to/certificateID-certificate.pem.crt` | 
| endpoint | 是 | 您 AWS 账户的 AWS IoT Core 凭证终端节点提供商终端节点。请参阅《[AWS IoT 开发人员指南》](https://docs.aws.amazon.com//iot/latest/developerguide/authorizing-direct-aws.html)。 

**Example**  
**示例**：`credential-account-specific-prefix.credentials.iot.aws-region.amazonaws.com` | 
| key-path | 是 | key pair 中使用的私 public/private 钥的文件路径。 

**Example**  
**示例**：`/file/path/to/certificateID-private.pem.key` | 
| role-aliases | 是 | 指向连接时要使用 AWS 的 IAM 角色的角色别名的名称 AWS IoT Core。 

**Example**  
**示例**：`KvsCameraIoTRoleAlias` | 
| iot-thing-name | 否 | `iot-thing-name` 是可选项。如果`iot-thing-name`未提供，则使用`stream-name`参数值。 

**Example**  
**示例**：`kvs_example_camera` | 

**Example**  
**示例**：  

```
gst-launch-1.0 -v ... ! kvssink stream-name="YourStream" aws-region="YourRegion" iot-certificate="iot-certificate,endpoint=credential-account-specific-prefix.credentials.iot.aws-region.amazonaws.com,cert-path=certificateID-certificate.pem.crt,key-path=certificateID-private.pem.key,ca-path=certificate.pem,role-aliases=YourRoleAlias,iot-thing-name=YourThingName"
```

### 2. 环境变量
<a name="collapsible-section-2"></a>

要`kvssink`使用来自环境的凭证，请设置以下环境变量：


****  

| 环境变量名 | 必需 | 描述 | 
| --- | --- | --- | 
| AWS\$1ACCESS\$1KEY\$1ID | 是 | 用于 AWS 访问亚马逊 Kinesis Video Streams 的访问密钥。 | 
| AWS\$1SECRET\$1ACCESS\$1KEY | 是 | 与访问 AWS 密钥关联的密钥。 | 
| AWS\$1SESSION\$1TOKEN | 否 | 如果您直接使用 AWS STS 操作中的临时安全证书，则指定所需的会话令牌值。 | 

设置环境变量会更改使用的值，直到 Shell 会话结束或直到您将该变量设置为其他值。要使变量在 future 会话中保持不变，请在 shell 的启动脚本中对其进行设置。

### 3。 `access-key`，`secret-key`参数
<a name="collapsible-section-3"></a>

要直接将凭据指定为`kvssink`参数，请设置以下参数：


****  

| `kvssink`参数名 | 必需 | 描述 | 
| --- | --- | --- | 
| access-key | 是 | 用于 AWS 访问亚马逊 Kinesis Video Streams 的访问密钥。 | 
| secret-key | 是 | 与访问 AWS 密钥关联的密钥。 | 
| session-token | 否 | 如果您直接使用 AWS STS 操作中的临时安全证书，则指定所需的会话令牌值。 | 

**Example**  
**使用静态凭证：**  

```
gst-launch-1.0 -v ... ! kvssink stream-name="YourStream" aws-region="YourRegion" access-key="AKIDEXAMPLE" secret-key="SKEXAMPLE"
```

**Example**  
**使用临时证书：**  

```
gst-launch-1.0 -v ... ! kvssink stream-name="YourStream" aws-region="YourRegion" access-key="AKIDEXAMPLE" secret-key="SKEXAMPLE" session-token="STEXAMPLE"
```

### 4. 凭证文件
<a name="collapsible-section-4"></a>

**重要**  
如果您选择了前面的方法之一，则无法使用该`credential-path``kvssink`参数。


****  

| `kvssink`参数名 | 必需 | 描述 | 
| --- | --- | --- | 
| credential-path | 是 | 包含特定格式凭据的文本文件的路径。 | 

文本文件必须包含以下格式之一的凭据：
+ 全权证书 *YourAccessKey* *YourSecretKey*
+ 全权证书 *YourAccessKey* *Expiration* *YourSecretKey* *SessionToken*

**Example**  
**示例：**您的`credentials.txt`文件位于`/home/ubuntu`并包含以下内容：  
`CREDENTIALS AKIDEXAMPLE 2023-08-10T22:43:00Z SKEXAMPLE STEXAMPLE`  
要在中使用它`kvssink`，请键入：  

```
gst-launch-1.0 -v ... ! kvssink stream-name="YourStream" aws-region="YourRegion" credential-path="/home/ubuntu/credentials.txt" 
```
将来的到期时间应至少为 5 \$1 30 \$1 3 = **38** 秒。宽限期定义为中的`IOT_CREDENTIAL_FETCH_GRACE_PERIOD`变量[https://github.com/awslabs/amazon-kinesis-video-streams-producer-c/blob/master/src/source/Common/IotCredentialProvider.h](https://github.com/awslabs/amazon-kinesis-video-streams-producer-c/blob/master/src/source/Common/IotCredentialProvider.h)。如果您启动时凭证过于接近到期时间`kvssink`，则会收到错误代码`0x52000049 - STATUS_INVALID_TOKEN_EXPIRATION`。
`kvssink`不会修改凭据文件。如果您使用的是临时证书，则证书文件必须在到期时间减去宽限期之前由外部来源更新。

## 提供一个区域给 `kvssink`
<a name="kvssink-region"></a>

以下是区域查询顺序：

1. `AWS_DEFAULT_REGION`首先审查环境变量。如果已设置，则使用该区域来配置客户端。

1. `aws-region`接下来将查看参数。如果已设置，则使用该区域来配置客户端。

1. 如果前面的方法均未使用，`kvssink`则默认为`us-west-2`。

## `kvssink`可选参数
<a name="kvssink-optional-parameters"></a>

`kvssink` 元素具有以下可选参数。有关这些参数的更多信息，请参阅 [Kinesis 视频流结构](producer-reference-structures-stream.md)。


****  

| 参数 | 说明 | 单位/类型 | 默认 | 
| --- | --- | --- | --- | 
| stream-name  | 目标 Amazon Kinesis 视频流的名称。 如果未指定直播名称，则将使用默认的直播名称：“DEFAULT\$1STREAM”。如果使用该默认名称的直播尚不存在，则会创建该流。  |  |  | 
| absolute-fragment-times | 是否使用绝对片段时间。 | 布尔值 | true | 
| access-key | 用于 AWS 访问 Kinesis Video Streams 的访问密钥。 您必须设置 AWS 凭据或提供此参数。要提供此信息，请键入以下内容： <pre>export AWS_ACCESS_KEY_ID=</pre> |  |  | 
| avg-bandwidth-bps | 流的预期平均带宽。 | 每秒位元数 | 4194304 | 
| aws-region |  AWS 区域 要使用的。  您也可以为该区域提供`AWS_DEFAULT_REGION`环境变量。如果同时设置了环境变量和 kvssink 参数，则环境变量优先。   `us-west-2`如果未另行指定，则该区域将默认为。   | 字符串 | "us-west-2" | 
| buffer-duration | 流缓冲持续时间。 | 秒 | 120 | 
| codec-id | 流的编解码器 ID。 | 字符串 | "V\$1MPEG4/ISO/AVC" | 
| connection-staleness | 之后调用直播陈旧回调的时间。 | 秒 | 60 | 
| content-type | 流的内容类型。 | 字符串 | "video/h264" | 
| fragment-acks | 是否使用片段 ACKs。 | 布尔值 | true | 
| fragment-duration | 所需的片段持续时间。 | 毫秒 | 2000 | 
| framerate | 预期的帧率。 | 每秒帧数 | 25 | 
| frame-timecodes | 是否使用帧时间码或者使用当前时间回调生成时间戳。 | 布尔值 | true | 
| key-frame-fragmentation | 是否在关键帧上生成片段。 | 布尔值 | true | 
| log-config | 日志配置路径。 | 字符串 | "../kvs\$1log\$1configuration" | 
| max-latency | 流的最大延迟。 | 秒 | 60 | 
| recalculate-metrics | 是否重新计算指标。 | 布尔值 | true | 
| replay-duration | 启用重新启动时，在出错时回滚当前阅读器以重放的持续时间。 | 秒 | 40 | 
| restart-on-error | 发生错误时是否重新启动。 | 布尔值 | true | 
| retention-period | 保留流的时间长度。 | Hours | 2 | 
| rotation-period | 密钥轮换周期。有关更多信息，请参阅[轮换 AWS KMS 密钥](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)。 | 秒 | 3600 | 
| secret-key |  用于访问 Kinesis Video Streams 的 AWS 密钥。 您必须设置 AWS 凭据或提供此参数。 <pre>export AWS_SECRET_ACCESS_KEY=</pre>  |  |  | 
| session-token | 如果您直接使用 AWS STS 操作中的临时安全证书，则指定所需的会话令牌值。 |  |  | 
| storage-size | 以兆字节 (MiB) 为单位的设备存储大小。有关配置设备存储的信息，请参阅[StorageInfo](producer-reference-structures-producer.md#producer-reference-structures-producer-storageinfo)。 | 兆字节 (MiB) | 128 | 
| streaming-type | 流式处理类型。有效值包括：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/kinesisvideostreams/latest/dg/examples-gstreamer-plugin-parameters.html) | 枚举 GstKvsSinkStreamingType | 0：实时 | 
| timecode-scale | MKV 时间码标度。 | 毫秒 | 1 | 
| track-name | MKV 音轨名称。 | 字符串 | "kinesis\$1video" | 
| iot-certificate | AWS IoT 要在`kvssink`元素中使用的证书。 `iot-certificate`接受以下键和值：  `iot-thing-name`是**可选**的。如果`iot-thing-name`未提供，则使用`stream-name`参数值。  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/kinesisvideostreams/latest/dg/examples-gstreamer-plugin-parameters.html) | 字符串 | 无 | 