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
ataustreamARN
, 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 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.
-
MKVAliran yang berisi lebih dari satu MKV segmen atau berisi MKV elemen 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:
-
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) danfragmentTimeCodeType
(apakah kode waktu fragmen dalam muatan adalah absolut atau relatif).
Kinesis Video Streams kemudian
producer_timestamp
menghitung untuk fragmen sebagai berikut:Jika
fragmentTimeCodeType
relatif, makaproducer_timestamp
producerStartTimeStamp
=+ kode waktu fragmenJika
fragmentTimeCodeType
mutlak, makaproducer_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-ErrorType
HTTPheader - berisi jenis kesalahan yang lebih spesifik selain apa yang disediakan kode HTTP status. -
x-amz-RequestId
HTTPheader — 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 untukproducer_timestamp
menghitung fragmen yang diterima dalam permintaan, seperti yang dijelaskan dalam ikhtisar. APINilai 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 menentukan
streamARN
, 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 menentukan
streamName
, 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 (
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-masingAcknowledgement
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
danErrorCode
- 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 setiapPutMedia
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
denganAPIName
set kePUT_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: