本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
GetMedia
使用此 API 从 Kinesis 视频流中检索媒体内容。在请求中,您可以确定直播名称或直播亚马逊资源名称 (ARN) 以及起始区块。然后,Kinesis Video Streams 按片段号的顺序返回区块流。
注意
您必须先调用GetDataEndpoint
API 才能获取终端节点。然后使用 --endpoint-url 参数将GetMedia
请求发送到该端点。
当您将媒体数据(片段)放入直播时,Kinesis Video Streams 将每个传入的片段和相关元数据存储在所谓的 “区块” 中。有关更多信息,请参阅PutMedia。GetMedia
API 从您在请求中指定的区块开始返回这些区块的流。
使用GetMedia
API 时存在以下限制:
-
每个流客户端每秒
GetMedia
最多可以调用五次。 -
Kinesis Video Streams 在会
GetMedia
话期间以高达 25 兆字节每秒(或每秒 200 兆比特)的速率发送媒体数据。
注意
如果在调用 Kinesis Video Streams 媒体 API 后引发错误,除了 HTTP 状态码和响应正文外,它还包括以下信息:
-
x-amz-ErrorType
HTTP 标头 — 除了 HTTP 状态码提供的错误类型外,还包含更具体的错误类型。 -
x-amz-RequestId
HTTP 标头 — 如果您想向其报告问题Amazon,则支持团队在提供请求编号后可以更好地诊断问题。
HTTP 状态码和 ErrorType 标头都可用于就错误是否可重试以及在什么条件下进行编程决策,并提供有关客户端程序员可能需要采取哪些操作才能成功重试的信息。
有关更多信息,请参阅本主题底部的错误部分以及常见错误。
请求语法
POST /getMedia HTTP/1.1
Content-type: application/json
{
"StartSelector": {
"AfterFragmentNumber": "string
",
"ContinuationToken": "string
",
"StartSelectorType": "string
",
"StartTimestamp": number
},
"StreamARN": "string
",
"StreamName": "string
"
}
URI 请求参数
该请求不使用任何 URI 参数。
请求正文
请求接受采用 JSON 格式的以下数据。
- StartSelector
-
标识要从指定流中获取的起始区块。
类型:StartSelector 对象
必需:是
- StreamARN
-
您要从中获取媒体内容的直播的 ARN。如果您未指定
streamARN
,则必须指定streamName
。类型:字符串
长度限制:最小长度为 1。长度上限为 1024。
模式:
arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+
必需:否
- StreamName
-
您要从中获取媒体内容的 Kinesis 视频流名称。如果您未指定
streamName
,则必须指定streamARN
。类型:字符串
长度限制:最小长度为 1。长度上限为 256。
模式:
[a-zA-Z0-9_.-]+
必需:否
响应语法
HTTP/1.1 200
Content-Type: ContentType
Payload
响应元素
如果此操作成功,则该服务将会发送回 HTTP 200 响应。
响应将返回以下 HTTP 标头。
- ContentType
-
所请求媒体的内容类型。
长度限制:最小长度为 1。最大长度为 128。
模式:
^[a-zA-Z0-9_\.\-]+$
响应将以下内容作为 HTTP 正文返回。
- Payload
-
Kinesis Video Streams 返回的有效载荷是来自指定直播的一系列区块。有关区块的更多信息,请参阅PutMedia。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 密钥的状态为 KMS 无效
-
4506-找不到流中指定的 KMS 密钥
-
5000-内部错误
-
错误
有关所有操作常见错误的信息,请参阅常见错误。
- ClientLimitExceededException
-
Kinesis Video Streams 限制了请求,因为您已超出允许的客户端呼叫限制。稍后再尝试打电话。
HTTP 状态代码:400
- ConnectionLimitExceededException
-
Kinesis Video Streams 限制了请求,因为您已超出允许的客户端连接限制。
HTTP 状态代码:400
- InvalidArgumentException
-
此输入参数的值无效。
HTTP 状态代码:400
- InvalidEndpointException
-
调用者使用了错误的端点将数据写入数据流。收到此类异常后,用户必须以 set
APIName
为调GetDataEndpoint
用,PUT_MEDIA
并使用 response 中的端点调用下一个PutMedia
调用。HTTP 状态代码:400
- NotAuthorizedException
-
调用者无权对给定的直播执行操作,或者令牌已过期。
HTTP 状态代码:401
- ResourceNotFoundException
-
状态码:404,具有给定名称的直播不存在。
HTTP 状态代码:404
另请参阅
有关在特定语言的 Amazon 软件开发工具包中使用此 API 的更多信息,请参阅以下内容: