

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# PutMedia
<a name="API_dataplane_PutMedia"></a>

 Gunakan API ini untuk mengirim data media ke aliran video Kinesis. 

**catatan**  
Anda harus terlebih dahulu memanggil `GetDataEndpoint` API untuk mendapatkan titik akhir. Kemudian kirim `PutMedia` permintaan ke titik akhir ini menggunakan parameter [--endpoint-url](https://docs.aws.amazon.com/cli/latest/reference/). 

Dalam permintaan, Anda menggunakan header HTTP untuk memberikan informasi parameter, misalnya, nama aliran, stempel waktu, dan apakah nilai stempel waktu mutlak atau relatif terhadap saat produser mulai merekam. Anda menggunakan badan permintaan untuk mengirim data media. Kinesis Video Streams hanya mendukung format kontainer Matroska (MKV) untuk mengirim data media menggunakan API ini. 

Anda memiliki opsi berikut untuk mengirim data menggunakan API ini:
+ Kirim data media secara real time: Misalnya, kamera keamanan dapat mengirim bingkai secara real time saat menghasilkannya. Pendekatan ini meminimalkan latensi antara perekaman video dan data yang dikirim pada kabel. Ini disebut sebagai produsen berkelanjutan. Dalam hal ini, aplikasi konsumen dapat membaca aliran secara real time atau bila diperlukan. 
+ Kirim data media secara offline (dalam batch): Misalnya, kamera tubuh mungkin merekam video selama berjam-jam dan menyimpannya di perangkat. Kemudian, ketika Anda menghubungkan kamera ke port docking, kamera dapat memulai `PutMedia` sesi untuk mengirim data ke aliran video Kinesis. Dalam skenario ini, latensi tidak menjadi masalah. 

Saat menggunakan API ini, perhatikan pertimbangan berikut:
+ Anda dapat menentukan `streamName` atau `streamARN`, tetapi bukan keduanya.
+ Untuk dapat memutar media di konsol atau melalui HLS, trek 1 dari setiap fragmen harus berisi video yang disandikan h.264, CodeCID dalam metadata fragmen harus “V\_ MPEG/ISO/AVC “, dan metadata fragmen harus menyertakan data pribadi codec h.264 yang diformat AVCC. Secara opsional, trek 2 dari setiap fragmen harus berisi audio yang disandikan AAC, CodeCID dalam metadata fragmen harus “A\_AAC”, dan metadata fragmen harus menyertakan data pribadi codec AAC.
+ `PutMedia`API dirancang untuk beroperasi sebagai API streaming melalui koneksi yang berjalan lama. Ini tidak dimaksudkan untuk digunakan RESTful dengan cara tradisional, di mana koneksi HTTP baru dibuat dan ditutup untuk setiap fragmen. Saat menggunakan `PutMedia` API, gunakan pengkodean transfer chunked HTTP untuk mengirim fragmen secara terus menerus melalui koneksi persisten.
+ Untuk setiap fragmen yang diterima dalam satu `PutMedia` sesi, Kinesis Video Streams mengirimkan satu atau lebih ucapan terima kasih. Pertimbangan jaringan sisi klien potensial dapat menyebabkan Anda tidak mendapatkan semua pengakuan ini saat dihasilkan.
**catatan**  
Gunakan `PutMedia` sebagai koneksi streaming yang berjalan lama untuk mengirim beberapa fragmen dalam satu koneksi persisten. Jika Anda mencoba lebih dari satu `PutMedia` koneksi bersamaan, Kinesis Video Streams membatasi koneksi terbaru dengan kesalahan. `ConnectionLimitExceededException`

Batasan berikut berlaku saat menggunakan `PutMedia` API:
+ Klien dapat menelepon `PutMedia` hingga lima kali per detik per aliran.
+ Klien dapat mengirim hingga lima fragmen per detik per aliran.
+ Kinesis Video Streams membaca data media dengan kecepatan hingga 12,5 MB/detik, atau 100 Mbps selama sesi. `PutMedia` 

Perhatikan kendala berikut. Dalam kasus ini, Kinesis Video Streams mengirimkan pengakuan Kesalahan dalam respons. 
+ Fragmen yang memiliki kode waktu yang mencakup lebih lama dari batas maksimum yang diizinkan dan yang berisi lebih dari 50 MB data tidak diperbolehkan. 
+ Fragmen yang berisi lebih dari tiga trek tidak diperbolehkan. Setiap frame di setiap fragmen harus memiliki nomor trek yang sama dengan salah satu trek yang ditentukan dalam header fragmen. Selain itu, setiap fragmen harus berisi setidaknya satu frame untuk setiap trek yang ditentukan dalam header fragmen.
+ Setiap fragmen harus berisi setidaknya satu frame untuk setiap trek yang ditentukan dalam metadata fragmen.
+ Stempel waktu bingkai paling awal dalam sebuah fragmen harus setelah stempel waktu bingkai terbaru di fragmen sebelumnya.
+ Aliran MKV yang berisi lebih dari satu segmen MKV atau berisi elemen MKV yang tidak diizinkan (seperti`track*`) juga menghasilkan pengakuan Kesalahan. 

Kinesis Video Streams menyimpan setiap fragmen yang masuk dan metadata terkait dalam apa yang disebut “potongan.” Metadata fragmen meliputi yang berikut: 
+ Header MKV disediakan di awal permintaan `PutMedia`
+ Metadata khusus Kinesis Video Streams berikut untuk fragmen:
  +  `server_timestamp`- Timestamp saat Kinesis Video Streams mulai menerima fragmen. 
  +  `producer_timestamp`- Timestamp, ketika produser mulai merekam fragmen. Kinesis Video Streams menggunakan tiga informasi yang diterima dalam permintaan untuk menghitung nilai ini. 
    + Nilai kode waktu fragmen yang diterima di badan permintaan bersama dengan fragmen.
    + Dua header permintaan: `producerStartTimestamp` (saat produser mulai merekam) dan `fragmentTimeCodeType` (apakah kode waktu fragmen dalam muatan adalah absolut atau relatif).

    Kinesis Video Streams kemudian `producer_timestamp` menghitung untuk fragmen sebagai berikut:

     Jika `fragmentTimeCodeType` relatif, maka 

     `producer_timestamp``producerStartTimeStamp`=\+ kode waktu fragmen 

    Jika `fragmentTimeCodeType` mutlak, maka 

     `producer_timestamp`= kode waktu fragmen (dikonversi ke milidetik)
  + Nomor fragmen unik yang ditetapkan oleh Kinesis Video Streams.

  

**catatan**  
 Saat Anda membuat `GetMedia` permintaan, Kinesis Video Streams mengembalikan aliran potongan ini. Klien dapat memproses metadata sesuai kebutuhan. 

**catatan**  
Operasi ini hanya tersedia untuk AWS SDK for Java. Itu tidak didukung AWS SDKs untuk bahasa lain.

**catatan**  
Kinesis Video Streams tidak mengurai dan memvalidasi data pribadi codec selama konsumsi dan pengarsipan melalui API. PutMedia KVS mengekstrak dan memvalidasi informasi yang diperlukan dari data pribadi codec untuk MPEG-TS dan kemasan MP4 fragmen saat mengkonsumsi aliran melalui HLS. APIs

**catatan**  
Jika kesalahan muncul setelah menjalankan API media Kinesis Video Streams, selain kode status HTTP dan badan respons, itu mencakup potongan-potongan informasi berikut:   
 `x-amz-ErrorType`Header HTTP - berisi jenis kesalahan yang lebih spesifik selain apa yang disediakan kode status HTTP. 
 `x-amz-RequestId`Header HTTP - jika Anda ingin melaporkan masalah AWS, tim dukungan dapat mendiagnosis masalah dengan lebih baik jika diberi ID Permintaan.
Baik kode status HTTP dan ErrorType header dapat digunakan untuk membuat keputusan terprogram tentang apakah kesalahan dapat dicoba ulang dan dalam kondisi apa, serta memberikan informasi tentang tindakan apa yang mungkin perlu dilakukan oleh programmer klien agar berhasil mencoba lagi.  
Untuk informasi selengkapnya, lihat bagian **Kesalahan** di bagian bawah topik ini, serta [Kesalahan Umum](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/CommonErrors.html). 

## Minta Sintaks
<a name="API_dataplane_PutMedia_RequestSyntax"></a>

```
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}}
```

## Parameter Permintaan URI
<a name="API_dataplane_PutMedia_RequestParameters"></a>

Permintaan menggunakan parameter URI berikut.

 ** [FragmentTimecodeType](#API_dataplane_PutMedia_RequestSyntax) **   <a name="KinesisVideo-dataplane_PutMedia-request-FragmentTimecodeType"></a>
Anda meneruskan nilai ini sebagai header `x-amzn-fragment-timecode-type` HTTP.  
Menunjukkan apakah kode waktu dalam fragmen (payload, isi permintaan HTTP) mutlak atau relatif terhadap. `producerStartTimestamp` Kinesis Video Streams menggunakan informasi ini untuk `producer_timestamp` menghitung fragmen yang diterima dalam permintaan, seperti yang dijelaskan dalam ikhtisar API.  
Nilai yang Valid: `ABSOLUTE | RELATIVE`   
Wajib: Ya

 ** [ProducerStartTimestamp](#API_dataplane_PutMedia_RequestSyntax) **   <a name="KinesisVideo-dataplane_PutMedia-request-ProducerStartTimestamp"></a>
Anda meneruskan nilai ini sebagai header `x-amzn-producer-start-timestamp` HTTP.  
Ini adalah stempel waktu produsen di mana produsen mulai merekam media (bukan stempel waktu dari fragmen tertentu dalam permintaan).

 ** [StreamARN](#API_dataplane_PutMedia_RequestSyntax) **   <a name="KinesisVideo-dataplane_PutMedia-request-StreamARN"></a>
Anda meneruskan nilai ini sebagai header `x-amzn-stream-arn` HTTP.  
Nama Sumber Daya Amazon (ARN) dari aliran video Kinesis tempat Anda ingin menulis konten media. Jika Anda tidak menentukan`streamARN`, Anda harus menentukan`streamName`.  
Batasan Panjang: Panjang minimum 1. Panjang maksimum 1024.  
Pola: `arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+` 

 ** [StreamName](#API_dataplane_PutMedia_RequestSyntax) **   <a name="KinesisVideo-dataplane_PutMedia-request-StreamName"></a>
Anda meneruskan nilai ini sebagai header `x-amzn-stream-name` HTTP.  
Nama aliran video Kinesis tempat Anda ingin menulis konten media. Jika Anda tidak menentukan`streamName`, Anda harus menentukan`streamARN`.  
Batasan Panjang: Panjang minimum 1. Panjang maksimum 256.  
Pola: `[a-zA-Z0-9_.-]+` 

## Isi Permintaan
<a name="API_dataplane_PutMedia_RequestBody"></a>

Permintaan menerima data biner berikut.

 ** [Payload](#API_dataplane_PutMedia_RequestSyntax) **   <a name="KinesisVideo-dataplane_PutMedia-request-Payload"></a>
 Konten media untuk menulis ke aliran video Kinesis. Dalam implementasi saat ini, Kinesis Video Streams hanya mendukung format wadah Matroska (MKV) dengan segmen MKV tunggal. Segmen dapat berisi satu atau lebih cluster.   
Setiap cluster MKV memetakan ke fragmen aliran video Kinesis. Durasi cluster apa pun yang Anda pilih menjadi durasi fragmen. 

## Sintaksis Respons
<a name="API_dataplane_PutMedia_ResponseSyntax"></a>

```
HTTP/1.1 200

{{Payload}}
```

## Elemen Respons
<a name="API_dataplane_PutMedia_ResponseElements"></a>

Jika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200.

Respons mengembalikan yang berikut sebagai isi HTTP.

 ** [Payload](#API_dataplane_PutMedia_ResponseSyntax) **   <a name="KinesisVideo-dataplane_PutMedia-response-Payload"></a>
 Setelah Kinesis Video Streams berhasil `PutMedia` menerima permintaan, layanan memvalidasi header permintaan. Layanan kemudian mulai membaca payload dan pertama mengirimkan respons HTTP 200.   
Layanan kemudian mengembalikan aliran yang berisi serangkaian objek JSON (`Acknowledgement`objek) yang dipisahkan oleh baris baru. Ucapan terima kasih diterima pada koneksi yang sama di mana data media dikirim. Mungkin ada banyak ucapan terima kasih atas permintaan. `PutMedia` Masing-masing `Acknowledgement` terdiri dari pasangan kunci-nilai berikut:  
+  `AckEventType`- Jenis acara pengakuan mewakili. 
  +  **Buffering:** Kinesis Video Streams telah mulai menerima fragmen. Kinesis Video Streams mengirimkan pengakuan Buffering pertama saat byte pertama data fragmen diterima. 
  +  **Diterima:** Kinesis Video Streams menerima seluruh fragmen. Jika Anda tidak mengonfigurasi aliran untuk mempertahankan data, produsen dapat menghentikan buffering fragmen setelah menerima pengakuan ini.
  +  **Bertahan:** Kinesis Video Streams telah mempertahankan fragmen (misalnya, ke Amazon S3). Anda mendapatkan pengakuan ini jika Anda mengonfigurasi aliran untuk mempertahankan data. Setelah Anda menerima pengakuan ini, produsen dapat menghentikan buffering fragmen.
  +  **Kesalahan:** Kinesis Video Streams mengalami kesalahan saat memproses fragmen. Anda dapat meninjau kode kesalahan dan menentukan tindakan selanjutnya. 
  +  **Idle:** `PutMedia` Sesi sedang berlangsung. Namun, Kinesis Video Streams saat ini tidak menerima data. Kinesis Video Streams mengirimkan pengakuan ini secara berkala hingga 30 detik setelah data terakhir diterima. Jika tidak ada data yang diterima dalam 30 detik, Kinesis Video Streams menutup permintaan. 
**catatan**  
 Pengakuan ini dapat membantu produsen menentukan apakah `PutMedia` koneksi masih hidup, bahkan jika itu tidak mengirim data apa pun. 
+  `FragmentTimecode`- Kode waktu fragmen yang pengakuannya dikirim. 

  Elemen dapat hilang jika `AckEventType` **Idle**. 
+  `FragmentNumber`- Kinesis Video Streams-nomor fragmen yang dihasilkan untuk mana pengakuan dikirim.
+  `ErrorId`dan `ErrorCode` - Jika ya`Error`, bidang ini menyediakan kode kesalahan yang sesuai. `AckEventType` Berikut ini adalah daftar kesalahan IDs dan kode kesalahan serta pesan kesalahan yang sesuai:
  + 4000 - STREAM\_READ\_ERROR - Kesalahan membaca aliran data.
  + 4001 - MAX\_FRAGMENT\_SIZE\_REACHED - Ukuran fragmen lebih besar dari batas maksimum, 50 MB, diizinkan.
  + 4002 - MAX\_FRAGMENT\_DURATION\_REACHED - Durasi fragmen lebih besar dari batas maksimum yang diizinkan.
  + 4003 - MAX\_CONNECTION\_DURATION\_REACHED - Durasi koneksi lebih besar dari ambang batas maksimum yang diizinkan.
  + 4004 - FRAGMENT\_TIMECODE\_LESSER\_THAN\_PREVIOUS - Kode waktu fragmen kurang dari kode waktu waktu sebelumnya (dalam panggilan, Anda tidak dapat mengirim fragmen yang rusak). `PutMedia`
  + 4005 - MORE\_THAN\_ALLOWED\_TRACKS\_FOUND - Lebih dari satu trek ditemukan di MKV. (usang)
  + 4006 - INVALID\_MKV\_DATA - Gagal mengurai aliran masukan sebagai format MKV yang valid.
  + 4007 - INVALID\_PRODUCER\_TIMESTAMP - Stempel waktu produsen tidak valid.
  + 4008 - STREAM\_NOT\_ACTIVE - Stream tidak ada lagi (dihapus).
  + 4009 - FRAGMENT\_METADATA\_LIMIT\_REACHED - Batas metadata fragmen tercapai. Lihat bagian [Batas](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/limits.html) pada panduan pengembang.
  + 4010 - TRACK\_NUMBER\_MISMATCH - Nomor trek dalam bingkai MKV tidak cocok dengan trek di header MKV.
  + 4011 - FRAMES\_MISSING\_FOR\_TRACK - Fragmen tidak berisi bingkai apa pun untuk setidaknya satu trek di header MKV.
  + 4012 - INVALID\_FRAGMENT\_METADATA - Nama metadata fragmen tidak dapat dimulai dengan string. ` AWS_`
  + 4500 - KMS\_KEY\_ACCESS\_DENIED - Akses ke kunci KMS yang ditentukan aliran ditolak.
  + 4501 - KMS\_KEY\_DISABLED - Kunci KMS yang ditentukan aliran dinonaktifkan.
  + 4502 - KMS\_KEY\_VALIDATION\_ERROR - Kunci KMS yang ditentukan aliran gagal validasi.
  + 4503 - KMS\_KEY\_UNAVAILABLE - Kunci KMS yang ditentukan aliran tidak tersedia.
  + 4504 - KMS\_KEY\_INVALID\_USAGE - Penggunaan tidak valid dari kunci KMS yang ditentukan aliran.
  + 4505 - KMS\_KEY\_INVALID\_STATE - Kunci KMS yang ditentukan aliran berada dalam keadaan tidak valid.
  + 4506 - KMS\_KEY\_NOT\_FOUND - Kunci KMS yang ditentukan aliran tidak ditemukan.
  + 5000 - INTERNAL\_ERROR - Kesalahan layanan internal.
  + 5001 - ARCHIVAL\_ERROR - Kinesis Video Streams gagal mempertahankan fragmen ke penyimpanan data.
Produsen, saat mengirim muatan untuk `PutMedia` permintaan yang berjalan lama, harus membaca tanggapan untuk ucapan terima kasih. Produser mungkin menerima potongan pengakuan pada saat yang sama, karena buffering pada server proxy perantara. Produser yang ingin menerima ucapan terima kasih tepat waktu dapat mengirim lebih sedikit fragmen di setiap `PutMedia` permintaan. 

## Kesalahan
<a name="API_dataplane_PutMedia_Errors"></a>

Untuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat [Jenis Kesalahan Umum](CommonErrors.md).

 ** ClientLimitExceededException **   
Kinesis Video Streams telah membatasi permintaan karena Anda telah melampaui batas panggilan klien yang diizinkan. Coba buat panggilan nanti.  
Kode Status HTTP: 400

 ** ConnectionLimitExceededException **   
Kinesis Video Streams telah membatasi permintaan karena Anda telah melampaui batas koneksi klien yang diizinkan.  
Kode Status HTTP: 400

 ** InvalidArgumentException **   
Nilai untuk parameter input ini tidak valid.  
Kode Status HTTP: 400

 ** InvalidEndpointException **   
Penelepon menggunakan titik akhir yang salah untuk menulis data ke aliran. Saat menerima pengecualian seperti itu, pengguna harus memanggil `GetDataEndpoint` dengan `APIName` set ke `PUT_MEDIA` dan menggunakan titik akhir dari respons untuk memanggil panggilan berikutnya`PutMedia`.   
Kode Status HTTP: 400

 ** NotAuthorizedException **   
Penelepon tidak berwenang untuk melakukan operasi pada aliran yang diberikan, atau token telah kedaluwarsa.  
Kode Status HTTP: 401

 ** ResourceNotFoundException **   
Kode Status: 404, Aliran dengan nama yang diberikan tidak ada.  
Kode Status HTTP: 404

## Contoh
<a name="API_dataplane_PutMedia_Examples"></a>

### Format Pengakuan
<a name="API_dataplane_PutMedia_Example_1"></a>

Format pengakuan adalah sebagai berikut:

```
{
       Acknowledgement : {
          "EventType": enum
          "FragmentTimecode": Long,
          "FragmentNumber": Long,
          "ErrorId" : String       
      }
}
```

## Lihat Juga
<a name="API_dataplane_PutMedia_SeeAlso"></a>

Untuk informasi selengkapnya tentang penggunaan API ini di salah satu bahasa khusus AWS SDKs, lihat berikut ini:
+  [AWS Antarmuka Baris Perintah V2](https://docs.aws.amazon.com/goto/cli2/kinesis-video-data-2017-09-30/PutMedia) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/kinesis-video-data-2017-09-30/PutMedia) 
+  [AWS SDK for C\+\+](https://docs.aws.amazon.com/goto/SdkForCpp/kinesis-video-data-2017-09-30/PutMedia) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/kinesis-video-data-2017-09-30/PutMedia) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/kinesis-video-data-2017-09-30/PutMedia) 
+  [AWS SDK untuk V3 JavaScript ](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/kinesis-video-data-2017-09-30/PutMedia) 
+  [AWS SDK para Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/kinesis-video-data-2017-09-30/PutMedia) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/kinesis-video-data-2017-09-30/PutMedia) 
+  [AWS SDK untuk Python](https://docs.aws.amazon.com/goto/boto3/kinesis-video-data-2017-09-30/PutMedia) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/kinesis-video-data-2017-09-30/PutMedia) 