AWS kinesisvideostreams documentation change
Summary
Entire content of the file was removed, effectively deleting the documentation for the PutMedia API.
Security assessment
The diff shows complete removal of documentation content without any mention of security vulnerabilities, weaknesses, or incidents. No evidence exists that this deletion addresses a security issue. The change appears to be general documentation cleanup or restructuring rather than security-related.
Diff
diff --git a/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.md b/kinesisvideostreams/latest/dg/API_dataplane_PutMedia.md index 525ac2b86..8b1378917 100644 --- a//kinesisvideostreams/latest/dg/API_dataplane_PutMedia.md +++ b//kinesisvideostreams/latest/dg/API_dataplane_PutMedia.md @@ -1 +0,0 @@ -[View a markdown version of this page](API_dataplane_PutMedia.md) @@ -3,397 +1,0 @@ -[](/pdfs/kinesisvideostreams/latest/dg/kinesisvideo-dg.pdf#API_dataplane_PutMedia "Open PDF") - -[Documentation](/index.html)[Amazon Kinesis Video Streams](/kinesis/index.html)[Developer Guide](what-is-kinesis-video.html) - -Request SyntaxURI Request ParametersRequest BodyResponse SyntaxResponse ElementsErrorsExamplesSee Also - -# PutMedia - -Use this API to send media data to a Kinesis video stream. - -###### Note - -You must first call the `GetDataEndpoint` API to get an endpoint. Then send the `PutMedia` requests to this endpoint using the [\--endpoint-url parameter](https://docs.aws.amazon.com/cli/latest/reference/). - -In the request, you use the HTTP headers to provide parameter information, for example, stream name, timestamp, and whether the timestamp value is absolute or relative to when the producer started recording. You use the request body to send the media data. Kinesis Video Streams supports only the Matroska (MKV) container format for sending media data using this API. - -You have the following options for sending data using this API: - - * Send media data in real time: For example, a security camera can send frames in real time as it generates them. This approach minimizes the latency between the video recording and data sent on the wire. This is referred to as a continuous producer. In this case, a consumer application can read the stream in real time or when needed. - - * Send media data offline (in batches): For example, a body camera might record video for hours and store it on the device. Later, when you connect the camera to the docking port, the camera can start a `PutMedia` session to send data to a Kinesis video stream. In this scenario, latency is not an issue. - - - - -When using this API, note the following considerations: - - * You must specify either `streamName` or `streamARN`, but not both. - - * To be able to play the media on the console or via HLS, track 1 of each fragment should contain h.264 encoded video, the CodecID in the fragment metadata should be "V_MPEG/ISO/AVC", and the fragment metadata should include AVCC formatted h.264 codec private data. Optionally, track 2 of each fragment should contain AAC encoded audio, the CodecID in the fragment metadata should be "A_AAC", and the fragment metadata should include AAC codec private data. - - * The `PutMedia` API is designed to operate as a streaming API over a long-running connection. It is not intended for use in a traditional RESTful manner, where a new HTTP connection is established and closed for each fragment. When using the `PutMedia` API, use HTTP chunked transfer encoding to send fragments continuously over a persistent connection. - - * For each fragment received in a `PutMedia` session, Kinesis Video Streams sends one or more acknowledgements. Potential client-side network considerations might cause you to not get all these acknowledgements as they are generated. - -###### Note - -Use `PutMedia` as a streaming long-running connection to send multiple fragments in a single persistent connection. If you attempt more than one concurrent `PutMedia` connection, Kinesis Video Streams throttles the latest connections with a `ConnectionLimitExceededException` error. - - - - -The following limits apply when using the `PutMedia` API: - - * A client can call `PutMedia` up to five times per second per stream. - - * A client can send up to five fragments per second per stream. - - * Kinesis Video Streams reads media data at a rate of up to 12.5 MB/second, or 100 Mbps during a `PutMedia` session. - - - - -Note the following constraints. In these cases, Kinesis Video Streams sends the Error acknowledgement in the response. - - * Fragments that have time codes spanning longer than the maximum allowed limit and that contain more than 50 MB of data are not allowed. - - * Fragments containing more than three tracks are not allowed. Each frame in every fragment must have the same track number as one of the tracks defined in the fragment header. Additionally, every fragment must contain at least one frame for each track defined in the fragment header. - - * Each fragment must contain at least one frame for each track defined in the fragment metadata. - - * The earliest frame timestamp in a fragment must be after the latest frame timestamp in the previous fragment. - - * An MKV stream containing more than one MKV segment or containing disallowed MKV elements (like `track*`) also results in the Error acknowledgement. - - - - -Kinesis Video Streams stores each incoming fragment and related metadata in what is called a "chunk." The fragment metadata includes the following: - - * The MKV headers provided at the start of the `PutMedia` request - - * The following Kinesis Video Streams-specific metadata for the fragment: - - * `server_timestamp` \- Timestamp when Kinesis Video Streams started receiving the fragment. - - * `producer_timestamp` \- Timestamp, when the producer started recording the fragment. Kinesis Video Streams uses three pieces of information received in the request to calculate this value. - - * The fragment timecode value received in the request body along with the fragment. - - * Two request headers: `producerStartTimestamp` (when the producer started recording) and `fragmentTimeCodeType` (whether the fragment timecode in the payload is absolute or relative). - -Kinesis Video Streams then computes the `producer_timestamp` for the fragment as follows: - -If `fragmentTimeCodeType` is relative, then - -`producer_timestamp` = `producerStartTimeStamp` \+ fragment timecode - -If `fragmentTimeCodeType` is absolute, then - -`producer_timestamp` = fragment timecode (converted to milliseconds) - - * Unique fragment number assigned by Kinesis Video Streams. - - - - -###### Note - -When you make the `GetMedia` request, Kinesis Video Streams returns a stream of these chunks. The client can process the metadata as needed. - -###### Note - -This operation is only available for the AWS SDK for Java. It is not supported in AWS SDKs for other languages. - -###### Note - -Kinesis Video Streams does not parse and validate the codec private data during ingestion and archival via the PutMedia API. KVS extracts and validates the necessary information from the codec private data for MPEG-TS and MP4 fragment packaging when consuming the stream via the HLS APIs. - -###### Note - -If an error is thrown after invoking a Kinesis Video Streams media API, in addition to the HTTP status code and the response body, it includes the following pieces of information: - - * `x-amz-ErrorType` HTTP header – contains a more specific error type in addition to what the HTTP status code provides. - - * `x-amz-RequestId` HTTP header – if you want to report an issue to AWS, the support team can better diagnose the problem if given the Request Id. - - - - -Both the HTTP status code and the ErrorType header can be utilized to make programmatic decisions about whether errors are retry-able and under what conditions, as well as provide information on what actions the client programmer might need to take in order to successfully try again. - -For more information, see the **Errors** section at the bottom of this topic, as well as [Common Errors](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/CommonErrors.html). - -## Request Syntax - - - POST /putMedia HTTP/1.1 - x-amzn-stream-name: StreamName - x-amzn-stream-arn: StreamARN - x-amzn-fragment-timecode-type: FragmentTimecodeType - x-amzn-producer-start-timestamp: ProducerStartTimestamp - - Payload - -## URI Request Parameters - -The request uses the following URI parameters. - -**FragmentTimecodeType ** - - -You pass this value as the `x-amzn-fragment-timecode-type` HTTP header. - -Indicates whether timecodes in the fragments (payload, HTTP request body) are absolute or relative to `producerStartTimestamp`. Kinesis Video Streams uses this information to compute the `producer_timestamp` for the fragment received in the request, as described in the API overview. - -Valid Values: `ABSOLUTE | RELATIVE` - -Required: Yes - -**ProducerStartTimestamp ** - - -You pass this value as the `x-amzn-producer-start-timestamp` HTTP header. - -This is the producer timestamp at which the producer started recording the media (not the timestamp of the specific fragments in the request). - -**StreamARN ** - - -You pass this value as the `x-amzn-stream-arn` HTTP header. - -Amazon Resource Name (ARN) of the Kinesis video stream where you want to write the media content. If you don't specify the `streamARN`, you must specify the `streamName`. - -Length Constraints: Minimum length of 1. Maximum length of 1024. - -Pattern: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+` - -**StreamName ** - - -You pass this value as the `x-amzn-stream-name` HTTP header. - -Name of the Kinesis video stream where you want to write the media content. If you don't specify the `streamName`, you must specify the `streamARN`. - -Length Constraints: Minimum length of 1. Maximum length of 256. - -Pattern: `[a-zA-Z0-9_.-]+` - -## Request Body - -The request accepts the following binary data. - -**Payload ** - - -The media content to write to the Kinesis video stream. In the current implementation, Kinesis Video Streams supports only the Matroska (MKV) container format with a single MKV segment. A segment can contain one or more clusters. - -###### Note - -Each MKV cluster maps to a Kinesis video stream fragment. Whatever cluster duration you choose becomes the fragment duration. - -## Response Syntax