

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

# GetMedia
<a name="API_dataplane_GetMedia"></a>

 使用此 API 从 Kinesis 视频流中检索媒体内容。在请求中，您可以识别直播名称或流 Amazon 资源名称 (ARN) 以及起始区块。然后，Kinesis Video Streams 按片段编号的顺序返回区块流。

**注意**  
您必须先调用 `GetDataEndpoint` API 才能获取终端节点。然后使用 [--endpoint-url 参数将`GetMedia`请求发送到此端点](https://docs.aws.amazon.com/cli/latest/reference/)。

当你在直播中放置媒体数据（片段）时，Kinesis Video Streams 会将每个传入的片段和相关元数据存储在所谓的 “块” 中。有关更多信息，请参阅 [PutMedia](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html)。`GetMedia`API 会从您在请求中指定的区块开始返回这些区块的流。

该 `GetMedia` API 旨在通过长时间运行的连接作为流媒体 API 运行。它不打算 RESTful 以传统方式使用，即为每个片段建立并关闭一个新的 HTTP 连接。当你调用 `GetMedia` API 时，Kinesis Video Streams 会使用 HTTP 分块传输编码，通过持续的长时间运行连接持续传输片段。

使用 `GetMedia` API 时适用以下限制：
+ 每个直播每秒`GetMedia`最多可以呼叫五次。
+ 在会话期间，Kinesis Video Streams 以高达每秒 25 兆字节（或每秒 200 兆比特）的速率发送媒体数据。`GetMedia`
**注意**  
`GetMedia`用作长时间运行的流式连接，在单个持久连接中检索多个片段。不要 RESTful 以传统方式使用 `GetMedia` API，即为每个片段建立和关闭新的 HTTP 连接。如果你尝试的并发`GetMedia`连接超过三个，Kinesis Video Streams 会因为错误而限制最新的连接。`ConnectionLimitExceededException`

**注意**  
`GetMedia`HTTP 响应状态码将立即返回，但如果没有已摄取的片段可供播放，则读取 HTTP 响应有效负载将在 3 秒后超时。

**注意**  
如果在调用 Kinesis Video Streams 媒体 API 后出现错误，则除了 HTTP 状态代码和响应正文外，还会包含以下信息：  
 `x-amz-ErrorType`HTTP 标头 — 除了 HTTP 状态码提供的错误类型外，还包含更具体的错误类型。
 `x-amz-RequestId`HTTP 标头 — 如果你想向报告问题 AWS，如果给出请求编号，支持团队可以更好地诊断问题。
HTTP 状态码和 ErrorType 标头都可用于对错误是否可重试以及在什么条件下做出编程决策，并提供有关客户端程序员可能需要采取哪些操作才能成功重试的信息。  
有关更多信息，请参阅本主题底部的**错误**部分以及[常见错误](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/CommonErrors.html)。

## 请求语法
<a name="API_dataplane_GetMedia_RequestSyntax"></a>

```
POST /getMedia HTTP/1.1
Content-type: application/json

{
   "StartSelector": { 
      "AfterFragmentNumber": "{{string}}",
      "ContinuationToken": "{{string}}",
      "StartSelectorType": "{{string}}",
      "StartTimestamp": {{number}}
   },
   "StreamARN": "{{string}}",
   "StreamName": "{{string}}"
}
```

## URI 请求参数
<a name="API_dataplane_GetMedia_RequestParameters"></a>

该请求不使用任何 URI 参数。

## 请求正文
<a name="API_dataplane_GetMedia_RequestBody"></a>

请求接受采用 JSON 格式的以下数据。

 ** [StartSelector](#API_dataplane_GetMedia_RequestSyntax) **   <a name="KinesisVideo-dataplane_GetMedia-request-StartSelector"></a>
标识要从指定流中获取的起始块。  
类型：[StartSelector](API_dataplane_StartSelector.md) 对象  
是否必需：是

 ** [StreamARN](#API_dataplane_GetMedia_RequestSyntax) **   <a name="KinesisVideo-dataplane_GetMedia-request-StreamARN"></a>
你想从哪里获取媒体内容的直播的 ARN。如果未指定`streamARN`，则必须指定`streamName`。  
类型：字符串  
长度限制：最小长度为 1。长度上限为 1024。  
模式：`arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+`  
必需：否

 ** [StreamName](#API_dataplane_GetMedia_RequestSyntax) **   <a name="KinesisVideo-dataplane_GetMedia-request-StreamName"></a>
您要从中获取媒体内容的 Kinesis 视频流名称。如果未指定`streamName`，则必须指定`streamARN`。  
类型：字符串  
长度限制：最小长度为 1。最大长度为 256。  
模式：`[a-zA-Z0-9_.-]+`  
必需：否

## 响应语法
<a name="API_dataplane_GetMedia_ResponseSyntax"></a>

```
HTTP/1.1 200
Content-Type: {{ContentType}}

{{Payload}}
```

## 响应元素
<a name="API_dataplane_GetMedia_ResponseElements"></a>

如果此操作成功，则该服务将会发送回 HTTP 200 响应。

响应将返回以下 HTTP 标头。

 ** [ContentType](#API_dataplane_GetMedia_ResponseSyntax) **   <a name="KinesisVideo-dataplane_GetMedia-response-ContentType"></a>
所请求媒体的内容类型。  
长度限制：最小长度为 1。最大长度为 128。  
模式：`^[a-zA-Z0-9_\.\-]+$`

响应将以下内容作为 HTTP 正文返回。

 ** [Payload](#API_dataplane_GetMedia_ResponseSyntax) **   <a name="KinesisVideo-dataplane_GetMedia-response-Payload"></a>
 Kinesis Video Streams 返回的有效载荷是来自指定直播的一系列块。有关区块的更多信息，请参阅[PutMedia](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.html)。Kinesis Video Streams 在通话中返回`GetMedia`的区块还包括以下其他 Matroska (MKV) 标签：  
+ AWS\_KINESISVIDEO\_CONTINUATION\_TOKEN (UTF-8 字符串)-如果您的`GetMedia`呼叫终止，则可以在下一个请求中使用此延续令牌来获取最后一个请求终止的下一个区块。
+ AWS\_KINESISVIDEO\_MILLIS\_BEHIND\_NOW （UTF-8 字符串）-客户端应用程序可以使用此标签值来确定响应中返回的区块与流中的最新区块相差多远。
+ AWS\_KINESISVIDEO\_FRAGMENT\_NUMBER -分块中返回的片段编号。
+ AWS\_KINESISVIDEO\_SERVER\_TIMESTAMP -片段的服务器时间戳。
+ AWS\_KINESISVIDEO\_PRODUCER\_TIMESTAMP -片段的制作者时间戳。
如果发生错误，将显示以下标签：  
+ AWS\_KINESISVIDEO\_ERROR\_CODE -导致 GetMedia 停止的错误的字符串描述。
+ AWS\_KINESISVIDEO\_ERROR\_ID：错误的整数代码。
错误代码如下：  
+ 3002-写入直播时出错
+ 4000-未找到请求的片段
+ 4500-直播的 KMS 密钥被拒绝访问
+ 4501-直播的 KMS 密钥已禁用
+ 4502-直播的 KMS 密钥存在验证错误
+ 4503-直播中指定的 KMS 密钥不可用
+ 4504-直播中指定的 KMS 密钥的使用无效
+ 4505-直播中指定的 KMS 密钥的状态无效
+ 4506-找不到直播中指定的 KMS 密钥
+ 5000-内部错误

## 错误
<a name="API_dataplane_GetMedia_Errors"></a>

有关所有操作的常见错误的信息，请参阅[常见错误类型](CommonErrors.md)。

 ** ClientLimitExceededException **   
Kinesis Video Streams 已限制该请求，因为您已超过允许的客户端调用限制。稍后再尝试拨打电话。  
HTTP 状态代码：400

 ** ConnectionLimitExceededException **   
Kinesis Video Streams 已限制该请求，因为您已超过允许的客户端连接限制。  
HTTP 状态代码：400

 ** InvalidArgumentException **   
此输入参数的值无效。  
HTTP 状态代码：400

 ** InvalidEndpointException **   
呼叫者使用了错误的端点将数据写入流。收到此类异常后，用户必须在`APIName`设置为的情况下调`GetDataEndpoint`用，`PUT_MEDIA`并使用响应中的端点来调用下一个`PutMedia`调用。  
HTTP 状态代码：400

 ** NotAuthorizedException **   
调用者无权对给定直播执行操作，或者令牌已过期。  
HTTP 状态代码：401

 ** ResourceNotFoundException **   
状态码：404，给定名称的直播不存在。  
HTTP 状态代码：404

## 另请参阅
<a name="API_dataplane_GetMedia_SeeAlso"></a>

有关以特定语言之一使用此 API 的更多信息 AWS SDKs，请参阅以下内容：
+  [AWS 命令行界面 V2](https://docs.aws.amazon.com/goto/cli2/kinesis-video-data-2017-09-30/GetMedia) 
+  [AWS 适用于.NET 的 SDK V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesis-video-data-2017-09-30/GetMedia) 
+  [AWS 适用于 C\+\+ 的 SDK](https://docs.aws.amazon.com/goto/SdkForCpp/kinesis-video-data-2017-09-30/GetMedia) 
+  [AWS 适用于 Go v2 的 SDK](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesis-video-data-2017-09-30/GetMedia) 
+  [AWS 适用于 Java 的 SDK V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesis-video-data-2017-09-30/GetMedia) 
+  [AWS JavaScript V3 版 SDK](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesis-video-data-2017-09-30/GetMedia) 
+  [AWS 适用于 Kotlin 的 SDK](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesis-video-data-2017-09-30/GetMedia) 
+  [AWS 适用于 PHP 的 SDK V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesis-video-data-2017-09-30/GetMedia) 
+  [AWS Python 软件开发工具包](https://docs.aws.amazon.com/goto/boto3/kinesis-video-data-2017-09-30/GetMedia) 
+  [AWS 适用于 Ruby V3 的 SDK](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesis-video-data-2017-09-30/GetMedia) 