PutMedia - Amazon Kinesis Video Streams

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

PutMedia

Gunakan ini API 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.

Dalam permintaan, Anda menggunakan HTTP header untuk memberikan informasi parameter, misalnya, nama streaming, 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 MKV Matroska () untuk mengirim data media menggunakan ini. API

Anda memiliki opsi berikut untuk mengirim data menggunakan iniAPI:

  • 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 iniAPI, perhatikan pertimbangan berikut:

  • Anda dapat menentukan streamName atau streamARN, tetapi bukan keduanya.

  • Untuk dapat memutar media di konsol atau melaluiHLS, 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 AAC disandikan, CodeCID dalam metadata fragmen harus “A_ AAC “, dan metadata fragmen harus menyertakan data pribadi codec. AAC

  • Anda mungkin merasa lebih mudah untuk menggunakan satu PutMedia sesi yang berjalan lama dan mengirim sejumlah besar fragmen data media dalam muatan. Untuk setiap fragmen yang diterima, Kinesis Video Streams mengirimkan satu atau lebih ucapan terima kasih. Pertimbangan jaringan potensial dapat menyebabkan Anda tidak mendapatkan semua pengakuan ini saat dihasilkan.

  • Anda dapat memilih beberapa PutMedia sesi berturut-turut, masing-masing dengan fragmen yang lebih sedikit untuk memastikan bahwa Anda mendapatkan semua pengakuan dari layanan secara real time.

catatan

Jika Anda mengirim data ke aliran yang sama pada beberapa PutMedia sesi simultan, fragmen media akan disisipkan di aliran. Anda harus memastikan bahwa ini OK dalam skenario aplikasi Anda.

Batasan berikut berlaku saat menggunakan PutMediaAPI:

  • 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.

  • MKVAliran yang berisi lebih dari satu MKV segmen atau berisi MKV elemen yang tidak diizinkan (sepertitrack*) 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:

  • MKVHeader yang 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_timestampproducerStartTimeStamp=+ 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 AWS SDK untuk 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 file. PutMedia API KVSmengekstrak dan memvalidasi informasi yang diperlukan dari data pribadi codec untuk MPEG -TS dan kemasan MP4 fragmen saat mengkonsumsi aliran melalui file. HLS APIs

catatan

Jika kesalahan muncul setelah menjalankan API media Kinesis Video Streams, selain kode status dan badan respons, itu mencakup potongan-potongan informasi berikut: HTTP

  • x-amz-ErrorTypeHTTPheader - berisi jenis kesalahan yang lebih spesifik selain apa yang disediakan kode HTTP status.

  • x-amz-RequestIdHTTPheader — jika Anda ingin melaporkan masalah AWS, tim dukungan dapat mendiagnosis masalah dengan lebih baik jika diberi ID Permintaan.

Baik kode HTTP status 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.

Sintaks Permintaan

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

URIParameter Permintaan

Permintaan menggunakan URI parameter berikut.

FragmentTimecodeType

Anda meneruskan nilai ini sebagai x-amzn-fragment-timecode-type HTTP header.

Menunjukkan apakah kode waktu dalam fragmen (muatan, badan HTTP permintaan) 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

Anda meneruskan nilai ini sebagai x-amzn-producer-start-timestamp HTTP header.

Ini adalah stempel waktu produsen di mana produsen mulai merekam media (bukan stempel waktu dari fragmen tertentu dalam permintaan).

StreamARN

Anda meneruskan nilai ini sebagai x-amzn-stream-arn HTTP header.

Nama Sumber Daya Amazon (ARN) dari aliran video Kinesis tempat Anda ingin menulis konten media. Jika Anda tidak menentukanstreamARN, Anda harus menentukanstreamName.

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

Anda meneruskan nilai ini sebagai x-amzn-stream-name HTTP header.

Nama aliran video Kinesis tempat Anda ingin menulis konten media. Jika Anda tidak menentukanstreamName, Anda harus menentukanstreamARN.

Batasan Panjang: Panjang minimum 1. Panjang maksimum 256.

Pola: [a-zA-Z0-9_.-]+

Isi Permintaan

Permintaan menerima data biner berikut.

Payload

Konten media untuk menulis ke aliran video Kinesis. Dalam implementasi saat ini, Kinesis Video Streams hanya mendukung format kontainer MKV Matroska () dengan satu segmen. MKV Segmen dapat berisi satu atau lebih cluster.

catatan

Setiap MKV cluster memetakan ke fragmen aliran video Kinesis. Durasi cluster apa pun yang Anda pilih akan menjadi durasi fragmen.

Sintaksis Respons

HTTP/1.1 200 Payload

Elemen Respons

Jika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200.

Respons mengembalikan yang berikut sebagai HTTP tubuh.

Payload

Setelah Kinesis Video Streams berhasil PutMedia menerima permintaan, layanan memvalidasi header permintaan. Layanan kemudian mulai membaca muatan dan pertama-tama mengirimkan respons HTTP 200.

Layanan kemudian mengembalikan aliran yang berisi serangkaian JSON objek (Acknowledgementobjek) 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.

  • ErrorIddan ErrorCode - Jika yaError, 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, diperbolehkan.

    • 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 PutMedia panggilan, Anda tidak dapat mengirim fragmen yang rusak).

    • 4005 - MORE _ THAN _ ALLOWED _ TRACKS _ FOUND - Lebih dari satu trek ditemukan diMKV. (usang)

    • 4006 - INVALID _ MKV _ DATA - Gagal mengurai aliran input sebagai format yang validMKV.

    • 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 pada panduan pengembang.

    • 4010 - TRACK NUMBER _ _ MISMATCH - Nomor trek dalam MKV bingkai tidak cocok dengan trek di MKV header.

    • 4011 - FRAMES _ MISSING _ FOR _ TRACK - Fragmen tidak berisi bingkai apa pun untuk setidaknya satu trek di MKV header.

    • 4012 - INVALID _ FRAGMENT _ METADATA - Nama metadata fragmen tidak dapat dimulai dengan string. AWS_

    • 4500 - KMS _ KEY _ ACCESS _ DENIED - Akses ke KMS kunci yang ditentukan aliran ditolak.

    • 4501 - KMS _ KEY _ DISABLED - KMS Kunci yang ditentukan aliran dinonaktifkan.

    • 4502 - KMS _ _ KEY VALIDATION _ ERROR - KMS Kunci yang ditentukan aliran gagal validasi.

    • 4503 - KMS _ KEY _ UNAVAILABLE - KMS Kunci yang ditentukan aliran tidak tersedia.

    • 4504 - KMS _ KEY _ INVALID _ USAGE - Penggunaan kunci yang ditentukan aliran tidak valid. KMS

    • 4505 - KMS _ KEY _ INVALID _ STATE - KMS Kunci yang ditentukan aliran berada dalam keadaan tidak valid.

    • 4506 - KMS _ KEY _ NOT _ FOUND - KMS Kunci yang ditentukan aliran tidak ditemukan.

    • 5000 - INTERNAL _ ERROR - Kesalahan layanan internal.

    • 5001 - ARCHIVAL _ ERROR - Kinesis Video Streams gagal mempertahankan fragmen ke penyimpanan data.

catatan

Produsen, saat mengirim muatan untuk PutMedia permintaan yang berjalan lama, harus membaca tanggapan untuk ucapan terima kasih. Produser mungkin menerima potongan ucapan terima kasih 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

Untuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum.

ClientLimitExceededException

Kinesis Video Streams telah membatasi permintaan karena Anda telah melampaui batas panggilan klien yang diizinkan. Coba buat panggilan nanti.

HTTPKode Status: 400

ConnectionLimitExceededException

Kinesis Video Streams telah membatasi permintaan karena Anda telah melampaui batas koneksi klien yang diizinkan.

HTTPKode Status: 400

InvalidArgumentException

Nilai untuk parameter input ini tidak valid.

HTTPKode Status: 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 berikutnyaPutMedia.

HTTPKode Status: 400

NotAuthorizedException

Penelepon tidak berwenang untuk melakukan operasi pada aliran yang diberikan, atau token telah kedaluwarsa.

HTTPKode Status: 401

ResourceNotFoundException

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

HTTPKode Status: 404

Contoh

Format Pengakuan

Format pengakuan adalah sebagai berikut:

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

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan ini API di salah satu bahasa khusus AWS SDKs, lihat berikut ini: