amazon kinesis video streams - panduan developer

350
Amazon Kinesis Video Streams Panduan Developer

Upload: khangminh22

Post on 05-May-2023

0 views

Category:

Documents


0 download

TRANSCRIPT

Amazon Kinesis Video StreamsPanduan Developer

Amazon Kinesis Video Streams Panduan Developer

Amazon Kinesis Video Streams: Panduan DeveloperCopyright © Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

Merek dagang dan tampilan dagang Amazon tidak boleh digunakan sehubungan dengan produk atau layanan apa punyang bukan milik Amazon, dengan cara apa pun yang dapat menyebabkan kebingungan di antara para pelanggan,atau dengan cara apa pun yang menghina atau mendiskreditkan Amazon. Semua merek dagang lain yang tidakdimiliki oleh Amazon adalah milik dari pemiliknya masing-masing, yang mungkin berafiliasi atau tidak berafiliasidengan, terkait, atau disponsori oleh Amazon.

Amazon Kinesis Video Streams Panduan Developer

Table of ContentsApa itu Arus Amazon Kinesis Video Streams? ........................................................................................ 1

Apakah Anda Pengguna Kinesis Video Streams? ............................................................................ 2Persyaratan Sistem ............................................................................................................................. 3

Persyaratan Kamera ................................................................................................................... 3Sistem Operasi yang Diuji ............................................................................................................ 3Persyaratan Penyimpanan SDK .................................................................................................... 4

Cara Kerjanya .................................................................................................................................... 5Perpustakaan API dan Produser ................................................................................................... 6

API Arus Kinesis Video Streams ........................................................................................... 6Pustaka produsen ............................................................................................................... 7

Pemutaran video ........................................................................................................................ 7Pemutaran Video dengan HLS ............................................................................................. 8Pemutaran Video dengan MPEG-DASH ............................................................................... 11

Menggunakan Metadata Streaming .............................................................................................. 14Menambahkan Metadata ke Stream Video Kinesis ................................................................. 15Mengkonsumsi Metadata Tertanam dalam Aliran Video Kinesis ................................................ 16Batasan Metadata Streaming .............................................................................................. 17

Model Data .............................................................................................................................. 17Elemen Sundulan .............................................................................................................. 18Data Track ....................................................................................................................... 21Elemen Bingkai ................................................................................................................ 21Data Bingkai MKV ............................................................................................................. 22

Memulai ........................................................................................................................................... 23Langkah 1: Menyiapkan Akun ..................................................................................................... 23

Mendaftar AWS ................................................................................................................ 23Membuat Pengguna IAM Administrator ................................................................................. 24Buat Kunci Akun AWS ....................................................................................................... 24Langkah Selanjutnya ......................................................................................................... 24

Langkah 2: Buat Arus Video Kinesis ............................................................................................ 25Membuat Streaming Video Menggunakan Konsol .................................................................. 25Membuat Stream Video MenggunakanAWS CLI .................................................................... 25Langkah Selanjutnya ......................................................................................................... 25

Langkah 3: Mengirim Data ke Arus Video Kinesis .......................................................................... 25Langkah Selanjutnya ......................................................................................................... 26

Langkah 4: Mengonsumsi Data Media ......................................................................................... 26Melihat Data Media di Konsol ............................................................................................. 26Mengkonsumsi Data Media menggunakan HLS ..................................................................... 26Langkah Selanjutnya ......................................................................................................... 26

Apa Selanjutnya? ...................................................................................................................... 26Citra ................................................................................................................................................ 27

Memulai dengan GetImages ....................................................................................................... 27Memulai pengiriman Amazon S3 ................................................................................................. 27

UpdateImageGenerationConfiguration .................................................................................. 27DescribeImageGenerationConfiguration ................................................................................ 29Tag MKV produser ............................................................................................................ 29Menambahkan tag metadata di Producer SDK menggunakan PutEventMetaData ........................ 30Batas .............................................................................................................................. 30Metadata Objek ................................................................................................................ 31S3 objek jalan (gambar) ..................................................................................................... 31Rekomendasi URI Amazon S3 untuk melindungi dari pembatasan ............................................ 31

Notifikasi .......................................................................................................................................... 32UpdateNotificationConfiguration ................................................................................................... 32DescribeNotificationConfiguration ................................................................................................. 32Produser MKV Tags .................................................................................................................. 29

iii

Amazon Kinesis Video Streams Panduan Developer

Sintaks untuk Tag MKV Produser ........................................................................................ 30Batas Tag MKV ........................................................................................................................ 33.............................................................................................................................................. 33

...................................................................................................................................... 33Muatan Topik Amazon SNS ............................................................................................... 33Melihat Pesan Amazon SNS Anda ...................................................................................... 34

Keamanan ....................................................................................................................................... 35Perlindungan Data .................................................................................................................... 35

Apa Itu Enkripsi Sisi-Server untuk Arus Kinesis Video Streams? ............................................... 36Biaya, Wilayah, dan Pertimbangan Kinerja ............................................................................ 36Bagaimana Saya Memulai Enkripsi Sisi-Server? .................................................................... 37Membuat dan Menggunakan User-GeneratedAWS KMSKunci master ....................................... 37Izin untuk Menggunakan Buatan PenggunaAWS KMSKunci master .......................................... 37

Mengontrol Akses ke Sumber Daya Kinesis Video Streams Menggunakan IAM ................................... 39Sintaks Kebijakan ............................................................................................................. 39Tindakan untuk Arus Kinesis Video Streams ......................................................................... 40Nama Sumber Daya Amazon (ARN) untuk Kinesis Video Streams ............................................ 40Memberikan Akses Akun IAM Lainnya ke Aliran Video Kinesis ................................................. 40Contoh kebijakan .............................................................................................................. 41

Mengontrol Akses ke Sumber Daya Kinesis Video Streams MenggunakanAWS IoT ............................. 42IoT ThingName sebagai Nama Stream ................................................................................. 43IoT CertificateId sebagai Nama Stream ................................................................................ 48

Memantau ................................................................................................................................ 49Validasi Kepatuhan ................................................................................................................... 49Ketahanan ............................................................................................................................... 50Keamanan Infrastruktur .............................................................................................................. 50Praktik Terbaik Keamanan ......................................................................................................... 50

Terapkan akses hak istimewa yang paling rendah .................................................................. 50Gunakan IAM role ............................................................................................................. 51Gunakan CloudTrail untuk Memantau Panggilan API .............................................................. 51

Pustaka Produsen ............................................................................................................................. 52Klien Produsen Kinesis Video Streams ......................................................................................... 52Pustaka Produsen Kinesis Video Streams .................................................................................... 53Topik Terkait ............................................................................................................................ 53Perpustakaan Produser Java ...................................................................................................... 53

Prosedur: Menggunakan Java Producer SDK ........................................................................ 54Langkah 1: Unduh dan Konfigurasikan Kode ......................................................................... 55Langkah 2: Menulis dan Periksa Kode ................................................................................. 55Langkah 3: Jalankan dan Verifikasi Kode ............................................................................. 57

Pustaka Produser Android .......................................................................................................... 57Prosedur: Menggunakan Android Producer SDK .................................................................... 57Langkah 1: Unduh dan Konfigurasikan Kode ......................................................................... 59Langkah 2: Periksa Kode ................................................................................................... 60Langkah 3: Jalankan dan Verifikasi Kode ............................................................................. 61

Perpustakaan produsen C ++ ..................................................................................................... 62Objek Model ..................................................................................................................... 62Menempatkan Media ke dalam Streaming ............................................................................ 62Antarmuka Callback .......................................................................................................... 62Prosedur: Menggunakan C++ Producer SDK ......................................................................... 63Langkah 1: Unduh dan Konfigurasikan Kode ......................................................................... 65Langkah 2: Menulis dan Periksa Kode ................................................................................. 65Langkah 3: Jalankan dan Verifikasi Kode ............................................................................. 70Menggunakan Producer SDK C ++ sebagai Plugin GStreamer ................................................. 70Menggunakan C ++ Producer SDK sebagai Plugin GStreamer di Docker Container ..................... 70Menggunakan Pencatatan .................................................................................................. 70

Pustaka Produser ..................................................................................................................... 71Objek Model ..................................................................................................................... 71

iv

Amazon Kinesis Video Streams Panduan Developer

Menempatkan Media Ke Aliran ........................................................................................... 72Prosedur: Menggunakan C Producer SDK ............................................................................ 72Langkah 1: Unduh Kode .................................................................................................... 74Langkah 2: Menulis dan Periksa Kode ................................................................................. 74Langkah 3: Jalankan dan Verifikasi Kode ............................................................................. 76

Referensi ................................................................................................................................. 78Batas SDK Produsen ........................................................................................................ 78Referensi Kode Kesalahan ................................................................................................. 80Bendera Adaptasi NAL ..................................................................................................... 104Struktur produsen ............................................................................................................ 105Struktur Stream ............................................................................................................... 107Callback ......................................................................................................................... 118

Perpustakaan Stream Parser ............................................................................................................ 124Prosedur: Menggunakan Perpustakaan Parser Stream Video Kinesis .............................................. 124Prasyarat ............................................................................................................................... 124Langkah 1: Unduh dan Konfigurasikan Kode ............................................................................... 125

Langkah Selanjutnya ....................................................................................................... 125Langkah 2: Menulis dan Periksa Kode ....................................................................................... 125

StreamingMkvpembaca .................................................................................................... 125FragmentMetadataPengunjung .......................................................................................... 126OutputSegmentPenggabungan .......................................................................................... 127KinesisVideoContoh ......................................................................................................... 128Langkah Selanjutnya ....................................................................................................... 130

Langkah 3: Jalankan dan Verifikasi Kode .................................................................................... 130Contoh ........................................................................................................................................... 131

Contoh: Mengirim Data ke Kinesis Video Streams ........................................................................ 131Contoh: Mengambil Data dari Kinesis Video Streams .................................................................... 131Contoh: Memutar Kembali Data Video ........................................................................................ 131Prasyarat ............................................................................................................................... 131GStreamer ............................................................................................................................. 132

Unduh, Bangun, dan Konfigurasikan Elemen GStreamer ....................................................... 132Jalankan Elemen GStreamer ............................................................................................ 133Perintah Peluncuran ........................................................................................................ 133Jalankan Elemen GStreamer dalam Container Docker .......................................................... 135Referensi Parameter ........................................................................................................ 137

API PutMedia ......................................................................................................................... 140Langkah 1: Unduh dan Konfigurasikan Kode ....................................................................... 140Langkah 2: Menulis dan Periksa Kode ............................................................................... 141Langkah 3: Jalankan dan Verifikasi Kode ............................................................................ 142

RTSP dan Docker ................................................................................................................... 143Prasyarat ....................................................................................................................... 143Membuat Gambar Docker ................................................................................................ 143Jalankan RTSP Contoh Aplikasi ........................................................................................ 144

Renderer ................................................................................................................................ 144Prasyarat ....................................................................................................................... 144Menjalankan Contoh Renderer .......................................................................................... 145Cara Kerjanya ................................................................................................................ 145

SageMaker ............................................................................................................................. 146Prasyarat ....................................................................................................................... 147Membuat Aplikasi ............................................................................................................ 148Memantau Aplikasi .......................................................................................................... 149Memperluas Aplikasi ........................................................................................................ 150Membersihkan Aplikasi ..................................................................................................... 151

Memantau ...................................................................................................................................... 152Pemantauan dengan CloudWatch .............................................................................................. 152

CloudWatch Panduan Metrik ............................................................................................. 160Mencatat Panggilan API dengan CloudTrail ................................................................................. 163

v

Amazon Kinesis Video Streams Panduan Developer

Arus Kinesis Video Streams CloudTrail ............................................................................... 164Contoh: Entri Berkas Berkas Amazon Kinesis Video Streams ................................................. 165

Batas ............................................................................................................................................. 168Batas API kontrol-pesawat ........................................................................................................ 168Batas API media dan arsip media ............................................................................................. 169Fragmen-metadata dan kuota fragmen-media .............................................................................. 171

Pemecahan Masalah ....................................................................................................................... 174Memecahkan Masalah Umum ................................................................................................... 174

Latency terlalu tinggi ........................................................................................................ 174Memecahkan Masalah API ....................................................................................................... 174

Kesalahan: “Pilihan tidak dikenal” ...................................................................................... 175Kesalahan: “Tidak dapat menentukan nama layanan/operasi yang akan diotorisasi” ................... 175Kesalahan: “Gagal menempatkan bingkai di sungai” ............................................................. 175Kesalahan: “Layanan ditutup koneksi sebelum finalAckEventditerima” ...................................... 175Kesalahan: “STATUS_STORE_OUT_OF_MEMORY” ............................................................. 176

Memecahkan Masalah HLS ...................................................................................................... 176Mengambil URL sesi streaming HLS berhasil, tetapi pemutaran gagal dalam pemutar video ......... 176Latensi terlalu tinggi antara produser dan pemain ................................................................. 177

Memecahkan Masalah Java ...................................................................................................... 177Mengaktifkan log Java ..................................................................................................... 178

Pemecahan Masalah Pustaka Produser ...................................................................................... 178Tidak dapat mengkompilasi Producer SDK .......................................................................... 179Aliran video tidak muncul di konsol .................................................................................... 179Kesalahan: “Token keamanan yang disertakan dalam permintaan tidak valid” saat streamingdata menggunakan aplikasi demo GStreamer ...................................................................... 179Kesalahan: “Gagal mengirimkan frame ke klien Video Kinesis” ............................................... 180Aplikasi GStreamer berhenti dengan pesan “streaming berhenti, alasan tidak dinegosiasikan” diOS X ............................................................................................................................. 180Kesalahan: “Gagal mengalokasikan tumpukan” saat membuat Klien Video Kinesis di demoGStreamer di Raspberry Pi ............................................................................................... 180Kesalahan: “Instruksi Ilegal” saat menjalankan demo GStreamer di Raspberry Pi ....................... 180Kamera gagal dimuat pada Raspberry Pi ............................................................................ 181Kamera tidak dapat ditemukan di macOS High Sierra ........................................................... 181berkas jni.h tidak ditemukan saat mengkompilasi di macOS High Sierra ................................... 181Kesalahan Curl saat menjalankan aplikasi demo GStreamer .................................................. 181Timestamp/Range pernyataan saat runtime pada Raspberry Pi .............................................. 182Pernyataan tentang gst_value_set_fraction_range_full pada Raspberry Pi ................................. 182Kesalahan STATUS_MKV_INVALID_ANNEXB_NALU_IN_FRAME_DATA (0x3200000d) diAndroid .......................................................................................................................... 182Durasi Fragmen Maksimum Tercapai Kesalahan .................................................................. 182Galat “Nama hal tidak valid berlalu” saat menggunakan otorisasi IoT ....................................... 183

Pemecahan masalah Stream Parser Library Masalah ................................................................... 183Tidak dapat mengakses satu frame dari stream ................................................................... 183Kesalahan decoding ........................................................................................................ 183

Riwayat Dokumen ........................................................................................................................... 184Referensi API ................................................................................................................................. 187

Tindakan ................................................................................................................................ 187Amazon Kinesis Video Streams ......................................................................................... 188Arus Amazon Kinesis Video Streams ................................................................................. 256Arus Amazon Kinesis Video Streams ................................................................................. 268Saluran Sinyal Video Amazon Kinesis ................................................................................ 300

Tipe Data ............................................................................................................................... 306Amazon Kinesis Video Streams ......................................................................................... 307Arus Amazon Kinesis Video Streams ................................................................................. 322Arus Amazon Kinesis Video Streams ................................................................................. 324Saluran Sinyal Video Amazon Kinesis ................................................................................ 337

Kesalahan Umum .................................................................................................................... 339

vi

Amazon Kinesis Video Streams Panduan Developer

Parameter Umum .................................................................................................................... 340................................................................................................................................................. cccxliii

vii

Amazon Kinesis Video Streams Panduan Developer

Apa itu Arus Amazon Kinesis VideoStreams?

Amazon Kinesis Video Streams adalah layanan AWS yang dikelola sepenuhnya yang dapat Anda gunakanuntuk melakukan streaming video langsung dari perangkat ke AWS Cloud, atau membuat aplikasi untukpemrosesan video real-time atau analisis video berorientasi batch.

Kinesis Video Streams bukan hanya penyimpanan untuk data video. Anda dapat menggunakannya untukmenonton streaming video secara real time saat diterima di cloud. Anda dapat memantau live streamAnda di AWS Management Console, atau mengembangkan aplikasi pemantauan Anda sendiri yangmenggunakan perpustakaan Kinesis Video Streams API untuk menampilkan video langsung.

Anda dapat menggunakan Kinesis Video Streams untuk menangkap sejumlah besar data video langsungdari jutaan sumber, termasuk smartphone, kamera keamanan, webcam, kamera yang disematkan dimobil, drone, dan sumber lainnya. Anda juga dapat mengirim data nonvideo serial waktu seperti dataaudio, citra termal, data kedalaman, data RADAR, dan banyak lagi. Sebagai streaming video langsungdari sumber-sumber ini ke dalam aliran video Kinesis, Anda dapat membangun aplikasi yang dapatmengakses data,frame-by-frame, secara real time untuk pemrosesan latensi rendah. Kinesis VideoStreams adalah sumber-agnostik; Anda dapat melakukan streaming video dari webcam komputermenggunakanGStreamer (p. 132)perpustakaan, atau dari kamera di jaringan Anda menggunakan real-time streaming protocol (RTSP)”.

Anda juga dapat mengonfigurasi aliran video Kinesis agar menyimpan data media secara tahan lamaselama periode retensi yang ditentukan. Kinesis Video Streams secara otomatis menyimpan data inidan mengenkripsinya saat istirahat. Selain itu, indeks waktu Kinesis Video Streams menyimpan databerdasarkan stempel waktu produser dan perangko waktu konsumsi. Anda dapat membuat aplikasi yangsecara berkala memproses data video, atau Anda dapat membuat aplikasi yang memerlukan akses ad hocke data historis untuk kasus penggunaan yang berbeda.

Aplikasi kustom Anda, real-time atau berorientasi batch, dapat berjalan di instans Amazon EC2. Aplikasi inimungkin memproses data menggunakan algoritme deep-learning open source, atau menggunakan aplikasipihak ketiga yang terintegrasi dengan Kinesis Video Streams.

Manfaat Kinesis Video Streams mencakup hal berikut:

• Connect dan streaming dari jutaan perangkat— Kinesis Video Streams memungkinkan Anda untukmenghubungkan dan streaming video, audio, dan data lainnya dari jutaan perangkat mulai darismartphone konsumen, drone, kamera dasbor, dan banyak lagi. Anda dapat menggunakan pustakaproduser Kinesis Video Streams untuk mengonfigurasi perangkat Anda dan streaming secara andalsecara real time, atau sebagaiafter-the-factunggahan media.

• Tahan lama menyimpan, mengenkripsi, dan data indeks— Anda dapat mengonfigurasi aliran videoKinesis untuk menyimpan data media secara tahan lama untuk periode retensi khusus. Kinesis VideoStreams juga menghasilkan indeks atas data yang disimpan berdasarkan stempel waktu yang dihasilkanoleh produsen atau sisi layanan. Aplikasi Anda dapat dengan mudah mengambil data yang ditentukandalam aliran menggunakan indeks waktu.

• Fokus pada pengelolaan aplikasi alih-alih infrastruktur— Kinesis Video Streams tidak memiliki server,sehingga tidak ada infrastruktur untuk disiapkan atau dikelola. Anda tidak perlu khawatir tentangpenyebaran, konfigurasi, atau penskalaan elastis infrastruktur yang mendasari saat aliran data Andadan jumlah aplikasi yang memakan tumbuh dan menyusut. Kinesis Video Streams secara otomatismelakukan semua administrasi dan pemeliharaan yang diperlukan untuk mengelola aliran, sehinggaAnda dapat fokus pada aplikasi, bukan infrastruktur.

1

Amazon Kinesis Video Streams Panduan DeveloperApakah Anda Pengguna Kinesis Video Streams?

• Membangun aplikasi real-time dan batch pada aliran data— Anda dapat menggunakan Kinesis VideoStreams untuk membuat aplikasi real-time kustom yang beroperasi pada aliran data langsung, danmembuat aplikasi batch atau ad hoc yang beroperasi pada data yang bertahan lama tanpa persyaratanlatensi yang ketat. Anda dapat membangun, menyebarkan, dan mengelola aplikasi khusus: open source(Apache MXNet, OpenCV), homegrown, atau solusi pihak ketiga melalui AWS Marketplace untukmemproses dan menganalisis aliran Anda. Arus Video KinesisGetAPI memungkinkan Anda membangunbeberapa aplikasi bersamaan yang memproses data secara real-time atau berorientasi batch.

• Streaming data dengan lebih aman— Kinesis Video Streams mengenkripsi semua data saat mengalirmelalui layanan dan kapan data tetap ada. Kinesis Video Streams memberlakukan enkripsi berbasisTransport Layer Security (TLS) pada streaming data dari perangkat, dan mengenkripsi semua data saatistirahat menggunakanAWS Key Management Service(AWS KMS). Selain itu, Anda dapat mengelolaakses ke data Anda menggunakanAWS Identity and Access Management(IAM).

• Bayar saat Anda pergi— Untuk informasi lebih lanjut, lihatHarga AWS.

Apakah Anda Pengguna Kinesis Video Streams?Jika pengguna Kinesis Video Streams pertama kali, kami menyarankan agar Anda membaca bagian-bagian berikut secara berurutan:

1. Arus Amazon Kinesis Video Streams: Cara Kerjanya (p. 5)— Untuk mempelajari konsep KinesisVideo Streams.

2. Memulai dengan Kinesis Video Streams (p. 23)— Untuk mengatur akun Anda dan menguji KinesisVideo Streams.

3. Pustaka Produsen Kinesis Video Streams (p. 52)— Untuk mempelajari tentang membuat aplikasiproduser Kinesis Video Streams.

4. Perpustakaan Parser Streaming Video Kinesis (p. 124)— Untuk mempelajari tentang memprosesframe data yang masuk dalam aplikasi konsumen Kinesis Video Streams.

5. Contoh Arus Amazon Kinesis Video Streams (p. 131)— Untuk melihat lebih banyak contoh dari apayang dapat Anda lakukan dengan Kinesis Video Streams.

2

Amazon Kinesis Video Streams Panduan DeveloperPersyaratan Kamera

Persyaratan Sistem Kinesis VideoStreams

Bagian berikut berisi persyaratan perangkat keras, perangkat lunak, dan penyimpanan untuk AmazonKinesis Video Streams.

Topik• Persyaratan Kamera (p. 3)• Sistem Operasi yang Diuji (p. 3)• Persyaratan Penyimpanan SDK (p. 4)

Persyaratan KameraKamera yang digunakan untuk menjalankan Kinesis Video Streams Producer SDK dan sampel memilikipersyaratan memori berikut:

• Tampilan konten SDK membutuhkan memori 16 MB.• Konfigurasi default aplikasi sampel adalah 512 MB. Nilai ini sesuai untuk produsen yang memiliki

konektivitas jaringan yang baik dan tidak ada persyaratan untuk buffering tambahan. Jika konektivitasjaringan miskin dan lebih buffering diperlukan, Anda dapat menghitung kebutuhan memori per detikbuffering dengan mengalikan frame rate per detik dengan ukuran memori frame. Untuk informasiselengkapnya tentang mengalokasikan memori, lihatStorageInfo (p. 106).

Sebaiknya gunakan kamera USB atau RTSP (Real Time Streaming Protocol) yang menyandikan datamenggunakan H.264 karena ini menghilangkan beban kerja pengkodean dari CPU.

Saat ini, aplikasi demo tidak mendukung User Datagram Protocol (UDP) untuk RTSP streaming.Kemampuan ini akan ditambahkan di masa depan.

Producer SDK mendukung jenis kamera berikut:

• Kamera web.• Kamera USB.• Kamera dengan pengkodean H.264 (disukai).• Kamera tanpa pengkodean H.264.• Modul kamera Raspberry Pi. Ini lebih disukai untuk perangkat Raspberry Pi karena terhubung ke GPU

untuk transfer data video, sehingga tidak ada overhead untuk pemrosesan CPU.• RTSP (jaringan) kamera. Kamera ini lebih disukai karena aliran video sudah dikodekan dengan H.264.

Sistem Operasi yang DiujiKami telah menguji kamera web dan kamera RTSP dengan perangkat dan sistem operasi berikut:

• Mac• Sierra Tinggi

3

Amazon Kinesis Video Streams Panduan DeveloperPersyaratan Penyimpanan SDK

• MacBookLaptop Pro• Sierra (10.12)• El Capitan (10.11)

• Laptop HP yang menjalankan Ubuntu 16.04• Ubuntu 17.10 (kontainer Docker)• Raspberry Pi 3

Persyaratan Penyimpanan SDKMenginstalPustaka Produsen Kinesis Video Streams (p. 52)memiliki persyaratan penyimpananminimum 170 MB dan persyaratan penyimpanan yang direkomendasikan sebesar 512 MB.

4

Amazon Kinesis Video Streams Panduan Developer

Arus Amazon Kinesis Video Streams:Cara Kerjanya

Topik• Kinesis Video Streams API dan Producer Libraries Support (p. 6)• Pemutaran Kinesis Video Streams (p. 7)• Menggunakan Metadata Streaming dengan Kinesis Video Streams (p. 14)• Model Data Kinesis Video Streams (p. 17)

Amazon Kinesis Video Streams adalah layanan AWS yang dikelola sepenuhnya yang memungkinkan Andamelakukan streaming video langsung dari perangkat ke AWS Cloud dan menyimpannya dengan tahanlama. Anda kemudian dapat membangun aplikasi Anda sendiri untuk pemrosesan video real-time ataumelakukan analisis video berorientasi batch.

Diagram berikut memberikan gambaran umum tentang cara kerja Kinesis Video Streams.

Diagram menunjukkan interaksi antara komponen-komponen berikut:

• produsen— Setiap sumber yang menempatkan data ke dalam aliran video Kinesis. Produser dapatberupa perangkat pembuat video, seperti kamera keamanan, kamera yang dikenakan di tubuh, kamerasmartphone, atau kamera dasbor. Produser juga dapat mengirim data non-video, seperti umpan audio,gambar, atau data RADAR.

Produser tunggal dapat menghasilkan satu atau lebih aliran video. Misalnya, kamera video dapatmendorong data video ke satu aliran video Kinesis dan data audio ke yang lain.• Pustaka Produser Kinesis Video Streams— Satu seteasy-to-useperangkat lunak dan perpustakaan

yang dapat Anda instal dan konfigurasikan pada perangkat Anda. Pustaka ini memudahkan untukterhubung dengan aman dan streaming video dengan cara yang berbeda, termasuk secara real time,setelah buffering selama beberapa detik, atau sebagaiafter-the-factunggahan media.

• Arus video Kinesis— Sumber daya yang memungkinkan Anda untuk mengangkut data video langsung,secara opsional menyimpannya, dan membuat data tersedia untuk dikonsumsi baik secara real timemaupun secara batch atau ad hoc. Dalam konfigurasi khas, aliran video Kinesis hanya memiliki satuproduser yang menerbitkan data ke dalamnya.

Aliran ini dapat membawa audio, video, dan aliran data yang dikodekan waktu serupa, seperti umpanpenginderaan kedalaman, umpan RADAR, dan banyak lagi. Anda membuat aliran video KinesismenggunakanAWS Management Consoleatau secara terprogram menggunakan AWS SDKs.

Beberapa aplikasi independen dapat mengkonsumsi aliran video Kinesis secara paralel.• Konsumen— Mendapat data, seperti fragmen dan frame, dari aliran video Kinesis untuk melihat,

memproses, atau menganalisanya. Umumnya konsumen ini disebut aplikasi Kinesis Video Streams.Anda dapat menulis aplikasi yang mengkonsumsi dan memproses data dalam aliran video Kinesissecara real time, atau setelah data disimpan secara tahan lama dan diindeks waktu ketika pemrosesanlatensi rendah tidak diperlukan. Anda dapat membuat aplikasi konsumen tersebut untuk dijalankan diinstans Amazon EC2.• Perpustakaan Parser Streaming Video Kinesis (p. 124)— Memungkinkan aplikasi Kinesis Video

Streams untuk mendapatkan media dari aliran video Kinesis dengan cara latensi rendah. Selain itu,ia mem-parsing batas-batas bingkai di media sehingga aplikasi dapat fokus pada pengolahan danmenganalisis frame itu sendiri.

5

Amazon Kinesis Video Streams Panduan DeveloperPerpustakaan API dan Produser

Kinesis Video Streams API dan Producer LibrariesSupport

Kinesis Video Streams menyediakan API bagi Anda untuk membuat dan mengelola stream dan membacaatau menulis data media ke dan dari stream. Konsol Kinesis Video Streams, selain fungsionalitasadministrasi, juga mendukung live danvideo-on-demandpemutaran. Kinesis Video Streams jugamenyediakan serangkaian pustaka produser yang dapat Anda gunakan dalam kode aplikasi untukmengekstrak data dari sumber media Anda dan mengunggah ke aliran video Kinesis Anda.

Topik• API Arus Kinesis Video Streams (p. 6)• Pustaka produsen (p. 7)

API Arus Kinesis Video StreamsKinesis Video Streams menyediakan API untuk membuat dan mengelola aliran video Kinesis. Ini jugamenyediakan API untuk membaca dan menulis data media ke aliran, sebagai berikut:

• API produsen— Kinesis Video Streams menyediakanPutMediaAPI untuk menulis data media kealiran video Kinesis. DalamPutMediapermintaan, produser mengirimkan aliran fragmen media.SEBUAHpecahanadalah urutan frame mandiri. Frame milik fragmen seharusnya tidak memilikiketergantungan pada setiap frame dari fragmen lainnya. Untuk informasi selengkapnya, lihatPutMedia (p. 262).

Saat fragmen tiba, Kinesis Video Streams memberikan nomor fragmen unik, dalam meningkatkanketertiban. Ini juga menyimpan stempel waktu sisi produsen dan sisi server untuk setiap fragmen,sebagai metadata khusus Kinesis Video Streams-spesifik.

• API Konsumen—API berikut memungkinkan konsumen untuk mendapatkan data dari stream:• GetMedia- Saat menggunakan API ini, konsumen harus mengidentifikasi fragmen awal. API

kemudian mengembalikan fragmen dalam urutan penambahannya ke aliran (dalam meningkatkanurutan dengan nomor fragmen). Data media dalam fragmen dikemas ke dalam format terstruktursepertiMatroska (MKV). Untuk informasi selengkapnya, lihat GetMedia (p. 258).

Note

GetMediatahu di mana fragmennya (diarsipkan di penyimpanan data atau tersedia secarareal time). Misalnya, jikaGetMediamenentukan bahwa fragmen awal diarsipkan, mulaimengembalikan fragmen dari penyimpanan data. Ketika perlu mengembalikan fragmenbaru yang belum diarsipkan,GetMediaberalih ke fragmen membaca dari buffer aliran dalammemori.

Ini adalah contoh konsumen terus menerus, yang memproses fragmen dalam urutan yang merekatertelan oleh sungai.

GetMediamemungkinkan aplikasi pemrosesan video gagal atau tertinggal, dan kemudian mengejarketinggalan tanpa upaya tambahan. MenggunakanGetMedia, aplikasi dapat memproses data yangdiarsipkan di penyimpanan data, dan sebagai aplikasi menangkap,GetMediaterus memberi makandata media secara real time saat tiba.

• GetMediaFromFragmentListdanListFragments) - Aplikasi pemrosesanBatch dianggap konsumen offline. Konsumen offline mungkin memilih untuksecara eksplisit mengambil fragmen media tertentu atau rentang video denganmenggabungkanListFragmentsdanGetMediaFromFragmentListAPI.ListFragmentsdanGetMediaFromFragmentListmemungkinkanaplikasi untuk mengidentifikasi segmen video untuk rentang waktu tertentu atau rentang fragmen, dan

6

Amazon Kinesis Video Streams Panduan DeveloperPustaka produsen

kemudian mengambil fragmen tersebut baik secara berurutan atau paralel untuk diproses. Pendekatanini cocok untukMapReducesuite aplikasi, yang harus cepat memproses sejumlah besar data secaraparalel.

Misalnya, anggaplah bahwa konsumen ingin memproses fragmen video bernilai satu hari. Konsumenakan melakukan hal berikut:1. Mendapatkan daftar fragmen dengan memanggilListFragmentsAPI dan menentukan rentang

waktu untuk memilih koleksi fragmen yang diinginkan.

API mengembalikan metadata dari semua fragmen dalam rentang waktu yang ditentukan. Metadatamenyediakan informasi seperti nomor fragmen, produsen-side/server-side time stamps, dansebagainya.

2. Ambil daftar metadata fragmen dan mengambil fragmen, dalam urutan apapun. Misalnya, untukmemproses semua fragmen untuk hari itu, konsumen mungkin memilih untuk membagi daftarmenjadi sub-daftar dan memiliki pekerja (misalnya, beberapa instans Amazon EC2) mengambilfragmen secara paralel menggunakanGetMediaFromFragmentList, dan memprosesnya secaraparalel.

Diagram berikut menunjukkan aliran data untuk fragmen dan potongan selama panggilan API ini.

Ketika produser mengirimkanPutMediapermintaan, ia mengirimkan metadata media dalam payload,dan kemudian mengirimkan urutan fragmen data media. Setelah menerima data, Kinesis Video Streamsmenyimpan data media yang masuk sebagai potongan Kinesis Video Streams. Setiap potongan terdiri darihal-hal berikut:

• Salinan metadata media• Fragmen• Metadata spesifik aliran video Kinesis; misalnya, nomor fragmen dan stempel waktu sisi server dan sisi

produsen

Ketika konsumen meminta metadata media, Kinesis Video Streams mengembalikan aliran potongan,dimulai dengan nomor fragmen yang Anda tentukan dalam permintaan.

Jika Anda mengaktifkan persistensi data untuk streaming, setelah menerima fragmen di stream, KinesisVideo Streams juga menyimpan salinan fragmen ke penyimpanan data.

Pustaka produsenSetelah membuat aliran video Kinesis, Anda dapat mulai mengirim data ke streaming. Dalam kode aplikasi,Anda dapat menggunakan pustaka ini untuk mengekstrak data dari sumber media Anda dan mengunggahke aliran video Kinesis Anda. Untuk informasi selengkapnya tentang pustaka produsen yang tersedia,lihatPustaka Produsen Kinesis Video Streams (p. 52).

Pemutaran Kinesis Video StreamsAnda dapat melihat aliran video Kinesis menggunakan metode berikut:

• GetMedia: Anda dapat menggunakanGetMediaAPI untuk membangun aplikasi Anda sendiri untukmemproses aliran video Kinesis.GetMediaadalah API real-time dengan latensi rendah. Jika Anda inginmembuat pemain yang menggunakanGetMedia, Anda harus membangunnya sendiri. Untuk informasitentang cara mengembangkan aplikasi yang menampilkan aliran video Kinesis menggunakanGetMedia,lihatPerpustakaan Stream Parser (p. 124).

7

Amazon Kinesis Video Streams Panduan DeveloperPemutaran Video dengan HLS

• HLS: Streaming Langsung HTTPadalah protokol komunikasi streaming media berbasis HTTP standarindustri. Anda dapat menggunakan HLS untuk melihat streaming video Amazon Kinesis, baik untukpemutaran langsung atau untuk melihat video yang diarsipkan.

Anda dapat menggunakan HLS untuk pemutaran langsung. Latensi biasanya antara 3 dan 5 detik,tetapi dapat antara 1 dan 10 detik, tergantung pada kasus penggunaan, pemain, dan kondisi jaringan.Anda dapat menggunakan pemain pihak ketiga (sepertiVideo.jsatauGoogle Shaka Pemain) untukmenampilkan aliran video dengan menyediakan URL sesi streaming HLS, baik secara pemrogramanmaupun manual. Anda juga dapat memutar video dengan mengetikkan URL sesi streaming HLSdiLokasibar dariApple SafariatauMicrosoft Edgeperamban.

• MPEG-DASBOR: Streaming Adaptif Dinamis melalui HTTP (DASH), juga dikenal sebagai MPEG-DASH,adalah protokol streaming bitrate adaptif yang memungkinkan streaming konten media berkualitas tinggimelalui Internet yang dikirim dari server web HTTP konvensional.

Anda dapat menggunakan MPEG-DASH untuk pemutaran langsung. Latensi biasanya antara 3 dan5 detik, tetapi dapat antara 1 dan 10 detik, tergantung pada kasus penggunaan, pemain, dan kondisijaringan. Anda dapat menggunakan pemain pihak ketiga (sepertidash.jsatauGoogle Shaka Pemainuntukmenampilkan aliran video dengan menyediakan URL sesi streaming MPEG-DASH, baik secarapemrograman maupun manual.

• GetClipAPI: Anda dapat menggunakanGetClipAPI untuk mengunduh klip (dalam file MP4) yang berisimedia sesuai permintaan yang diarsipkan dari aliran video yang ditentukan selama rentang waktu yangditentukan. Untuk informasi selengkapnya, lihatGetClipReferensi API.

Topik• Pemutaran Video dengan HLS (p. 8)• Pemutaran Video dengan MPEG-DASH (p. 11)

Pemutaran Video dengan HLSUntuk melihat aliran video Kinesis menggunakan HLS, Anda terlebih dahulu membuat sesi streamingmenggunakanGetlStreamingSessionURL. Tindakan ini mengembalikan URL (berisi token sesi) untukmengakses sesi HLS. Anda kemudian dapat menggunakan URL di pemutar media atau aplikasi mandiriuntuk menampilkan aliran.

Streaming video Amazon Kinesis memiliki persyaratan berikut untuk menyediakan video melalui HLS:

• Untuk streaming video, media harus berisi video yang dikodekan H.264 atau H.265 dan, secara opsional,audio yang dikodekan AAC. Secara khusus, ID codec track 1 seharusnyaV_MPEG/ISO/AVC(untukH.264) atauV_MPEG/ISO/HEVC(untuk H.265). Secara opsional, ID codec track 2 seharusnyaA_AAC.Untuk streaming audio saja, ID codec trek 1 seharusnyaA_AAC.

• Retensi data harus lebih besar dari 0.• Trek video dari setiap fragmen harus berisi data pribadi codec dalam Advanced Video Coding (AVC)

untuk format H.264 atau HEVC untuk format H.265 (Spesifikasi MPEG-4 ISO/IEC 14496-15). Untukinformasi tentang mengadaptasi data stream ke format tertentu, lihatBendera Adaptasi NAL (p. 104).

• Trek audio (jika ada) dari setiap fragmen harus berisi data pribadi codec dalam format AAC (SpesifikasiAAC ISO/IEC 13818-7).

Contoh: Menggunakan HLS dalam HTML dan JavaScriptContoh berikut menunjukkan cara mengambil sesi streaming HLS untuk aliran video Kinesis danmemutarnya kembali di halaman web. Contoh menunjukkan cara memutar video di pemain berikut:

• Video.js

8

Amazon Kinesis Video Streams Panduan DeveloperPemutaran Video dengan HLS

• Google Shaka pemain• hls.js

Topik• Mengatur Klien Kinesis Video Streams untuk Pemutaran HLS (p. 9)• Ambil Titik Akhir Konten yang Diarsipkan Kinesis Video Streams untuk Pemutaran HLS (p. 9)• Ambil URL Sesi Streaming HLS (p. 9)• Tampilkan Video Streaming dengan Pemutaran HLS (p. 10)• Mengatasi Masalah HLS (p. 11)• Contoh Selesai untuk Pemutaran HLS (p. 11)

Mengatur Klien Kinesis Video Streams untuk Pemutaran HLSUntuk mengakses video streaming dengan HLS, pertama-tama buat dan konfigurasikan klien Kinesis VideoStreams (untuk mengambil titik akhir layanan) dan klien media yang diarsipkan (untuk mengambil sesistreaming HLS). Aplikasi mengambil nilai yang diperlukan dari kotak input pada halaman HTML.

<script src="https://cdnjs.cloudflare.com/ajax/libs/aws-sdk/2.278.1/aws-sdk.min.js"></script>...

var protocol = $('#protocol').val();var streamName = $('#streamName').val();

// Step 1: Configure SDK Clientsvar options = { accessKeyId: $('#accessKeyId').val(), secretAccessKey: $('#secretAccessKey').val(), sessionToken: $('#sessionToken').val() || undefined, region: $('#region').val(), endpoint: $('#endpoint').val() || undefined}var kinesisVideo = new AWS.KinesisVideo(options);var kinesisVideoArchivedContent = new AWS.KinesisVideoArchivedMedia(options);

Ambil Titik Akhir Konten yang Diarsipkan Kinesis Video Streams untuk PemutaranHLSSetelah klien dimulai, ambil titik akhir konten yang diarsipkan Kinesis Video Streams untuk mengambil URLsesi streaming HLS:

// Step 2: Get a data endpoint for the streamconsole.log('Fetching data endpoint');kinesisVideo.getDataEndpoint({ StreamName: streamName, APIName: "GET_HLS_STREAMING_SESSION_URL" }, function(err, response) { if (err) { return console.error(err); } console.log('Data endpoint: ' + response.DataEndpoint); kinesisVideoArchivedContent.endpoint = new AWS.Endpoint(response.DataEndpoint);

Ambil URL Sesi Streaming HLSBila Anda memiliki endpoint konten yang diarsipkan, panggilGetlStreamingSessionURLAPI untukmengambil URL sesi streaming HLS:

9

Amazon Kinesis Video Streams Panduan DeveloperPemutaran Video dengan HLS

// Step 3: Get a Streaming Session URLvar consoleInfo = 'Fetching ' + protocol + ' Streaming Session URL';console.log(consoleInfo); ...

else { kinesisVideoArchivedContent.getHLSStreamingSessionURL({ StreamName: streamName, PlaybackMode: $('#playbackMode').val(), HLSFragmentSelector: { FragmentSelectorType: $('#fragmentSelectorType').val(), TimestampRange: $('#playbackMode').val() === "LIVE" ? undefined : { StartTimestamp: new Date($('#startTimestamp').val()), EndTimestamp: new Date($('#endTimestamp').val()) } }, ContainerFormat: $('#containerFormat').val(), DiscontinuityMode: $('#discontinuityMode').val(), DisplayFragmentTimestamp: $('#displayFragmentTimestamp').val(), MaxMediaPlaylistFragmentResults: parseInt($('#maxResults').val()), Expires: parseInt($('#expires').val()) }, function(err, response) { if (err) { return console.error(err); } console.log('HLS Streaming Session URL: ' + response.HLSStreamingSessionURL);

Tampilkan Video Streaming dengan Pemutaran HLS

Saat Anda memiliki URL sesi streaming HLS, berikan ke pemutar video. Metode untuk menyediakan URLke pemutar video khusus untuk pemutar yang digunakan.

Contoh kode berikut ini menunjukkan cara memberikan URL sesi streamingVideo.jspemain:

// VideoJS elements<video id="videojs" class="player video-js vjs-default-skin" controls autoplay></video><link rel="stylesheet" href="https://vjs.zencdn.net/6.6.3/video-js.css"><script src="https://vjs.zencdn.net/6.6.3/video.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/videojs-contrib-hls/5.14.1/videojs-contrib-hls.js"></script>...

else if (playerName === 'VideoJS') {var playerElement = $('#videojs');playerElement.show();var player = videojs('videojs');console.log('Created VideoJS Player');player.src({ src: response.HLSStreamingSessionURL, type: 'application/x-mpegURL'});console.log('Set player source');player.play();console.log('Starting playback');

Contoh kode berikut ini menunjukkan cara memberikan URL sesi streamingGoogle Shakapemain:

// Shaka Player elements

10

Amazon Kinesis Video Streams Panduan DeveloperPemutaran Video dengan MPEG-DASH

<video id="shaka" class="player" controls autoplay></video><script src="https://cdnjs.cloudflare.com/ajax/libs/shaka-player/2.4.1/shaka-player.compiled.js"></script>

...

else if (playerName === 'Shaka Player') {var playerElement = $('#shaka');playerElement.show();var player = new shaka.Player(playerElement[0]);console.log('Created Shaka Player');player.load(response.HLSStreamingSessionURL).then(function() { console.log('Starting playback');});console.log('Set player source');

Contoh kode berikut ini menunjukkan cara memberikan URL sesi streaminghls.jspemain:

// HLS.js elements<video id="hlsjs" class="player" controls autoplay></video><script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>

...

var playerName = $('#player').val();if (playerName == 'HLS.js') { var playerElement = $('#hlsjs'); playerElement.show(); var player = new Hls(); console.log('Created HLS.js Player'); player.loadSource(response.HLSStreamingSessionURL); player.attachMedia(playerElement[0]); console.log('Set player source'); player.on(Hls.Events.MANIFEST_PARSED, function() { video.play(); console.log('Starting playback'); });}

Mengatasi Masalah HLSJika aliran video tidak diputar dengan benar, lihatMemecahkan Masalah HLS (p. 176).

Contoh Selesai untuk Pemutaran HLSAnda dapatunduh atau lihat kode contoh yang telah selesai.

Pemutaran Video dengan MPEG-DASHUntuk melihat aliran video Kinesis menggunakan MPEG-DASH, Anda pertama kali membuat sesistreaming menggunakanGetDashStreamingSessionURL. Tindakan ini mengembalikan URL (berisi tokensesi) untuk mengakses sesi MPEG-DASH. Anda kemudian dapat menggunakan URL dalam media playeratau aplikasi mandiri untuk menampilkan aliran.

Aliran video Amazon Kinesis memiliki persyaratan berikut untuk menyediakan video melalui MPEG-DASH:

• Media harus berisi H.264 atau H.265 dikodekan video dan, opsional, AAC atau G.711 dikodekan audio.Secara khusus, ID codec track 1 harusV_MPEG/ISO/AVC(untuk h.264) atau V_MPEGH/ISO/HEVC(untuk H.265). Opsional, ID codec track 2 harusA_AAC(untuk AAC) atau A_MS/ACM (untuk G.711).

11

Amazon Kinesis Video Streams Panduan DeveloperPemutaran Video dengan MPEG-DASH

• Retensi data harus lebih besar dari 0.• Lacak video setiap fragmen harus berisi data pribadi codec dalam Advanced Video Coding (AVC) untuk

format H.264 dan HEVC untuk format H.265. Untuk informasi selengkapnya, lihatSpesifikasi MPEG-4ISO/IEC 14496-15. Untuk informasi tentang mengadaptasi data stream ke format tertentu, lihatNALAdaptasi Flag.

• Trek audio (jika ada) dari setiap fragmen harus berisi data pribadi codec dalam format AAC (SpesifikasiAAC ISO/IEC 13818-7) atauFormat MS Wave.

Contoh: Menggunakan MPEG-DASH dalam HTML danJavaScriptContoh berikut menunjukkan cara mengambil sesi streaming MPEG-DASH untuk streaming video Kinesisdan memutarnya kembali di halaman web. Contoh ini menunjukkan cara memutar video di pemain berikut:

• Google Shaka pemain• dash.js

Topik• Mengatur Klien Kinesis Video Streams untuk Pemutaran MPEG-DASH (p. 12)• Mengambil Kinesis Video Streams Arsipkan Endpoint Konten untuk MPEG-DASH Playback (p. 12)• Ambil URL Sesi Streaming MPEG-DASH (p. 13)• Menampilkan Video Streaming dengan Pemutaran MPEG-DASH (p. 13)• Contoh (p. 14)

Mengatur Klien Kinesis Video Streams untuk Pemutaran MPEG-DASHUntuk mengakses streaming video dengan MPEG-DASH, pertama buat dan konfigurasikan klien KinesisVideo Streams (untuk mengambil endpoint layanan) dan klien media yang diarsipkan (untuk mengambilsesi streaming MPEG-DASH). Aplikasi mengambil nilai-nilai yang diperlukan dari kotak input pada halamanHTML.

var streamName = $('#streamName').val();

// Step 1: Configure SDK Clientsvar options = { accessKeyId: $('#accessKeyId').val(), secretAccessKey: $('#secretAccessKey').val(), sessionToken: $('#sessionToken').val() || undefined, region: $('#region').val(), endpoint: $('#endpoint').val() || undefined }var kinesisVideo = new AWS.KinesisVideo(options);var kinesisVideoArchivedContent = new AWS.KinesisVideoArchivedMedia(options);

Mengambil Kinesis Video Streams Arsipkan Endpoint Konten untuk MPEG-DASHPlaybackSetelah klien dimulai, ambil titik akhir konten yang diarsipkan Kinesis Video Streams sehingga Anda dapatmengambil URL sesi streaming MPEG-DASH sebagai berikut:

// Step 2: Get a data endpoint for the streamconsole.log('Fetching data endpoint');kinesisVideo.getDataEndpoint({

12

Amazon Kinesis Video Streams Panduan DeveloperPemutaran Video dengan MPEG-DASH

StreamName: streamName, APIName: "GET_DASH_STREAMING_SESSION_URL" }, function(err, response) { if (err) { return console.error(err); } console.log('Data endpoint: ' + response.DataEndpoint); kinesisVideoArchivedContent.endpoint = new AWS.Endpoint(response.DataEndpoint);

Ambil URL Sesi Streaming MPEG-DASHBila Anda memiliki titik akhir konten yang diarsipkan, hubungiGetDashStreamingSessionURLAPI untukmengambil URL sesi streaming MPEG-DASH sebagai berikut:

// Step 3: Get a Streaming Session URLvar consoleInfo = 'Fetching ' + protocol + ' Streaming Session URL';console.log(consoleInfo);

if (protocol === 'DASH') { kinesisVideoArchivedContent.getDASHStreamingSessionURL({ StreamName: streamName, PlaybackMode: $('#playbackMode').val(), DASHFragmentSelector: { FragmentSelectorType: $('#fragmentSelectorType').val(), TimestampRange: $('#playbackMode').val() === "LIVE" ? undefined : { StartTimestamp: new Date($('#startTimestamp').val()), EndTimestamp: new Date($('#endTimestamp').val()) } }, DisplayFragmentTimestamp: $('#displayFragmentTimestamp').val(), DisplayFragmentNumber: $('#displayFragmentNumber').val(), MaxManifestFragmentResults: parseInt($('#maxResults').val()), Expires: parseInt($('#expires').val()) }, function(err, response) { if (err) { return console.error(err); } console.log('DASH Streaming Session URL: ' + response.DASHStreamingSessionURL);

Menampilkan Video Streaming dengan Pemutaran MPEG-DASHBila Anda memiliki URL sesi streaming MPEG-DASH, berikan ke pemutar video. Metode untukmenyediakan URL ke pemutar video khusus untuk pemutar yang Anda gunakan.

Contoh kode berikut ini menunjukkan cara menyediakan URL sesi streamingGoogle Shakapemain:

// Step 4: Give the URL to the video player.

//Shaka Player elements <video id="shaka" class="player" controls autoplay></video><script src="https://cdnjs.cloudflare.com/ajax/libs/shaka-player/2.4.1/shaka-player.compiled.js"></script>...

var playerName = $('#player').val();

if (playerName === 'Shaka Player') { var playerElement = $('#shaka'); playerElement.show();

var player = new shaka.Player(playerElement[0]); console.log('Created Shaka Player');

13

Amazon Kinesis Video Streams Panduan DeveloperMenggunakan Metadata Streaming

player.load(response.DASHStreamingSessionURL).then(function() { console.log('Starting playback'); }); console.log('Set player source');}

Contoh kode berikut ini menunjukkan cara menyediakan URL sesi streaming kedash.jspemain:

<!-- dash.js Player elements --><video id="dashjs" class="player" controls autoplay=""></video><script src="https://cdn.dashjs.org/latest/dash.all.min.js"></script>

...

var playerElement = $('#dashjs');playerElement.show();

var player = dashjs.MediaPlayer().create();console.log('Created DASH.js Player');

player.initialize(document.querySelector('#dashjs'), response.DASHStreamingSessionURL, true);console.log('Starting playback');console.log('Set player source');}

ContohAnda dapatunduh atau lihat kode contoh yang telah selesaidi atasGitHub.

Menggunakan Metadata Streaming dengan KinesisVideo Streams

Anda dapat menggunakan SDK Amazon Kinesis Video Streams untuk menyematkan metadata padatingkat fragmen individual dalam aliran video Kinesis. Metadata di Kinesis Video Streams adalahpasangan kunci-nilai berubah. Anda dapat menggunakannya untuk menggambarkan isi fragmen,menanamkan pembacaan sensor terkait yang perlu ditransfer bersama dengan fragmen yang sebenarnya,atau memenuhi kebutuhan khusus lainnya. Metadata dibuat tersedia sebagai bagian darithe sectioncalled “GetMedia” (p. 258)atauthe section called “GetMediaForFragmentList” (p. 293)OperasiAPI. Ini disimpan bersama dengan fragmen untuk seluruh durasi periode retensi aliran. Aplikasiyang mengkonsumsi dapat membaca, memproses, dan mengambil tindakan berdasarkan metadatamenggunakanPerpustakaan Parser Streaming Video Kinesis (p. 124).

Ada dua mode di mana metadata dapat disematkan dengan fragmen dalam aliran:

• Tidak persisten: Anda dapat membubuhkan metadata secara ad hoc ke fragmen dalam aliran,berdasarkan kriteria spesifik bisnis yang telah terjadi. Contohnya adalah kamera pintar yang mendeteksigerakan dan menambahkan metadata ke fragmen yang sesuai yang berisi gerakan sebelum mengirimfragmen ke aliran video Kinesis nya. Anda mungkin menerapkan metadata ke fragmen dalam formatberikut:Motion = true.

• Persisten: Anda dapat membubuhkan metadata ke fragmen berturut-turut dan berturut-turut dalamaliran berdasarkan kebutuhan berkelanjutan. Contohnya adalah kamera pintar yang mengirimkankoordinat garis lintang dan bujur saat ini yang terkait dengan semua fragmen yang dikirimkan ke aliranvideo Kinesis. Anda mungkin menerapkan metadata ke semua fragmen dalam format berikut:Lat =47.608013N , Long = -122.335167W

14

Amazon Kinesis Video Streams Panduan DeveloperMenambahkan Metadata ke Stream Video Kinesis

Anda dapat membubuhkan metadata di kedua mode ini ke fragmen yang sama secara bersamaan,berdasarkan kebutuhan aplikasi Anda. Metadata yang disematkan mungkin termasuk objek yangterdeteksi, dilacak aktivitas, koordinat GPS, atau data kustom lainnya yang ingin Anda kaitkan denganfragmen dalam aliran. Metadata dikodean sebagai pasangan kunci-nilai.

Topik• Menambahkan Metadata ke Stream Video Kinesis (p. 15)• Mengkonsumsi Metadata Tertanam dalam Aliran Video Kinesis (p. 16)• Batasan Metadata Streaming (p. 17)

Menambahkan Metadata ke Stream Video KinesisMetadata yang Anda tambahkan ke aliran video Kinesis dimodelkan sebagai tag MKV, yangdiimplementasikan sebagai pasangan kunci-nilai.

Metadata dapatsementara, seperti untuk menandai suatu peristiwa dalam aliran, ataugigih, seperti untukmengidentifikasi fragmen di mana peristiwa tertentu sedang berlangsung. Item metadata persisten tetapada, dan diterapkan pada setiap fragmen berturut-turut, sampai dibatalkan.

Note

Item metadata ditambahkan menggunakanPustaka Produsen (p. 52)berbedadari API penandaan tingkat aliran yang diimplementasikan denganthe section called“TagStream” (p. 234),the section called “UntagStream” (p. 239), danthe section called“ListTagsForStream” (p. 229).

API MetadataAnda dapat menggunakan operasi berikut di Producer SDK untuk mengimplementasikan metadatastreaming.

PIC

PUBLIC_API STATUS putKinesisVideoFragmentMetadata(STREAM_HANDLE streamHandle, PCHAR name, PCHAR value, BOOL persistent);

SDK Produser C ++

/** * Appends a "tag" or metadata - a key/value string pair into the stream. */bool putFragmentMetadata(const std::string& name, const std::string& value, bool persistent = true);

SDK Java

Menggunakan Java Producer SDK, Anda menambahkan metadatakeMediaSourcememakaiMediaSourceSink.onCodecPrivateData:

void onFragmentMetadata(final @Nonnull String metadataName, final @Nonnull String metadataValue, final boolean persistent)throws KinesisVideoException;

15

Amazon Kinesis Video Streams Panduan DeveloperMengkonsumsi Metadata Tertanam

dalam Aliran Video Kinesis

Metadata persisten dan tidak persisten

Untuk metadata nonpersistent, Anda dapat menambahkan beberapa item metadata dengan yangsamanama. Producer SDK mengumpulkan item metadata dalam antrian metadata hingga ditambahkanke fragmen berikutnya. Antrian metadata dihapus sebagai item metadata diterapkan ke aliran. Untukmengulang metadata, panggilputKinesisVideoFragmentMetadataatauputFragmentMetadatalagi.

Untuk metadata persisten, Producer SDK mengumpulkan item metadata dalam antrian metadata dengancara yang sama seperti metadata nonpersistent. Namun, item metadata tidak dihapus dari antrian ketikamereka ditambahkan ke fragmen berikutnya.

MemanggilputKinesisVideoFragmentMetadataatauputFragmentMetadatabersamapersistentdiaturketruememiliki perilaku berikut:

• Memanggil API menempatkan item metadata dalam antrian. Metadata ditambahkan sebagai tag MKV kesetiap fragmen sementara item dalam antrian.

• Memanggil API dengan yang samanamadan yang berbedanilaisebagai item metadata yang ditambahkansebelumnya menimpa item.

• Memanggil API dengan kosongnilaimenghapus (membatalkan) item metadata dari antrian metadata.

Mengkonsumsi Metadata Tertanam dalam AliranVideo KinesisUntuk mengkonsumsi metadata dalam aliran video Kinesis, gunakan implementasiMkvTagProcessor:

public interface MkvTagProcessor { default void process(MkvTag mkvTag, Optional<FragmentMetadata> currentFragmentMetadata) { throw new NotImplementedException("Default FragmentMetadataVisitor.MkvTagProcessor"); } default void clear() { throw new NotImplementedException("Default FragmentMetadataVisitor.MkvTagProcessor"); } }}

Antarmuka ini ditemukan diFragmentMetadataPengunjung (p. 126)class diPerpustakaan ParserStreaming Video Kinesis (p. 124).

ParameterFragmentMetadataVisitorkelas berisi implementasiMkvTagProcessor:

public static final class BasicMkvTagProcessor implements FragmentMetadataVisitor.MkvTagProcessor { @Getter private List<MkvTag> tags = new ArrayList<>();

@Override public void process(MkvTag mkvTag, Optional<FragmentMetadata> currentFragmentMetadata) { tags.add(mkvTag); } @Override public void clear() {

16

Amazon Kinesis Video Streams Panduan DeveloperBatasan Metadata Streaming

tags.clear(); }}

ParameterKinesisVideoRendererExampleclass berisi contoh bagaimanamenggunakanBasicMkvTagProcessor. Pada contoh berikut,BasicMkvTagProcessorditambahkankeMediaProcessingArgumentsdari sebuah aplikasi:

if (renderFragmentMetadata) { getMediaProcessingArguments = KinesisVideoRendererExample.GetMediaProcessingArguments.create( Optional.of(new FragmentMetadataVisitor.BasicMkvTagProcessor()));

ParameterBasicMkvTagProcessor.processMetode ini disebut ketika metadata fragmen tiba. Andadapat mengambil akumulasi metadata denganGetTags. Jika Anda ingin mengambil satu item metadata,panggilan pertamaclearuntuk menghapus metadata yang dikumpulkan, dan kemudian mengambilkembali item metadata.

Batasan Metadata StreamingBatasan berikut berlaku untuk menambahkan metadata streaming ke aliran video Kinesis:

• Anda dapat menambahkan hingga 10 item metadata ke fragmen.• Metadata fragmennamadapat memiliki panjang hingga 128 byte.• Metadata fragmennilaidapat memiliki panjang hingga 256 byte.• Metadata fragmennamatidak dapat dimulai dengan string”AWS“. Jika item metadata

tersebut ditambahkan, makaputFragmentMetadatametode dalam PICmengembalikanSTATUS_INVALID_METADATA_NAMEerror (kode kesalahan0x52000077). Aplikasi Andakemudian dapat mengabaikan kesalahan (PIC tidak menambahkan item metadata), atau menanggapikesalahan.

Model Data Kinesis Video StreamsParameterPustaka Produsen (p. 52)danPerpustakaan Stream Parser (p. 124)mengirim dan menerimadata video dalam format yang mendukung embedding informasi bersama data video. Format ini didasarkanpada spesifikasi Matroska (MKV).

ParameterFormat MKVadalah spesifikasi terbuka untuk data media. Semua perpustakaan dan contoh kodediPanduan Pengembang Amazon Kinesis Video Streamsmengirim atau menerima data dalam format MKV.

ParameterPustaka Produsen Kinesis VideoStreams (p. 52)menggunakanStreamDefinitiondanFramejenis untuk menghasilkan MKV streamheader, frame header, dan data frame.

Untuk informasi tentang spesifikasi MKV lengkap, lihatSpesifikasi Matroska.

Bagian berikut menjelaskan komponen data yang diformat MKV yang dihasilkan olehPerpustakaanprodusen C ++ (p. 62).

Topik• Elemen Sundulan (p. 18)• Data Track (p. 21)• Elemen Bingkai (p. 21)• Data Bingkai MKV (p. 22)

17

Amazon Kinesis Video Streams Panduan DeveloperElemen Sundulan

Elemen SundulanBerikut elemen header MKV digunakan olehStreamDefinition(didefinisikandalamStreamDefinition.h).

Elemen Deskripsi Nilai-Nilainya

stream_name Sesuai dengan nama aliran videoKinesis.

my-stream

retention_period Durasi streaming datadipertahankan oleh Kinesis VideoStreams. Menentukan0untukaliran yang tidak menyimpandata.

24

tag Sebuah koleksi kunci-nilai datapengguna. Data ini ditampilkandalamAWS ManagementConsoledan dapat dibaca olehaplikasi klien untuk menyaringatau mendapatkan informasitentang aliran.

 

kms_key_id Jika ada, yang ditetapkanpenggunaAWS KMSkunciutama yang digunakan untukmengenkripsi data di sungai. Jikatidak ada, data dienkripsi olehkunci master yang disediakanoleh Kinesia (aws/kinesis-video).

01234567-89ab-CDEF-0123-456789ab

streaming_type Saat ini, satu-satunyajenis streaming yang validadalahSTREAMING_TYPE_REALTIME.

STREAMING_TYPE_REALTIME

content_type Jenis konten yang ditetapkanpengguna. Untuk streaming datavideo untuk diputar di konsol,jenis konten harusvideo/h264.

video/H264

max_latency Nilai ini saat ini tidak digunakandan harus diatur ke 0.

0

fragment_duration Perkiraan berapa lama fragmenAnda harus, yang digunakanuntuk optimasi. Durasi fragmenaktual ditentukan oleh datastreaming.

2

timecode_scale Menunjukkan skala yangdigunakan oleh perangko waktuframe. Default-nya adalah 1milidetik. Menentukan0jugamemberikan nilai default 1milidetik. Nilai ini bisa antara 100nanodetik dan 1 detik.

18

Amazon Kinesis Video Streams Panduan DeveloperElemen Sundulan

Elemen Deskripsi Nilai-NilainyaUntuk informasi selengkapnya,lihatTimecodeScaledalamdokumentasi Matroska.

key_frame_fragmentasi Jikatrue, stream memulaicluster baru ketika keyframediterima.

benar

frame_timecodes Jikatrue, Kinesis Video Streamsprangko frame ketika merekaditerima. Jikafalse, KinesisVideo Streams menggunakanwaktu decode frame yangditerima.

benar

absolute_fragment_time Jikatrue, timecodescluster ditafsirkan sebagaimenggunakan waktu absolut(misalnya, dari jam sistemproduser). Jikafalse, timecodescluster ditafsirkan sebagai relatifterhadap waktu mulai sungai.

benar

fragment_acks Jikatrue, pengakuan(ACK) dikirim saat KinesisVideo Streams menerimadata. ACK dapat diterimamenggunakanKinesisVideoStreamFragmentAckatauKinesisVideoStreamParseFragmentAckcallback.

benar

restart_on_error Menunjukkan apakah aliranharus melanjutkan transmisisetelah kesalahan alirandinaikkan.

benar

nal_adaptation_flags Menunjukkan apakahNAL (Network AbstractionLayer) adaptasi atau codecdata pribadi hadir dalamkonten. Bendera yang validtermasukNAL_ADAPTATION_ANNEXB_NALSdanNAL_ADAPTATION_ANNEXB_CPD_NALS.

NAL_ADAPTATION_ANNEXB_NALS

frame_rate Perkiraan frame rate konten. Nilaiini digunakan untuk optimasi;frame rate aktual ditentukanoleh tingkat data yang masuk.Menentukan0memberikandefault24.

24

avg_bandwidth_bps Perkiraan bandwidth konten. Nilaiini digunakan untuk optimasi;tingkat aktual ditentukan olehbandwidth data yang masuk.Misalnya, untuk aliran videoresolusi 720 p yang berjalanpada 25 FPS, Anda dapatmengharapkan bandwidth rata-rata menjadi 5 Mbps.

5

19

Amazon Kinesis Video Streams Panduan DeveloperElemen Sundulan

Elemen Deskripsi Nilai-Nilainya

buffer_duration Durasi konten yang akandisangga pada produser. Jikaada latensi jaringan rendah, nilaiini dapat dikurangi; jika latensijaringan tinggi, meningkatkannilai ini mencegah frame dariyang dijatuhkan sebelum merekadapat dikirim, karena alokasigagal untuk menempatkan frameke buffer yang lebih kecil.

replay_duration Jumlah waktu aliran data video“diputar ulang” dalam kasuskehilangan koneksi. Nilai inibisa nol jika frame hilang karenakehilangan koneksi tidak menjadiperhatian; nilai dapat ditingkatkanjika aplikasi yang memakandapat menghilangkan frameberlebihan. Nilai ini harus kurangdari durasi buffer; jika tidak durasibuffer digunakan.

connection_staleness Durasi bahwa koneksidipertahankan ketika tidak adadata yang diterima.

codec_id Codec yang digunakanoleh konten. Untukinformasi selengkapnya,lihatCodeCiddalam spesifikasiMatroska.

V_MPEG2

track_name Nama yang ditetapkan penggunatrek.

my_track

codecPrivateData Data yang disediakan olehencoder yang digunakanuntuk memecahkan kode dataframe, seperti lebar bingkaidan tinggi dalam piksel, yangdibutuhkan oleh banyakkonsumen hilir. DiPerpustakaanProduser C ++ (p. 62),yanggMkvTrackVideoBitsarraydalamMkvStatics.cpptermasuklebar pixel dan tinggi untukframe.

codecPrivateDataUkuran Ukuran datadalamcodecPrivateDataparameter.

track_type Jenis trek untuk sungai. MKV_TRACK_INFO_TYPE_AUDIOatauMKV_TRACK_INFO_TYPE_VIDEO

segment_uuid UUser didefinisikan segmen uuid(16 byte).

 

20

Amazon Kinesis Video Streams Panduan DeveloperData Track

Elemen Deskripsi Nilai-Nilainya

default_track_id Unik nomor non-nol untuk trek. 1

Data TrackUnsur-unsur track MKV berikut digunakan olehStreamDefinition(didefinisikandalamStreamDefinition.h).

Elemen Deskripsi Nilai-Nilainya

track_name Nama track yang ditentukanpengguna. Misalnya, “audio”untuk track audio.

audio

codec_id Codec id untuk trek. Misalnya,“A_AAC” untuk track audio.

A_AAC

cpd Data yang disediakan olehencoder yang digunakan untukmemecahkan kode data frame.Data ini dapat mencakuplebar bingkai dan tinggi dalampiksel, yang dibutuhkanoleh banyak konsumen hilir.DiPerpustakaan Produser C ++,yanggMkvTrackVideoBitsarraydalamMkvStatics.cpp termasukpixel width dan height untukframe.

 

cpd_size Ukuran datadalamcodecPrivateDataparameter.

 

track_type Jenis lintasan. Misalnya, Andadapat menggunakan nilai enumMKV_TRACK_INFO_TYPE_AUDIOuntuk audio.

MKV_TRACK_INFO_TYPE_AUDIO

Elemen BingkaiBerikut elemen header MKV digunakan olehFrame(didefinisikan dalamKinesisVideoPicpaket,dalammkvgen/Include.h):

• Indeks Bingkai: Nilai yang meningkat secara monoton.• Bendera: Jenis frame. Nilai yang valid mencakup hal berikut:

• FRAME_FLAGS_NONE

• FRAME_FLAG_KEY_FRAME: Jikakey_frame_fragmentationdiatur di sungai, frame kunci memulaifragmen baru.

• FRAME_FLAG_DISCARDABLE_FRAME: Memberitahu decoder bahwa ia dapat membuang frame ini jikadecoding lambat.

• FRAME_FLAG_INVISIBLE_FRAME: Durasi blok ini adalah 0.

21

Amazon Kinesis Video Streams Panduan DeveloperData Bingkai MKV

• Decoding Timestamp: Cap waktu ketika frame ini diterjemahkan. Jika frame sebelumnya bergantungpada frame ini untuk decoding, cap kali ini mungkin lebih awal dari frame sebelumnya. Nilainya relatifterhadap awal fragmen.

• Stempel waktu presentasi: Cap waktu ketika frame ini ditampilkan. Nilainya relatif terhadap awalfragmen.

• Durasi: Durasi pemutaran frame.• Ukuran : Ukuran data bingkai dalam byte

Data Bingkai MKVData dalamframe.frameDatamungkin hanya berisi data media untuk frame, atau mungkin berisiinformasi header bersarang lebih lanjut, tergantung pada skema pengkodean yang digunakan. Untukditampilkan diAWS Management Console, data harus dikodekan dalamH.264codec, tetapi Kinesis VideoStreams dapat menerima stream data bersambung waktu dalam format apa pun.

22

Amazon Kinesis Video Streams Panduan DeveloperLangkah 1: Menyiapkan Akun

Memulai dengan Kinesis VideoStreams

Bagian ini menjelaskan cara melakukan tugas berikut di Amazon Kinesis Video Streams:

• Siapkan akun AWS dan buat administrator, jika Anda belum melakukannya.• Buat aliran video Kinesis.• Kirim data ke aliran video Kinesis dari kamera Anda dan lihat media di konsol.

Jika Anda baru mengenal Amazon Kinesis Video Streams, kami merekomendasikan agar AndamembacaArus Amazon Kinesis Video Streams: Cara Kerjanya (p. 5)pertama.

Note

Mengikuti sampel Memulai tidak akan dikenakan biaya ke akun AWS Anda. LihatHarga ArusAmazon Kinesis Video Streamsuntuk biaya data di wilayah Anda.

Topik• Langkah 1: MenyiapkanAWSAkun dan Buat Administrator (p. 23)• Langkah 2: Buat Arus Video Kinesis (p. 25)• Langkah 3: Mengirim Data ke Arus Video Kinesis (p. 25)• Langkah 4: Mengonsumsi Data Media (p. 26)• Apa Selanjutnya? (p. 26)

Langkah 1: MenyiapkanAWSAkun dan BuatAdministrator

Sebelum Anda menggunakan Kinesis Video Streams untuk pertama kali, selesaikan tugas berikut:

1. Mendaftar AWS (p. 23)(kecuali Anda sudah memiliki akun)2. Membuat Pengguna IAM Administrator (p. 24)3. Buat Kunci Akun AWS (p. 24)

Mendaftar AWSJika sudah memiliki akun AWS, Anda dapat melewati langkah ini.

Saat mendaftar Amazon Web Services (AWS),AWSakun secara otomatis terdaftar untuk semua layanandiAWS, termasuk Kinesis Video Streams. Saat menggunakan Kinesis Video Streams, Anda dikenaibiaya berdasarkan jumlah data yang tertelan, disimpan oleh, dan dikonsumsi dari layanan. Jika AndaadalahAWSpelanggan, Anda dapat memulai dengan Kinesis Video Streams secara gratis. Untuk informasiselengkapnya, lihat Tingkat Penggunaan Gratis AWS.

Untuk membuat akun AWS

1. Buka https://portal.aws.amazon.com/billing/signup.

23

Amazon Kinesis Video Streams Panduan DeveloperMembuat Pengguna IAM Administrator

2. Ikuti petunjuk online.

Bagian dari prosedur pendaftaran melibatkan menerima panggilan telepon dan memasukkan kodeverifikasi di keypad telepon.

TuliskanAWSID akun karena Anda membutuhkannya untuk tugas berikutnya.

Membuat Pengguna IAM AdministratorKetika mendaftar ke AWS, Anda memberikan alamat email dan kata sandi yang terkait dengan akun AWSAnda. Ini adalahPengguna akar akun AWS. Kredensialnya memberikan akses penuh ke semua sumberdaya AWS Anda.

Note

Demi alasan keamanan, kami merekomendasikan Anda menggunakan pengguna root hanyauntuk membuatadministrator, yang merupakanPengguna IAMdengan izin penuh ke akun AWSAnda. Kemudian, administrator ini untuk membuat pengguna IAM lainnya dan peran dengan izinterbatas. Untuk informasi selengkapnya, lihat Praktik Terbaik IAM dan Membuat Pengguna Admindan Grup dalam Panduan Pengguna IAM.

Membuat administrator dan masuk ke konsol

1. Buat administrator diAWSakun. Untuk melihat instruksi, buka Membuat Grup Pengguna danAdministrator IAM Pertama Anda di Panduan Pengguna IAM.

2. Sebagai administrator, Anda dapat masuk ke konsol menggunakan URL khusus. Untuk informasiselengkapnya, lihatCara Pengguna Masuk ke Akun Andadi dalamPanduan Pengguna IAM.

Administrator dapat membuat lebih banyak pengguna di akun. Pengguna IAM secara default tidak memilikiizin. Administrator dapat membuat pengguna dan mengelola izin mereka. Untuk informasi selengkapnya,lihatMembuat Grup Pengguna dan Administrator IAM Pertama Anda.

Untuk informasi selengkapnya tentang IAM, lihat hal berikut:

• AWS Identity and Access Management(IAM)• Memulai• Panduan Pengguna IAM

Buat Kunci Akun AWSAnda memerlukan Kunci Akun AWS untuk mengakses Kinesis Video Streams secara terprogram.

Untuk membuat Kunci Akun AWS, lakukan hal berikut:

1. Masuk ke AWS Management Console dan buka konsol IAM di https://console.aws.amazon.com/iam/.2. PilihPenggunadi bilah navigasi, dan pilihAdministratorpengguna.3. PilihKredensi keamanantab, dan pilihBuat kunci akses.4. CatatAccess key ID. PilihTampilkandi bawahSecret access key. CatatSecret access key.

Langkah SelanjutnyaLangkah 2: Buat Arus Video Kinesis (p. 25)

24

Amazon Kinesis Video Streams Panduan DeveloperLangkah 2: Buat Arus Video Kinesis

Langkah 2: Buat Arus Video KinesisBagian ini menjelaskan cara membuat aliran video Kinesis.

Bagian ini berisi prosedur berikut:

• the section called “Membuat Streaming Video Menggunakan Konsol” (p. 25)• the section called “Membuat Stream Video MenggunakanAWS CLI” (p. 25)

Membuat Streaming Video Menggunakan Konsol1. Buka konsol dihttps://console.aws.amazon.com/kinesisvideo/home.2. PadaArus videohalaman, pilihBuat aliran video.3. PadaMembuat aliran video baruhalaman, ketikExampleStreamuntuk nama stream.

MeninggalkanKonfigurasi defaulttombol radio dipilih.4. PilihBuat aliran video.5. Setelah Kinesis Video Streams membuat streaming, tinjau detail diExampleStreamhalaman.

Membuat Stream Video MenggunakanAWS CLI1. Pastikan bahwa Anda memilikiAWS CLIdiinstal dan dikonfigurasi. Untuk informasi lebih lanjut,

lihatAWS Command Line Interfacedokumentasi.2. Jalankan yang berikutCreate-Streamperintah diAWS CLI:

aws kinesisvideo create-stream --stream-name "MyKVStream" --data-retention-in-hours "24"

Respon akan terlihat serupa dengan yang berikut ini:

{ "StreamARN": "arn:aws:kinesisvideo:us-west-2:123456789012:stream/MyKVSStream/123456789012"}

Langkah SelanjutnyaLangkah 3: Mengirim Data ke Arus Video Kinesis (p. 25)

Langkah 3: Mengirim Data ke Arus Video KinesisBagian ini menjelaskan cara mengirim data media dari kamera ke aliran video Kinesis yangAnda buat di langkah sebelumnya. Bagian ini menggunakanPerpustakaan produsen C ++ (p. 62)sebagaiGStreamer (p. 132)plugin.

Untuk dengan mudah mengirim media dari berbagai perangkat pada berbagai sistem operasi, tutorial inimenggunakan perpustakaan produser Kinesis Video Streams C++ danGStreamer, kerangka media open-source yang menstandarisasi akses ke kamera dan sumber media lainnya.

25

Amazon Kinesis Video Streams Panduan DeveloperLangkah Selanjutnya

Pertama, gunakan instruksi berikut untuk membangun pustaka produser:https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp.

Selanjutnya, pilih sistem operasi Anda dari salah satu dari empat opsi di bawah ini dan ikuti petunjuk untukmengirim data video ke streaming Anda.

• Linux• macOS• Microsoft Windows• Raspberry Pi OS

Untuk informasi selengkapnya tentang menggunakan plugin GStreamer untuk melakukan streaming videodari file atau aliran RTSP dari kamera, lihatContoh: Kinesis Video Streams Produser SDK GStreamerPlugin (p. 132).

Langkah SelanjutnyaLangkah 4: Mengonsumsi Data Media (p. 26)

Langkah 4: Mengonsumsi Data MediaAnda dapat mengkonsumsi data media dengan melihatnya di konsol, atau dengan membuat aplikasi yangmembaca data media dari aliran menggunakan HLS.

Melihat Data Media di KonsolUntuk melihat data media yang dikirim dari kamera Anda di konsol Kinesis Video Streams,buka konsol Kinesis Video Streams dihttps://console.aws.amazon.com/kinesisvideo/home, danmemilihMyKinesisVideoStreamstreaming di halaman Kelola Aliran. Video diputar di panel Video Pratinjau.

Mengkonsumsi Data Media menggunakan HLSAnda dapat membuat aplikasi klien yang mengkonsumsi data dari aliran video Kinesis menggunakanHypertext Live Streaming (HLS). Untuk informasi tentang membuat aplikasi yang mengkonsumsi datamedia menggunakan HLS, lihatthe section called “Pemutaran video” (p. 7).

Langkah SelanjutnyaApa Selanjutnya? (p. 26)

Apa Selanjutnya?Lihat topik berikut untuk informasi lebih lanjut tentang Kinesis Video Streams:

• Pustaka Produsen (p. 52): Menjelaskan kelas dan metode yang digunakan untuk mengirim datamedia ke layanan Kinesis Video Streams.

• Perpustakaan Stream Parser (p. 124): Menjelaskan cara membuat aplikasi yang membaca danmenampilkan data media dari aliran video Kinesis.

• RTSP dan Docker (p. 143): Menjelaskan cara melakukan streaming video ke layanan Kinesis VideoStreams dari kamera jaringan (RTSP).

26

Amazon Kinesis Video Streams Panduan DeveloperMemulai dengan GetImages

Gambar dalam Amazon KinesisVideo Streams

Amazon Kinesis Video Streams API dan SDK dapat membantu Anda mengekstrak gambar dari streamingvideo Anda. Anda dapat menggunakan gambar ini untuk aplikasi pemutaran yang disempurnakan sepertithumbnail atau scrubbing yang ditingkatkan, atau untuk digunakan dalam pipeline machine learning.Kinesis Video Streams menawarkan ekstraksi gambar sesuai permintaan melalui API, atau ekstraksigambar otomatis dari tag metadata dalam video yang tertelan.

Untuk informasi tentang penggunaan dukungan terkelola Kinesis Video Streams untuk gambar, lihat:

• Generasi Gambar sesuai permintaan (GetImages)- API ini memungkinkan pelanggan untuk mengekstraksatu gambar atau beberapa gambar dari video yang disimpan di Kinesis Video Streams.

• Pembuatan Gambar Otomatis (Pengiriman S3) - Konfigurasikan Kinesis Video Streams untuk secaraotomatis mengekstrak gambar dari data video secara real time berdasarkan tag dalam video yangdiunggah, dan kirimkan gambar ke bucket S3 yang ditentukan pelanggan.

Topik• Memulai dengan GetImages (p. 27)• Memulai pengiriman Amazon S3 (p. 27)

Memulai dengan GetImagesDukungan terkelola untuk Images memberi pelanggan cara yang dikelola sepenuhnya untuk mendapatkangambar dari data video yang dialirkan dan disimpan di Kinesis Video Streams. Pelanggan dapatmenggunakan gambar untuk menjalankan beban kerja machine learning (ML) seperti deteksi orang, hewanpeliharaan, atau kendaraan. Gambar juga dapat digunakan untuk menambahkan elemen interaktif kepemutaran, seperti pratinjau gambar untuk acara gerak dan menggosok untuk klip video.

Untuk informasi lebih lanjut tentangGetImagesfitur, lihatGetImagesdi dalamArus Amazon Kinesis VideoStreamsPanduan referensi API

Memulai pengiriman Amazon S3Saat ini, pelanggan menjalankan dan mengelola pipeline transcoding gambar mereka sendiri untukmembuat gambar untuk berbagai keperluan seperti scrubbing, pratinjau gambar, menjalankan modelML pada gambar, dan banyak lagi. Kinesis Video Streams menawarkan pelanggan kemampuan untukmentranskode dan mengirimkan gambar. Kinesis Video Streams akan secara otomatis mengekstrakgambar dari data video secara real-time berdasarkan tag, dan mengirimkan gambar ke bucket S3 yangditentukan pelanggan.

UpdateImageGenerationConfigurationUntuk menyiapkan aliran video Kinesis untuk mengaktifkan pembuatan gambar ke Amazon S3:

1. BuatBucket S3untuk pembuatan gambar berdasarkan tag yang ditambahkan dalam SDKmenggunakan API baru. CatatanJENIS S3, yang diperlukan pada langkah berikutnya, saatmemperbarui konfigurasi pembuatan gambar untuk aliran.

2. Buat file JSON bernamaupdate-image-generation-input.jsondengan konten berikut sebagai masukan.

27

Amazon Kinesis Video Streams Panduan DeveloperUpdateImageGenerationConfiguration

{ "StreamName": "TestStream", "ImageGenerationConfiguration": { "Status": "ENABLED", "DestinationConfig": { "DestinationRegion": "us-east-1", "Uri": "s3://bucket-name" }, "SamplingInterval": 3000, "ImageSelectorType": "PRODUCER_TIMESTAMP", "Format": "JPEG", "FormatConfig": { "JPEGQuality": "80" }, "WidthPixels": 320, "HeightPixels": 240 }}

Anda dapat menggunakanAWS CLIuntuk memanggilUpdateImageGenerationConfigurationOperasiAPI untuk menambahkan Amazon S3 ARN yang dibuat sebelumnya dan mengubah statusnyaENABLED.

aws kinesisvideo update-image-generation-configuration \--cli-input-json file://./update-image-generation-input.json \

Permintaan:

UpdateImageGenerationConfiguration HTTP/1.1 Method: 'POST' Path: '/updateImageGenerationConfiguration' Body: { StreamName: 'String', // Optional. Either stream name or arn should be passed StreamArn: 'String', // Optional. Either stream name or arn should be passed ImageGenerationConfiguration : { // required Status: 'Enum', // ENABLED | DISABLED, ImageSelectorType: 'Enum', // SERVER_TIMESTAMP | PRODUCER_TIMESTAMP.. DestinationConfig: { DestinationRegion: 'String', Uri: string, }, SamplingInterval: 'Number'// Format: 'Enum', // JPEG | PNG // Optional parameters FormatConfig: { 'String': 'String', }, WidthPixels: 'Number', // 1 - 3840 (4k). HeightPixels: 'Number' // 1 - 2160 (4k). } }

Jawaban:

HTTP/1.1 200 Content-type: application/json Body: {

28

Amazon Kinesis Video Streams Panduan DeveloperDescribeImageGenerationConfiguration

}

Note

Diperlukan setidaknya 1 menit untuk memulai alur kerja pembuatan gambar setelah memperbaruikonfigurasi pembuatan gambar. Tunggu setidaknya 1 menit sebelum memohonPutMediasetelahpanggilan pembaruan.

DescribeImageGenerationConfigurationUntuk melihat konfigurasi pembuatan gambar yang sudah ditetapkan untuk stream, pelanggan dapatmembuatDescribeImageGenerationConfigurationPermintaan, sebagai berikut.

Permintaan:

DescribeImageGenerationConfiguration HTTP/1.1

Method: 'POST' Path: '/describeImageGenerationConfiguration' Body: { StreamName: 'String', // Optional. Either stream name or arn should be passed StreamArn: 'String', // Optional. Either stream name or arn should be passed }

Jawaban:

HTTP/1.1 200 Content-type: application/json Body: { ImageGenerationConfiguration : { Status: 'Enum', ImageSelectorType: 'Enum', // SERVER_TIMESTAMP | PRODUCER_TIMESTAMP DestinationConfig: { DestinationRegion: 'String' Uri: 'string', }, SamplingInterval: 'Number', Format: 'Enum', FormatConfig: { 'String': 'String', }, WidthPixels: 'Number', HeightPixels: 'Number' } }

Untuk mempelajari lebih lanjut tentangDescribeImageGenerationConfigurationfitur,lihatDescribeImageGenerationConfiguration di dalamPanduan Pengembang Amazon Kinesis VideoStreams.

Tag MKV produserKinesis Video Streams Produser SDK akan memungkinkan pelanggan untuk menandai fragmen minattertentu dengan mengekspos operasi API di SDK. Anda dapat melihat contoh inikemari. Setelah memanggil

29

Amazon Kinesis Video Streams Panduan DeveloperMenambahkan tag metadata di ProducerSDK menggunakan PutEventMetaData

API ini, SDK akan menambahkan satu set tag MKV yang telah ditentukan bersama dengan data fragmen.Kinesis Video Streams akan mengenali tag MKV khusus ini dan memulai alur kerja pembuatan gambarberdasarkan konfigurasi pemrosesan gambar aliran itu.

Metadata fragmen apa pun yang disediakan bersama dengan tag pembuatan Amazon S3 Image akandisimpan sebagai metadata Amazon S3.

Sintaks untuk Tag MKV Produser

|+ Tags| + Tag| // MANDATORY: Predefined MKV tag to trigger image generation for the fragment| + Simple| + Name: AWS_KINESISVIDEO_IMAGE_GENERATION

| // OPTIONAL: S3 prefix which will be set as prefix for generated image.| + Simple| + Name: AWS_KINESISVIDEO_IMAGE_PREFIX | + String: image_prefix_in_s3 // 256 bytes max m

| // OPTIONAL: Key value pairs that will be persisted as S3 Image object metadata.| + Simple| + Name: CUSTOM_KEY_1 // Max 128 bytes| + String:CUSTOM_VALUE_1 // Max 256 bytes| + Simple| + Name: CUSTOM_KEY_2 // Max 128 bytes| + String: CUSTOM_VALUE_2 // Max 256 bytes

Menambahkan tag metadata di Producer SDKmenggunakan PutEventMetaDataParameterPutEventMetaDatafungsi menambahkan file MKV yang terkait denganacara.PutEventMetaDatamengambil dua parameter, di mana parameter pertama adalah peristiwa yangnilainya berasal dariSTREAM_EVENT_TYPEenum. Parameter kedua,pStreamEventMetadata, bersifatopsional dan dapat digunakan untuk menyertakan metadata tambahan sebagai kunci, pasangan nilai. Adabatas 5 kunci, pasangan nilai metadata yang dapat ditambahkan.

BatasTabel berikut mencantumkan batasan yang terkait dengan tag metadata. Jika batas tag metadata dapatdisesuaikan, Anda dapat meminta peningkatan melalui manajer akun.

Kuota Nilai Maks Dapat Disesuaikan

Panjang Awalan Gambar 256 tidak

Metadata opsional Panjang kunci 128 tidak

Panjang nilai metadata opsional 256 tidak

Jumlah maksimum metadataopsional

10 ya

30

Amazon Kinesis Video Streams Panduan DeveloperMetadata Objek

Metadata ObjekSecara default, Kinesis Video Streams akan mengaturnomor fragmen,penghasil, danStempel Waktudarigambar yang Amazon S3 sebagai metadata objek Jika ada data fragmen tambahan yang ditentukan dalamtag MKV, tag tersebut juga akan ditambahkan ke metadata objek Amazon S3. Contoh berikut menunjukkansintaks yang benar untuk metadata objek Amazon S3.

{ // KVS S3 object metadata x-amz-meta-aws_kinesisvideo_fragment_number : 'string', x-amz-meta-aws_kinesisvideo_producer_timestamp: 'number', x-amz-meta-aws_kinesisvideo_server_timestamp: 'number', // Optional key value pair sent as part of the MKV tags custom_key_1: custom_value_1, custom_key_2: custom_value_2,}

S3 objek jalan (gambar)Daftar berikut menunjukkan format yang benar dari path objek dan menjelaskan setiap elemen dalam path.

Format:

ImagePrefix_AccountID_StreamName_ImageTimecode_RandomID.ekstensi file

1.ImagePrefix - NilaiAWS_KINESISVIDEO_IMAGE_PREFIX.

2.AccountID - ID Akun di mana aliran dibuat.

3.StreamName - Nama aliran yang gambar dihasilkan.

4.ImageTimecode - Epoch timecode dalam fragmen di mana gambar dihasilkan.

5.RandomID - GUID Acak.

6.file-extension - JPG atau PNG berdasarkan format Gambar yang diminta.

Rekomendasi URI Amazon S3 untuk melindungi daripembatasanJika Anda menulis ribuan gambar ke Amazon S3, ada risiko pelambatan. Untuk informasi selengkapnya,lihatPrefiks S3.

Awalan Amazon S3 dimulai dengan batas PUT 3.500 permintaan PUT per detik, dan secara bertahap akanmeningkat seiring waktu untuk awalan unik. Hindari menggunakan tanggal dan waktu sebagai awalanAmazon S3. Data berkode waktu akan memengaruhi satu awalan pada satu waktu, dan juga akan berubahsecara teratur, membatalkan peningkatan skala awalan sebelumnya. Untuk mengaktifkan penskalaanAmazon S3 yang lebih cepat dan konsisten, pertimbangkan untuk menambahkan awalan acak, sepertikode hex atau UUID ke URI Tujuan Amazon S3. Misalnya, awalan kode hex secara alami akan membagipermintaan Anda secara acak di antara 16 awalan yang berbeda (awalan untuk setiap karakter hex unik),yang akan memungkinkan 56.000 permintaan PUT per detik setelah Amazon S3 memiliki skala otomatis.

31

Amazon Kinesis Video Streams Panduan DeveloperUpdateNotificationConfiguration

Notification di Amazon Kinesis VideoStreams

Saat fragmen media tersedia untuk dikonsumsi, Kinesis Video Streams memberi tahu pelanggan yangmenggunakanAmazon Simple Notification ServiceNotification (Amazon SNS). Topik berikut menjelaskancara memulai dengan notifikasi.

UpdateNotificationConfigurationGunakan operasi API ini untuk memperbarui informasi notifikasi aliran. Untuk informasi lebih lanjuttentangUpdateNotificationConfigurationfitur, lihatUpdateNotificationConfiguration didalamPanduan Pengembang Amazon Kinesis Video Streams.

Note

Diperlukan setidaknya 1 menit untuk memulai notifikasi setelah memperbarui konfigurasi notifikasi.Tunggu setidaknya 1 menit sebelum memohonPutMediasetelah panggilan pembaruan.

DescribeNotificationConfigurationGunakan API ini untuk mendeskripsikan konfigurasi notifikasi yang dilampirkan ke stream.Untuk informasi lebih lanjut tentangDescribeNotificationConfigurationfitur,lihatDescribeNotificationConfigurationdi dalamPanduan Pengembang Amazon Kinesis Video Streams.

Produser MKV TagsKinesis Video Streams Produser SDK memungkinkan pelanggan untuk menandai fragmen minat tertentudengan mengekspos operasi API di SDK. Lihat contoh cara kerjanyakemari. Setelah memanggil API ini,SDK akan menambahkan satu set tag MKV yang telah ditentukan bersama dengan data fragmen. KinesisVideo Streams akan mengenali tag MKV khusus ini dan memulai pemberitahuan untuk fragmen yangditandai.

Metadata fragmen apa pun yang disediakan bersama dengan tag Notification MKV akan dipublikasikansebagai bagian dari payload topik Amazon SNS.

Sintaks untuk Tag MKV Produser

|+ Tags| + Tag| // MANDATORY: Predefined MKV tag to trigger the notification for the fragment| + Simple| + Name: AWS_KINESISVIDEO_NOTIFICATION| + String| // OPTIONAL: Key value pairs that will be sent as part of the Notification payload

32

Amazon Kinesis Video Streams Panduan DeveloperBatas Tag MKV

| + Simple| + Name: CUSTOM_KEY_1 // Max 128 bytes| + String:CUSTOM_VALUE_1 // Max 256 bytes| + Simple| + Name: CUSTOM_KEY_2 // Max 128 bytes| + String: CUSTOM_VALUE_2 // Max 256 bytes

Batas Tag MKVTabel berikut mencantumkan batasan yang terkait dengan tag metadata. Jika batas tag metadata dapatdisesuaikan, Anda dapat meminta peningkatan melalui manajer akun.

Kuota Nilai maks Dapat Disesuaikan

Metadata opsional Panjang kunci 128 tidak

Panjang nilai metadata opsional 256 tidak

Jumlah maksimum metadataopsional

10 ya

Muatan Topik Amazon SNSSetiap notifikasi yang dimulai melalui alur kerja sebelumnya akan mengirimkan payload topik Amazon SNS,seperti yang ditunjukkan pada contoh berikut. Contoh ini adalah pesan Amazon SNS yang terjadi setelahmengkonsumsi data notifikasi dariAmazon Simple Queue ServiceAntrean Amazon SQS).

{"Type" : "Notification","MessageId" : Message ID,"TopicArn" : SNS ARN,"Subject" : "Kinesis Video Streams Notification","Message" : "{\"StreamArn\":\Stream Arn,\"FragmentNumber\":\Fragment Number,\"FragmentStartProducerTimestamp\":FragmentStartProducerTimestamp, \"FragmentStartServerTimestamp\":FragmentStartServerTimestamp,\"NotificationType\":\"PERSISTED\",\"NotificationPayload\":{\ CUSTOM_KEY_1:\CUSTOM_VALUE_1, \CUSTOM_KEY_2:\CUSTOM_VALUE_2}}","Timestamp" : "2022-04-25T18:36:29.194Z","SignatureVersion" : Signature Version,"Signature" : Signature,"SigningCertURL" : Signing Cert URL,"UnsubscribeURL" : Unsubscribe URL}

Subject: "Kinesis Video Streams Notification"Message: { "StreamArn":Stream Arn, "FragmentNumber":Fragment Number, "FragmentStartProducerTimestamp":Fragment Start Producer Timestamp, "FragmentStartServerTimestamp":Fragment Start Server Timestamp, "NotificationType":"PERSISTED", "NotificationPayload":{ CUSTOM_KEY_1:CUSTOM_VALUE_1,

33

Amazon Kinesis Video Streams Panduan DeveloperMelihat Pesan Amazon SNS Anda

CUSTOM_KEY_2:CUSTOM_VALUE_2 }}

Melihat Pesan Amazon SNS AndaAnda tidak dapat membaca pesan langsung dari topik Amazon SNS, karena tidak ada API untukmelakukannya. Untuk melihat pesan, berlangganan antrean SQS ke topik SNS, atau pilih yang lainTujuanyang didukung Amazon SNS. Namun, opsi paling efisien untuk melihat pesan adalah menggunakanAmazon SQS.

Untuk melihat pesan Amazon SNS Anda menggunakan Amazon SQS

1. BuatAntrean Amazon SQS.2. DariAWS Management Console, buka topik Amazon SNS yang ditetapkan sebagai tujuan di

bawahNotificationConfiguration.3. MemiilihBuat langganan, dan kemudian pilih antrian Amazon SQS yang dibuat pada langkah pertama.4. JalankanPutMediasesi dengan konfigurasi Pemberitahuan diaktifkan dan dengan tag Pemberitahuan

MKV ditambahkan ke fragmen.5. Pilih antrean Amazon SQS di konsol Amazon SQS, lalu pilihMengirim dan menerima pesanuntuk

antrean Amazon SQS.6. Polling untuk pesan. Perintah ini harus menampilkan semua pemberitahuan yang dihasilkan

olehPutMediasesi. Untuk informasi tentang polling, lihatPolling pendek dan panjang Amazon SQS.

34

Amazon Kinesis Video Streams Panduan DeveloperPerlindungan Data

Keamanan di Amazon Kinesis VideoStreams

Keamanan cloud di AWS menjadi prioritas tertinggi. Sebagai pelanggan AWS, Anda akan mendapatkanmanfaat dari pusat data dan arsitektur jaringan yang dibangun untuk memenuhi persyaratan organisasiyang paling sensitif terhadap keamanan.

Keamanan adalah tanggung jawab bersama antara AWS dan Anda. Model tanggung jawab bersamamenggambarkan ini sebagai keamanan dari cloud dan keamanan di dalam cloud:

• Keamanan cloud – AWS berfungsi melindungi infrastruktur yang menjalankan layanan AWS Cloud AWS.AWS juga menyediakan layanan yang dapat Anda gunakan dengan aman. Keefektifan keamanan kamidiuji dan diverifikasi secara berkala oleh auditor pihak ketiga sebagai bagian dari program kepatuhanAWS. Untuk mempelajari program kepatuhan yang berlaku di Kinesis Video Streams, lihatAWSLayanandalam Lingkup oleh Program Kepatuhan.

• Keamanan dalam cloud – Tanggung jawab Anda ditentukan oleh layanan AWS yang Anda gunakan.Anda juga bertanggung jawab atas faktor lain termasuk sensitivitas data Anda, persyaratan organisasiAnda, serta undang-undang dan peraturan yang berlaku.

Dokumentasi ini membantu Anda memahami cara menerapkan model tanggung jawab bersama saatmenggunakan Kinesis Video Streams. Topik berikut menunjukkan kepada Anda cara mengonfigurasiKinesis Video Streams untuk memenuhi tujuan keamanan dan kepatuhan Anda. Anda juga akanmempelajari cara menggunakan layanan AWS lain yang dapat membantu Anda memantau danmengamankan sumber daya Kinesis Video Streams Anda.

Topik• Perlindungan Data di Arus Kinesis Video Streams Streesis (p. 35)• Mengontrol Akses ke Sumber Daya Kinesis Video Streams Menggunakan IAM (p. 39)• Mengontrol Akses ke Sumber Daya Kinesis Video Streams MenggunakanAWS IoT (p. 42)• Pemantauan Amazon Kinesis Video Streams (p. 49)• Validasi Amazon Kinesis Video Streams (p. 49)• Ketahanan di Amazon Kinesis Video Streams (p. 50)• Keamanan Infrastruktur di Kinesis Video Streams (p. 50)• Praktik Terbaik Keamanan untuk Arus Kinesis Video Streams Streesis (p. 50)

Perlindungan Data di Arus Kinesis Video StreamsStreesis

Menggunakan enkripsi sisi serverAWS Key Management Service(AWS KMS) kunci memudahkan Andauntuk memenuhi persyaratan manajemen data yang ketat dengan mengenkripsi data Anda saat istirahat diAmazon Kinesis Video Streams.

Topik• Apa Itu Enkripsi Sisi-Server untuk Arus Kinesis Video Streams? (p. 36)

35

Amazon Kinesis Video Streams Panduan DeveloperApa Itu Enkripsi Sisi-Server untuk

Arus Kinesis Video Streams?

• Biaya, Wilayah, dan Pertimbangan Kinerja (p. 36)• Bagaimana Saya Memulai Enkripsi Sisi-Server? (p. 37)• Membuat dan Menggunakan User-GeneratedAWS KMSKunci master (p. 37)• Izin untuk Menggunakan Buatan PenggunaAWS KMSKunci master (p. 37)

Apa Itu Enkripsi Sisi-Server untuk Arus Kinesis VideoStreams?Enkripsi sisi server adalah fitur di Kinesis Video Streams yang secara otomatis mengenkripsi data sebelumdisimpan dengan menggunakanAWS KMSkunci utama pelanggan (CMK) yang Anda tentukan. Datadienkripsi sebelum ditulis ke lapisan penyimpanan aliran Kinesis Video Streams, dan didekripsi setelahdiambil dari penyimpanan. Akibatnya, data Anda selalu dienkripsi saat istirahat dalam layanan KinesisVideo Streams.

Dengan enkripsi sisi server, produsen dan konsumen aliran video Kinesis Anda tidak perlu mengelolakunci master atau operasi kriptografi. Jika retensi data diaktifkan, data Anda secara otomatisdienkripsi saat masuk dan keluar dari Kinesis Video Streams, sehingga data Anda saat istirahatdienkripsi.AWS KMSmenyediakan semua kunci utama yang digunakan oleh fitur enkripsi sisi server.AWSKMSmempermudah penggunaan CMK untuk Kinesis Video Streams yang dikelola oleh AWS, yangditentukan penggunaAWS KMSCMK, atau master key yang diimpor keAWS KMSlayanan

Biaya, Wilayah, dan Pertimbangan KinerjaSaat Anda menerapkan enkripsi sisi server, Anda tunduk padaAWS KMSPenggunaan API dan biayautama. Tidak seperti kebiasaanAWS KMSkunci utama kunci utama kunci utama kunci utama(Default)aws/kinesis-videokunci utama pelanggan (CMK) ditawarkan secara gratis. Namun, Anda tetap harusmembayar biaya penggunaan API yang dikeluarkan Kinesis Video Streams atas nama Anda.

Biaya penggunaan API berlaku untuk setiap CMK, termasuk yang khusus. Skala biaya KMS dengan jumlahkredensi pengguna yang Anda gunakan pada produsen data dan konsumen Anda karena setiap kredensipengguna memerlukan panggilan API unikAWS KMS.

Berikut ini menjelaskan biaya menurut sumber daya:

Kunci

• CMK untuk Kinesis Video Streams yang dikelola olehAWSalias =aws/kinesis-video) gratis.• Buatan penggunaAWS KMSkunci tundukAWS KMSbiaya kunci. Untuk informasi selengkapnya,

lihatHarga AWS Key Management Service.

AWS KMSPenggunaan APIPermintaan API untuk menghasilkan kunci enkripsi data baru atau untuk mengambil kunci enkripsi yangada meningkat saat lalu lintas meningkat, dan tunduk padaAWS KMSbiaya penggunaan Untuk informasiselengkapnya, lihatHarga AWS Key Management Service Penggunaan.

Kinesis Video Streams menghasilkan permintaan utama bahkan ketika retensi diatur ke 0 (tanpa retensi).

Ketersediaan Enkripsi Sisi-Server menurut WilayahEnkripsi sisi server dari aliran video Kinesis tersedia di semua Wilayah AWS tempat Kinesis Video Streamstersedia.

36

Amazon Kinesis Video Streams Panduan DeveloperBagaimana Saya Memulai Enkripsi Sisi-Server?

Bagaimana Saya Memulai Enkripsi Sisi-Server?Enkripsi sisi server selalu diaktifkan pada Arus video Kinesis. Jika kunci yang disediakan pengguna tidakditentukan saat streaming dibuat, kunci default (disediakan oleh Kinesis Video Streams) akan digunakan.

User-disediakanAWS KMSkunci master harus ditetapkan ke aliran video Kinesis saat dibuat. Anda nantinyatidak dapat menetapkan kunci yang berbeda ke stream menggunakanUpdateStreamAPI

Anda dapat menetapkan yang disediakan penggunaAWS KMSkunci utama untuk aliran video Kinesisdalam dua cara:

• Saat membuat aliran video Kinesis diAWS Management Console, tentukanAWS KMSkunci utama kunciutama kunci utama diEnkripsitab padaMembuat streaming video baruhalaman.

• Saat membuat aliran video Kinesis menggunakanCreateStreamAPI, tentukan ID kuncidiKmsKeyIdparameter

Membuat dan Menggunakan User-GeneratedAWSKMSKunci masterBagian ini menjelaskan cara membuat dan menggunakan milik Anda sendiriAWS KMSkunci master alih-alih menggunakan kunci utama yang dikelola oleh Amazon Kinesis Video Streams.

Membuat Buatan PenggunaAWS KMSKunci masterUntuk informasi tentang cara membuat kunci utama Anda sendiri, lihatMembuat kuncidi dalamAWS KeyManagement ServicePanduan Pengembang. Setelah Anda membuat kunci untuk akun Anda, layananKinesis Video Streams mengembalikan kunci ini diKunci utama KMSDaftar.

Menggunakan User-GeneratedAWS KMSKunci masterSetelah izin yang benar diterapkan ke konsumen, produsen, dan administrator Anda, Anda dapatmenggunakan kustomAWS KMSkunci master Anda sendiriAWSakun atau lainnyaAWSakun SemuaAWSKMSkunci utama di akun Anda muncul diKunci utama KMS KMSdaftar di konsol.

Untuk menggunakan kustomAWS KMSkunci utama yang terletak di akun lain, Anda harus memiliki izinuntuk menggunakan kunci tersebut. Anda juga harus membuat aliran menggunakanCreateStreamAPIAnda tidak dapat menggunakanAWS KMSkunci master dari akun yang berbeda dalam aliran yang dibuat dikonsol.

Note

ParameterAWS KMSkunci tidak diakses sampaiPutMediaatauGetMediaoperasi dijalankan. Inimemiliki hasil sebagai berikut:

• Jika kunci yang Anda tentukan tidak ditemukan, kunciCreateStreamoperasi berhasil,tapiPutMediadanGetMediaoperasi pada aliran gagal.

• Jika Anda menggunakan kunci master yang disediakan (aws/kinesis-video), kuncinya tidakada di akun Anda sampai yang pertamaPutMediaatauGetMediaoperasi dilakukan.

Izin untuk Menggunakan Buatan PenggunaAWSKMSKunci masterSebelum Anda dapat menggunakan enkripsi sisi server dengan buatan penggunaAWS KMSkunci master,Anda harus mengkonfigurasiAWS KMSkebijakan kunci untuk mengizinkan enkripsi aliran dan enkripsi dan

37

Amazon Kinesis Video Streams Panduan DeveloperIzin untuk Menggunakan Buatan

PenggunaAWS KMSKunci master

dekripsi catatan aliran. Untuk contoh dan informasi selengkapnya tentangAWS KMSizin, lihatIzin API KMSAWS KMS: Tindakan dan Referensi Sumber Daya.

Note

Penggunaan kunci layanan default untuk enkripsi tidak memerlukan penerapan izin IAM khusus.

Sebelum Anda menggunakan buatan penggunaAWS KMSkunci utama, pastikan bahwa produsen dankonsumen aliran video Kinesis Anda (prinsipal IAM) adalah pengguna diAWS KMSkebijakan utamautama utama utama utama utama. Jika tidak, menulis dan membaca dari aliran akan gagal, yang padaakhirnya dapat mengakibatkan hilangnya data, pemrosesan tertunda, atau aplikasi yang digantung. Andadapat mengelola izin untukAWS KMSkunci menggunakan kebijakan IAM. Untuk informasi selengkapnya,lihatMenggunakan Kebijakan IAM dengan AWS KMS.

Contoh izin produsenProduser aliran video Kinesis Anda harus memilikikms:GenerateDataKeyizin:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, { "Effect": "Allow", "Action": [ "kinesis-video:PutMedia", ], "Resource": "arn:aws:kinesis-video:*:123456789012:MyStream" } ]}

Contoh izin konsumenKonsumen aliran video Kinesis Anda harus memilikikms:Decryptizin:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab" }, { "Effect": "Allow", "Action": [ "kinesis-video:GetMedia", ], "Resource": "arn:aws:kinesis-video:*:123456789012:MyStream" }

38

Amazon Kinesis Video Streams Panduan DeveloperMengontrol Akses ke Sumber Daya

Kinesis Video Streams Menggunakan IAM

]}

Mengontrol Akses ke Sumber Daya Kinesis VideoStreams Menggunakan IAM

Dengan menggunakanAWS Identity and Access Management(IAM) dengan Amazon Kinesis VideoStreams, Anda dapat mengontrol apakah pengguna dalam organisasi Anda dapat melakukan tugasmenggunakan operasi Kinesis Video Streams API tertentu dan apakah mereka dapat menggunakansumber daya AWS tertentu.

Untuk informasi selengkapnya tentang IAM, lihat hal berikut:

• AWS Identity and Access Management (IAM)• Memulai• Panduan Pengguna IAM

Daftar Isi• Sintaks Kebijakan (p. 39)• Tindakan untuk Arus Kinesis Video Streams (p. 40)• Nama Sumber Daya Amazon (ARN) untuk Kinesis Video Streams (p. 40)• Memberikan Akses Akun IAM Lainnya ke Aliran Video Kinesis (p. 40)• Contoh Kebijakan untuk Arus Kinesis Video Streams Streesis (p. 41)

Sintaks Kebijakankebijakan IAM adalah dokumen JSON yang terdiri dari satu atau beberapa pernyataan. Setiap pernyataanmemiliki struktur sebagai berikut:

{ "Statement":[{ "Effect":"effect", "Action":"action", "Resource":"arn", "Condition":{ "condition":{ "key":"value" } } } ]}

Ada berbagai elemen yang membuat pernyataan:

• Efek: ParameterefekdapatAllowatauDeny. Secara default, para pengguna IAM tidak memiliki izin untukmenggunakan sumber daya dan tindakan API, jadi semua permintaan akan ditolak. izin eksplisit akanmenggantikan izin default. Penolakan secara eksplisit akan mengabaikan izin apa pun.

• Action: Aksi adalah tindakan API tertentu yang Anda izinkan atau tidak izinkan.• Resource: Sumber daya yang dipengaruhi oleh tindakan. Untuk menentukan sumber daya dalam sebuah

pernyataan, Anda perlu menggunakan Amazon Resource Name (ARN)

39

Amazon Kinesis Video Streams Panduan DeveloperTindakan untuk Arus Kinesis Video Streams

• Condition: Ketentuan bersifat opsional. Syarat-syarat ini dapat digunakan untuk mengendalikan kapankebijakan Anda berlaku.

Saat Anda membuat dan mengelola kebijakan IAM, Anda mungkin ingin menggunakanGeneratorKebijakan IAMdanSimulator Kebijakan IAM.

Tindakan untuk Arus Kinesis Video StreamsDalam pernyataan kebijakan IAM, Anda dapat menentukan tindakan API apapun dari layanan apa pun yang mendukung IAM. Untuk Kinesis Video Streams,gunakan prefiks berikut ini dengan nama dari tindakan API: kinesisvideo:.Misalnya:kinesisvideo:CreateStream,kinesisvideo:ListStreams,dankinesisvideo:DescribeStream.

Untuk menetapkan beberapa tindakan dalam satu pernyataan, pisahkan tindakan-tindakan tersebutmenggunakan koma seperti berikut:

"Action": ["kinesisvideo:action1", "kinesisvideo:action2"]

Anda juga dapat menentukan beberapa tindakan menggunakan wildcard. Misalnya, Anda dapatmenentukan semua tindakan yang namanya dimulai dengan kata “Get” sebagai berikut:

"Action": "kinesisvideo:Get*"

Untuk menentukan semua operasi Kinesis Video Streams, gunakan tanda bintang (*) sebagai berikut:

"Action": "kinesisvideo:*"

Untuk daftar lengkap tindakan API Kinesis Video Streams, lihatReferensi API Kinesis Video Streams.

Nama Sumber Daya Amazon (ARN) untuk KinesisVideo StreamsSetiap pernyataan kebijakan IAM berlaku untuk sumber daya yang Anda tentukan menggunakan ARN.

Gunakan format sumber daya ARN berikut untuk Kinesis Video Streams:

arn:aws:kinesisvideo:region:account-id:stream/stream-name/code

Misalnya:

"Resource": arn:aws:kinesisvideo::*:111122223333:stream/my-stream/0123456789012

Anda bisa mendapatkan ARN aliran menggunakanDescribeStream.

Memberikan Akses Akun IAM Lainnya ke Aliran VideoKinesisAnda mungkin perlu memberikan izin ke akun IAM lain untuk melakukan operasi pada aliran video Kinesis.Ringkasan berikut menjelaskan langkah-langkah umum untuk memberikan akses ke streaming video diseluruh akun:

40

Amazon Kinesis Video Streams Panduan DeveloperContoh kebijakan

1. Dapatkan ID akun 12 digit dari akun yang ingin Anda beri izin untuk melakukan operasi di aliran Anda(misalnya, 111111111111).

2. Buat kebijakan terkelola pada akun yang memiliki aliran yang memungkinkan tingkat akses yangingin Anda berikan. Misalnya kebijakan untuk sumber daya Kinesis Video Streams, lihatContohkebijakan (p. 41)di bagian selanjutnya.

3. Buat peran, menentukan akun yang Anda beri izin, dan lampirkan kebijakan yang Anda buat padalangkah sebelumnya.

4. Membuat kebijakan terkelola yang memungkinkanAssumeRoletindakan pada peran yang Anda buatpada langkah sebelumnya. Sebagai contoh, peran tersebut mungkin terlihat seperti berikut:

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::123456789012:role/CustomRole" }}

Untuk step-by-step petunjuk tentang pemberian akses lintas akun, lihatMendelegasikan Akses Lintas AkunAWS Menggunakan Peran IAM.

Contoh Kebijakan untuk Arus Kinesis Video StreamsStreesisContoh kebijakan berikut menunjukkan bagaimana Anda dapat mengontrol akses pengguna ke aliran videoKinesis Anda.

Example 1: Izinkan pengguna mendapatkan data dari aliran video Kinesis apa pun

Kebijakan ini memungkinkan pengguna atau grup untukmelakukanDescribeStream,GetDataEndpoint,GetMedia,ListStreams,danListTagsForStreamoperasi pada setiap aliran video Kinesis. Kebijakan ini sesuai untuk penggunayang bisa mendapatkan data dari streaming video apa pun.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesisvideo:Describe*", "kinesisvideo:Get*", "kinesisvideo:List*" ], "Resource": "*" } ]}

Example 2: Memungkinkan pengguna untuk membuat aliran video Kinesis dan menulis data untukitu

Kebijakan ini memungkinkan pengguna atau grup untuk melakukanCreateStreamdanPutMediaoperasi.Kebijakan ini sesuai untuk kamera keamanan yang dapat membuat aliran video dan mengirim data kesana.

41

Amazon Kinesis Video Streams Panduan DeveloperMengontrol Akses ke Sumber Daya Kinesis

Video Streams MenggunakanAWS IoT

{ "Statement": [ { "Effect": "Allow", "Action": [ "kinesisvideo:CreateStream", "kinesisvideo:PutMedia" ], "Resource": "*" } ]}

Example 3: Izinkan pengguna akses penuh ke semua sumber daya Video Streesis Kinesis VideoStreams

Kebijakan ini memungkinkan pengguna atau grup untuk melakukan operasi Kinesis Video Streams padasumber daya apa pun. Kebijakan ini sesuai untuk administrator.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kinesisvideo:*", "Resource": "*" } ]}

Example 4: Memungkinkan pengguna untuk menulis data ke aliran video Kinesis tertentu

Kebijakan ini memungkinkan pengguna atau grup untuk menulis data ke streaming video tertentu.Kebijakan ini sesuai untuk perangkat yang dapat mengirim data ke satu aliran.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "kinesisvideo:PutMedia", "Resource": "arn:aws:kinesisvideo:us-west-2:123456789012:stream/your_stream/0123456789012" } ]}

Mengontrol Akses ke Sumber Daya Kinesis VideoStreams MenggunakanAWS IoT

Bagian ini menjelaskan cara mengaktifkan perangkat (misalnya, kamera) untuk mengirim data audio/video ke satu aliran video Kinesis tertentu saja. Anda dapat melakukan ini dengan menggunakanAWSIoTPenyedia kredensi dan peran AWS Identity and Access Management (IAM).

Perangkat dapat menggunakan sertifikat X.509 untuk terhubung ke AWS IoT menggunakan protokolautentikasi bersama TLS. Layanan AWS lainnya (misalnya, Kinesis Video Streams) tidak mendukung

42

Amazon Kinesis Video Streams Panduan DeveloperIoT ThingName sebagai Nama Stream

autentikasi berbasis sertifikat, tetapi dapat dipanggil menggunakan kredensi AWS dalam format AWSSignature Version 4. Algoritma Signature Version 4 biasanya mengharuskan pemanggil untuk memilikiaccess key ID dan secret access key. AWS IoT memiliki penyedia kredensi yang memungkinkanAnda menggunakan sertifikat X.509 bawaan sebagai identitas perangkat unik untuk mengautentikasipermintaan AWS (misalnya, permintaan ke Kinesis Video Streams). Hal ini menghilangkan kebutuhanuntuk menyimpan access key ID dan secret access key di perangkat Anda.

Penyedia kredensi mengautentikasi klien (dalam hal ini, Kinesis Video Streams SDK yang berjalanpada kamera tempat Anda ingin mengirim data ke streaming video) menggunakan sertifikat X.509dan mengeluarkan token keamanan sementara, hak istimewa terbatas. Token dapat digunakan untukmenandatangani dan mengautentikasi permintaan AWS apa pun (dalam hal ini, panggilan ke Kinesis VideoStreams). Untuk informasi selengkapnya, lihatMengizinkan Panggilan Langsung ke Layanan AWS.

Cara mengautentikasi permintaan kamera Anda ke Kinesis Video Streams mengharuskan Anda membuatdan mengonfigurasi peran IAM dan melampirkan kebijakan IAM yang sesuai ke peran tersebut sehinggapenyedia kredensil IoT dapat mengambil peran tersebut atas nama Anda.

Untuk informasi lebih lanjut tentangAWS IoT, LihatDokumentasi AWS IoT Core. Untuk informasiselengkapnya tentang tag IAM, lihat AWS Identity and Access Management (IAM).

Topik• IoT ThingName sebagai Nama Stream (p. 43)• IoT CertificateId sebagai Nama Stream (p. 48)

IoT ThingName sebagai Nama StreamTopik

• Langkah 1: Buat Jenis Hal IoT dan Hal IoT (p. 43)• Langkah 2: Buat Peran IAM untuk Diasumsikan oleh IoT (p. 44)• Langkah 3: Membuat dan Mengkonfigurasi Sertifikat X.509 (p. 46)• Langkah 4: Uji Kredensi IoT dengan Aliran Video Kinesis Anda (p. 46)• Langkah 5: Menerapkan Sertifikat dan Kredensi IoT pada Sistem File Kamera Anda dan Streaming

Data ke Streaming Video Anda (p. 46)

Langkah 1: Buat Jenis Hal IoT dan Hal IoTDalam IoT, sesuatu adalah representasi dari perangkat tertentu atau entitas logis. Dalam hal ini, hal IoTmewakili aliran video Kinesis Anda yang ingin Anda konfigurasikan kontrol akses tingkat sumber daya.Untuk membuat sesuatu, pertama, Anda harus membuat jenis hal IoT. Tipe hal IoT memungkinkan Andauntuk menyimpan deskripsi dan informasi konfigurasi yang umum untuk semua hal yang terkait dengan tipehal yang sama.

1. Contoh perintah berikut menciptakan jenis halkvs_example_camera:

aws --profile default iot create-thing-type --thing-type-name kvs_example_camera > iot-thing-type.json

2. Dan perintah contoh ini menciptakankvs_example_camera_streamhalkvs_example_camerajenishal:

43

Amazon Kinesis Video Streams Panduan DeveloperIoT ThingName sebagai Nama Stream

aws --profile default iot create-thing --thing-name kvs_example_camera_stream --thing-type-name kvs_example_camera > iot-thing.json

Langkah 2: Buat Peran IAM untuk Diasumsikan oleh IoTPeran IAM serupa dengan pengguna IAM, di mana peran adalah identitas AWS dengan kebijakan izin yangmenentukan apa yang dapat dan tidak dapat dilakukan identitas di AWS. Peran dapat diasumsikan olehsiapa saja yang membutuhkannya. Saat Anda mengambil peran, kredensi keamanan sementara untuk sesiperan Anda akan diberikan.

Peran yang Anda buat dalam langkah ini dapat diasumsikan oleh IoT untuk mendapatkan kredensisementara dari layanan token keamanan (STS) saat melakukan permintaan otorisasi kredensi dari klien.Dalam hal ini, klien adalah Kinesis Video Streams SDK yang berjalan pada kamera Anda.

Lakukan langkah-langkah berikut untuk membuat dan mengonfigurasi peran IAM ini:

1. Buatlah IAM role.

Contoh perintah berikut membuat IAM role yang disebutKVSCameraCertificateBasedIAMRole:

aws --profile default iam create-role --role-name KVSCameraCertificateBasedIAMRole --assume-role-policy-document 'file://iam-policy-document.json' > iam-role.json

Anda dapat menggunakan kebijakan kepercayaan berikut untukiam-policy-document.json:

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"credentials.iot.amazonaws.com" }, "Action":"sts:AssumeRole" } ]}

2. Selanjutnya, Anda harus melampirkan kebijakan izin pada peran IAM yang Anda buat di atas.Kebijakan izin ini memungkinkan kontrol akses selektif (subset operasi yang didukung) untuk sumberdaya AWS. Dalam hal ini, sumber daya AWS adalah aliran video yang Anda inginkan untuk mengirimdata kamera Anda. Dengan kata lain, setelah semua langkah konfigurasi selesai, kamera ini akandapat mengirim data hanya ke aliran video ini.

aws --profile default iam put-role-policy --role-name KVSCameraCertificateBasedIAMRole --policy-name KVSCameraIAMPolicy --policy-document 'file://iam-permission-document.json'

Anda dapat menggunakan kebijakan IAM berikut JSON untuk iam-permission-document.json:

{ "Version": "2012-10-17",

44

Amazon Kinesis Video Streams Panduan DeveloperIoT ThingName sebagai Nama Stream

"Statement": [ { "Effect": "Allow", "Action": [ "kinesisvideo:DescribeStream", "kinesisvideo:PutMedia", "kinesisvideo:TagStream", "kinesisvideo:GetDataEndpoint" ], "Resource": "arn:aws:kinesisvideo:*:*:stream/${credentials-iot:ThingName}/*" } ]}

Perhatikan bahwa kebijakan ini mengotorisasi tindakan yang ditentukan hanya pada aliran video(sumber daya AWS) yang ditentukan oleh placeholder ($ {credentials-iot:ThingName}). Placeholder inimengambil nilai atribut hal IoTThingNameketika penyedia kredensi IoT mengirimkan nama aliran videodalam permintaan.

3. Selanjutnya, buat Alias Peran untuk Peran IAM Anda. Alias peran adalah model data alternatif yangmenunjuk ke peran IAM. Permintaan penyedia kredensil IoT harus menyertakan alias peran untukmenunjukkan peran IAM mana yang harus diasumsikan untuk mendapatkan kredensi sementara dariSTS.

Perintah contoh berikut membuat alias peran yang disebutKvsCameraIoTRoleAlias,

aws --profile default iot create-role-alias --role-alias KvsCameraIoTRoleAlias --role-arn $(jq --raw-output '.Role.Arn' iam-role.json) --credential-duration-seconds 3600 > iot-role-alias.json

4. Sekarang Anda dapat membuat kebijakan yang akan memungkinkan IoT untuk mengambil perandengan sertifikat (setelah dilampirkan) menggunakan alias peran.

Perintah contoh berikut membuat kebijakan untuk IoT yang disebutKvsCameraIoTPolicy.

aws --profile default iot create-policy --policy-name KvsCameraIoTPolicy --policy-document 'file://iot-policy-document.json'

Anda dapat menggunakan perintah berikut untuk membuat iot-policy-document.json dokumen JSON:

cat > iot-policy-document.json <<EOF{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "iot:Connect" ], "Resource":"$(jq --raw-output '.roleAliasArn' iot-role-alias.json)" }, { "Effect":"Allow", "Action":[ "iot:AssumeRoleWithCertificate" ], "Resource":"$(jq --raw-output '.roleAliasArn' iot-role-alias.json)"

45

Amazon Kinesis Video Streams Panduan DeveloperIoT ThingName sebagai Nama Stream

} ]}EOF

Langkah 3: Membuat dan Mengkonfigurasi Sertifikat X.509Komunikasi antara perangkat (streaming video Anda) dan AWS IoT dilindungi melalui penggunaan sertifikatX.509.

1. Buat sertifikat yang harus Anda lampirkan kebijakan untuk IoT yang Anda buat di atas.

aws --profile default iot create-keys-and-certificate --set-as-active --certificate-pem-outfile certificate.pem --public-key-outfile public.pem.key --private-key-outfile private.pem.key > certificate

2. Lampirkan kebijakan untuk IoT (KvsCameraIoTPolicydibuat di atas) untuk sertifikat ini.

aws --profile default iot attach-policy --policy-name KvsCameraIoTPolicy --target $(jq --raw-output '.certificateArn' certificate)

3. Lampirkan hal IoT Anda (kvs_example_camera_stream) ke sertifikat yang baru saja Anda buat:

aws --profile default iot attach-thing-principal --thing-name kvs_example_camera_stream --principal $(jq --raw-output '.certificateArn' certificate)

4. Untuk mengotorisasi permintaan melalui penyedia kredensi IoT, Anda memerlukan titik akhirkredensi IoT yang unik untuk ID akun AWS Anda. Anda dapat menggunakan perintah berikut untukmendapatkan titik akhir kredenesis IoT.

aws --profile default iot describe-endpoint --endpoint-type iot:CredentialProvider --output text > iot-credential-provider.txt

5. Selain sertifikat X.509 yang dibuat di atas, Anda juga harus memiliki sertifikat CA untuk membangunkepercayaan dengan layanan back-end melalui TLS. Anda bisa mendapatkan sertifikat CAmenggunakan perintah berikut:

curl --silent 'https://www.amazontrust.com/repository/SFSRootCAG2.pem' --output cacert.pem

Langkah 4: Uji Kredensi IoT dengan Aliran Video Kinesis AndaSekarang Anda dapat menguji kredensi IoT yang telah Anda atur sejauh ini.

1. Pertama, buat aliran video Kinesis yang ingin Anda uji konfigurasi ini.

46

Amazon Kinesis Video Streams Panduan DeveloperIoT ThingName sebagai Nama Stream

Important

Buat streaming video dengan nama yang identik dengan nama benda IoT yang Anda buat dilangkah sebelumnya (kvs_example_camera_stream).

aws kinesisvideo create-stream --data-retention-in-hours 24 --stream-name kvs_example_camera_stream

2. Selanjutnya, hubungi penyedia kredensi IoT untuk mendapatkan kredensi sementara:

curl --silent -H "x-amzn-iot-thingname:kvs_example_camera_stream" --cert certificate.pem --key private.pem.key https://IOT_GET_CREDENTIAL_ENDPOINT/role-aliases/KvsCameraIoTRoleAlias/credentials --cacert ./cacert.pem > token.json

Note

Anda dapat menggunakan perintah berikut untuk mendapatkanIOT_GET_CREDENTIAL_ENDPOINT:

IOT_GET_CREDENTIAL_ENDPOINT=`cat iot-credential-provider.txt`

Output JSON berisi accessKey, secretKey, dan SessionToken yang dapat Anda gunakan untukmengakses Kinesis Video Streams.

3. Sekarang, untuk pengujian Anda, Anda dapat menggunakan kredensi ini untuk memanggil KinesisVideo Streams DescribeStream API untuk sampelkvs_example_camera_streamArus video

AWS_ACCESS_KEY_ID=$(jq --raw-output '.credentials.accessKeyId' token.json) AWS_SECRET_ACCESS_KEY=$(jq --raw-output '.credentials.secretAccessKey' token.json) AWS_SESSION_TOKEN=$(jq --raw-output '.credentials.sessionToken' token.json) aws kinesisvideo describe-stream --stream-name kvs_example_camera_stream

Langkah 5: Menerapkan Sertifikat dan Kredensi IoT pada SistemFile Kamera Anda dan Streaming Data ke Streaming Video Anda

Note

Langkah-langkah di bagian ini menjelaskan pengiriman media ke aliran video Kinesis dari kamerayang menggunakanPerpustakaan produser C ++.

1. Salin sertifikat X.509, kunci pribadi, dan sertifikat CA yang dihasilkan dalam langkah-langkah di ataske sistem file kamera Anda. Anda perlu menentukan jalur tempat penyimpanan file-file ini, nama aliasperan, dan titik akhir kredensil IOT untuk menjalankan perintah gst-launch-1.0 atau aplikasi sampelAnda.

2. Perintah contoh berikut menggunakan otorisasi sertifikat IoT untuk mengirim video ke Kinesis VideoStreams:

47

Amazon Kinesis Video Streams Panduan DeveloperIoT CertificateId sebagai Nama Stream

$ gst-launch-1.0 rtspsrc location=rtsp://YourCameraRtspUrl short-header=TRUE ! rtph264depay ! video/x-h264, format=avc,alignment=au ! h264parse ! kvssink stream-name="kvs_example_camera_stream" iot-certificate="iot-certificate,endpoint=iot-credential-endpoint-host-name,cert-path=/path/to/certificate.pem,key-path=/path/to/private.pem.key,ca-path=/path/to/cacert.pem,role-aliases=KvsCameraIoTRoleAlias"

IoT CertificateId sebagai Nama StreamJika Anda ingin mewakili perangkat Anda (misalnya, kamera Anda) melalui hal IoT tetapi mengotorisasinama aliran yang berbeda, maka Anda dapat menggunakan IoTcertifiacateIdatribut sebagai namastream Anda dan berikan izin Kinesis Video Streams di streaming menggunakan IoT. Langkah-langkahuntuk mencapai hal ini mirip dengan yang diuraikan di atas, dengan beberapa perubahan.

• Ubah kebijakan izin ke peran IAM Anda (iam-permission-document.json) sebagai berikut:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesisvideo:DescribeStream", "kinesisvideo:PutMedia", "kinesisvideo:TagStream", "kinesisvideo:GetDataEndpoint" ], "Resource": "arn:aws:kinesisvideo:*:*:stream/${credentials-iot:AwsCertificateId}/*" } ]}

Note

ARN sumber daya menggunakan ID sertifikat sebagai placeholder untuk nama stream. Izin IAMakan berfungsi saat Anda menggunakan id sertifikat sebagai nama aliran. Dapatkan ID sertifikatdari sertifikat sehingga kita dapat menggunakannya sebagai nama aliran di berikut menjelaskanaliran api panggilan.

export CERTIFICATE_ID=`cat certificate | jq --raw-output '.certificateId'jq --raw-output '.certificateId'`

• Verifikasi perubahan ini menggunakan perintah Kinesis Video Streams describe-stream CLI:

AWS_ACCESS_KEY_ID=$(jq --raw-output '.credentials.accessKeyId' token.json) AWS_SECRET_ACCESS_KEY=$(jq --raw-output '.credentials.secretAccessKey' token.json) AWS_SESSION_TOKEN=$(jq --raw-output '.credentials.sessionToken' token.json) aws kinesisvideo describe-stream --stream-name ${CERTIFICATE_ID}

• Lulus CertificaTad ke penyedia kredensil IoT diAplikasi sampeldi Kinesis Video Streams C++ SDK:

48

Amazon Kinesis Video Streams Panduan DeveloperMemantau

credential_provider = make_unique<IotCertCredentialProvider>(iot_get_credential_endpoint, cert_path, private_key_path, role_alias, ca_cert_path, certificateId);

Note

Perhatikan bahwa Anda meneruskan thingname ke penyedia kredenial IoT. Anda dapatmenggunakan getenv untuk meneruskan thingname ke aplikasi demo yang mirip denganmeneruskan atribut IoT lainnya. Gunakan ID sertifikat sebagai nama aliran dalam parameterbaris perintah saat Anda menjalankan aplikasi sampel.

Pemantauan Amazon Kinesis Video StreamsKinesis Video Streams menyediakan fungsi pemantauan untuk aliran pengiriman Anda. Untuk informasiselengkapnya, lihat Memantau (p. 152).

Validasi Amazon Kinesis Video StreamsAuditor pihak ke tiga menilai keamanan dan kepatuhan Amazon Kinesis Video Streams sebagai bagian daribeberapaAWSprogram kepatuhan. Hal ini mencakup SOC, PCI, HIPAA, dan lainnya.

Untuk daftar layanan AWS yang termasuk dalam cakupan program kepatuhan tertentu, lihat Layanandalam Lingkup AWS menurut Program Kepatuhan. Untuk informasi umum, lihat Program Kepatuhan AWS.

Anda bisa mengunduh laporan audit pihak ke tiga menggunakan AWS Artifact. Untuk informasiselengkapnya, lihat Mengunduh Laporan di AWS Artifact.

Tanggung jawab kepatuhan Anda saat menggunakan Kinesis Video Streams ditentukan oleh sensitivitasdata Anda, tujuan kepatuhan perusahaan Anda, serta undang-undang dan peraturan yang berlaku.Jika penggunaan Kinesis Video Streams Anda tunduk pada standar kepatuhan seperti HIPAA atauPCI,AWSmenyediakan sumber daya untuk membantu:

• Panduan Quick Start Keamanan dan Kepatuhan – Panduan deployment ini membahas pertimbanganarsitektur dan memberikan langkah untuk menerapkan lingkungan dasar yang berfokus pada keamanandan kepatuhan di AWS.

• Laporan Resmi Perancangan untuk Keamanan dan Kepatuhan HIPAA – Laporan resmi ini akanmenguraikan bagaimana perusahaan dapat menggunakan AWS untuk membuat aplikasi yang mematuhiHIPAA.

• AWSSumber daya kepatuhan— Kumpulan buku kerja dan panduan ini mungkin berlaku untuk industridan lokasi Anda

• AWS Config— Layanan AWS ini menilai seberapa baik konfigurasi sumber daya Anda mematuhi praktikinternal, pedoman industri, dan peraturan

• AWS Security Hub— Layanan AWS ini memberikan pandangan komprehensif tentang status keamananAnda di dalamAWSyang membantu Anda memeriksa kepatuhan terhadap standar industri dan praktikterbaik yang terkait dengan keamanan

49

Amazon Kinesis Video Streams Panduan DeveloperKetahanan

Ketahanan di Amazon Kinesis Video StreamsInfrastruktur global AWS dibangun di sekitar Wilayah AWS dan Availability Zone. AWS Wilayahmenyediakan beberapa Availability Zone yang terpisah dan terisolasi secara fisik, yang terhubungdengan jaringan yang memiliki latensi rendah, throughput tinggi, dan sangat berkelebihan. DenganAvailability Zone, Anda dapat merancang dan mengoperasikan aplikasi dan basis data yang secaraotomatis melakukan fail over di antara Availability Zone tanpa gangguan. Availability Zone memilikiketersediaan yang lebih baik, menoleransi kegagalan, dan dapat diskalakan dibandingkan satu ataubeberapa infrastruktur pusat data tradisional.

Untuk informasi selengkapnya tentang Wilayah AWS dan Availability Zone, lihat AWS Infrastruktur Global.

Keamanan Infrastruktur di Kinesis Video StreamsSebagai layanan terkelola, Amazon Kinesis Video Streams dilindungi olehAWSprosedur keamananjaringan global yang dijelaskan dalamAmazon Web Services: Whitepaper Ikhtisar Proses Keamanan.

Anda menggunakanAWSpanggilan API yang dipublikasikan untuk mengakses Kinesis Video Streamsmelalui jaringan. Klien harus mendukung Keamanan Lapisan Pengangkutan (TLS) 1.2 atau versi yang lebihbaru. Klien juga harus mendukung suite cipher dengan perfect forward secrecy (PFS) seperti EphemeralDiffie-Hellman (DHE) atau Elliptic Curve Ephemeral Diffie-Hellman (ECDHE). Sebagian besar sistemmodern seperti Java 7 dan sistem yang lebih baru mendukung mode ini.

Selain itu, permintaan harus ditandatangani menggunakan access key ID dan secret access key yangterkait dengan principal IAM. Atau Anda bisa menggunakan AWS Security Token Service (AWS STS) untukmembuat kredensial keamanan sementara guna menandatangani permintaan.

Praktik Terbaik Keamanan untuk Arus KinesisVideo Streams Streesis

Amazon Kinesis Video Streams menyediakan sejumlah fitur keamanan untuk dipertimbangkan ketikaAnda mengembangkan dan menerapkan kebijakan keamanan Anda sendiri. Praktik terbaik berikut adalahpedoman umum dan tidak mewakili solusi keamanan yang lengkap. Karena praktik terbaik ini mungkintidak sesuai atau cukup untuk lingkungan Anda, anggap praktik terbaik tersebut sebagai pertimbanganyang membantu dan bukan sebagai rekomendasi.

Untuk praktik keamanan terbaik untuk perangkat jarak jauh, lihatPraktik Terbaik Keamanan untuk AgenPerangkat.

Terapkan akses hak istimewa yang paling rendahSaat memberikan izin, Anda memutuskan siapa yang mendapatkan izin yang menjadi sumber dayaKinesis Video Streams. Anda mengaktifkan tindakan tertentu yang ingin Anda izinkan pada sumber dayatersebut. Oleh karena itu, Anda harus memberikan hanya izin yang diperlukan untuk melaksanakan tugas.Menerapkan akses hak istimewa yang terkecil adalah hal mendasar dalam mengurangi risiko keamanandan dampak yang dapat diakibatkan oleh kesalahan atau niat jahat.

Misalnya, produser yang mengirimkan data ke Kinesis Video Streams hanyamembutuhkanPutMedia,GetStreamingEndpoint, danDescribeStream. Jangan memberikan izinaplikasi produsen untuk semua tindakan (*), atau untuk tindakan lain sepertiGetMedia.

50

Amazon Kinesis Video Streams Panduan DeveloperGunakan IAM role

Untuk informasi selengkapnya, lihatApa itu Hak Istimewa Paling Sedikit & Mengapa AndaMembutuhkannya?

Gunakan IAM roleAplikasi produser dan klien harus memiliki kredensi yang valid untuk mengakses aliran video Kinesis. Andatidak boleh menyimpan kredensyal AWS secara langsung di aplikasi klien atau bucket Amazon S3. Iniadalah kredensial jangka panjang yang tidak dirotasi secara otomatis dan dapat menimbulkan dampakbisnis yang signifikan jika dibobol.

Sebagai gantinya, Anda harus menggunakan peran IAM untuk mengelola kredensyal sementara untukaplikasi produsen dan klien Anda untuk mengakses aliran video Kinesis. Saat Anda menggunakan peran,Anda tidak perlu menggunakan kredensial jangka panjang (seperti nama pengguna dan kata sandi atauaccess key) untuk mengakses sumber daya lainnya.

Untuk informasi selengkapnya, lihat topik berikut di Panduan Pengguna IAM:

• Peran IAM• Skenario Umum untuk Peran: Pengguna, Aplikasi, dan Layanan

Gunakan CloudTrail untuk Memantau Panggilan APIKinesis Video Streams terintegrasi denganAWS CloudTrail, layanan yang menyediakan rekaman tindakanyang diambil oleh pengguna, peran, atau layanan AWS di Kinesis Video Streams.

Menggunakan informasi yang dikumpulkan oleh CloudTrail, Anda dapat menentukan permintaan yangdibuat ke Kinesis Video Streams, alamat IP asal permintaan tersebut dibuat, dan detail tambahan.

Untuk informasi selengkapnya, lihat the section called “Mencatat Panggilan API denganCloudTrail” (p. 163).

51

Amazon Kinesis Video Streams Panduan DeveloperKlien Produsen Kinesis Video Streams

Pustaka Produsen Kinesis VideoStreams

Pustaka Produser Amazon Kinesis Video Streams adalah seperangkateasy-to-useperpustakaan yangmerupakan bagian dari Kinesis Video Streams Producer SDK. Klien menggunakan perpustakaan dan SDKuntuk membangun aplikasi pada perangkat untuk terhubung dengan aman ke Kinesis Video Streams danstreaming video dan data media lainnya yang dapat dilihat di konsol atau aplikasi klien secara real time.

Data media dapat dialirkan dengan cara berikut:

• Data media streaming dalam waktu nyata• Streaming data media setelah buffering selama beberapa detik• Streamingafter-the-factunggahan media

Setelah membuat aliran Kinesis Video Streams, Anda dapat mulai mengirim data ke stream. Anda dapatmenggunakan SDK untuk membuat kode aplikasi yang mengekstrak data video (frame) dari sumber mediadan mengunggahnya ke Kinesis Video Streams. Aplikasi ini juga disebut sebagaipenghasilaplikasi.

Pustaka Produser berisi komponen berikut:

• Klien Produsen Kinesis Video Streams (p. 52)• Pustaka Produsen Kinesis Video Streams (p. 53)

Klien Produsen Kinesis Video StreamsKlien Produser Kinesis Video Streams mencakup satuKinesisVideoClientkelas. Kelas ini mengelolasumber media, menerima data dari sumber, dan mengelola siklus hidup aliran saat data mengalir darisumber media ke Kinesis Video Streams. Selain itu, ia menyediakanMediaSourceantarmuka untukmendefinisikan interaksi antara Kinesis Video Streams dan perangkat keras dan perangkat lunak milikAnda.

Sumber media bisa hampir apa saja. Misalnya, Anda dapat menggunakan sumber media kamera atausumber media mikrofon. Sumber media tidak terbatas pada sumber audio dan video saja. Misalnya, datalog mungkin file teks, tetapi mereka masih dapat dikirim sebagai aliran data. Anda juga bisa memilikibeberapa kamera di ponsel Anda yang mengalirkan data secara bersamaan.

Untuk mendapatkan data dari salah satu sumber ini, Anda dapat menerapkanMediaSourceantarmuka.Antarmuka ini memungkinkan skenario tambahan yang kami tidak menyediakan dukungan bawaan.Misalnya, Anda dapat memilih untuk mengirim yang berikut ini ke Kinesis Video Streams:

• Sebuah aliran data diagnostik (misalnya, log aplikasi dan peristiwa)• Data dari kamera inframerah, RADAR, atau kamera kedalaman

Kinesis Video Streams tidak menyediakan implementasi bawaan untuk perangkat penghasil media sepertikamera. Untuk mengekstrak data dari perangkat ini, Anda harus menerapkan kode, sehingga membuat

52

Amazon Kinesis Video Streams Panduan DeveloperPustaka Produsen Kinesis Video Streams

implementasi sumber media kustom Anda sendiri. Anda kemudian dapat secara eksplisit mendaftarkansumber media kustom Anda denganKinesisVideoClient, yang mengunggah data ke Kinesis VideoStreams.

Klien Produser Kinesis Video Streams tersedia untuk aplikasi Java dan Android. Untuk informasiselengkapnya, lihat Menggunakan Perpustakaan Producer Java (p. 53) dan Menggunakan AndroidProducer Library (p. 57).

Pustaka Produsen Kinesis Video StreamsPerpustakaan Produser Kinesis Video Streams terkandung dalam Klien Produser Kinesis Video Streams.Perpustakaan juga tersedia untuk digunakan secara langsung bagi mereka yang ingin integrasi lebih dalamdengan Kinesis Video Streams. Hal ini memungkinkan integrasi dari perangkat dengan sistem operasiproprietary, tumpukan jaringan, atau sumber daya terbatas pada perangkat.

Perpustakaan Produser Video Streams Kinesis mengimplementasikan mesin negara untuk streamingke Kinesis Video Streams. Ini menyediakan kait callback, yang mengharuskan Anda memberikanimplementasi transportasi Anda sendiri dan secara eksplisit menangani setiap pesan yang masuk ke dandari layanan.

Anda dapat memilih untuk menggunakan Perpustakaan Produser Kinesis Video Streams secara langsungkarena alasan berikut:

• Perangkat tempat Anda ingin menjalankan aplikasi tidak memiliki mesin virtual Java.• Anda ingin menulis kode aplikasi dalam bahasa selain Java.• Anda mungkin memiliki Java pada perangkat, tetapi Anda ingin mengurangi jumlah overhead dalam kode

Anda dan membatasi ke tingkat minimum abstraksi telanjang, karena keterbatasan seperti memori dandaya pemrosesan.

Saat ini, Perpustakaan Produser Kinesis Video Streams tersedia untuk aplikasi C++. Untuk informasiselengkapnya, lihat Menggunakan Perpustakaan Produser C ++ (p. 62).

Topik TerkaitMenggunakan Perpustakaan Producer Java (p. 53)

Menggunakan Android Producer Library (p. 57)

Menggunakan Perpustakaan Produser C ++ (p. 62)

??? (p. 71)

Menggunakan Perpustakaan Producer JavaAmazon Kinesis Video Streams menyediakan Java Producer Library, yang dapat Anda gunakan untukmenulis kode aplikasi, dengan konfigurasi minimal, untuk mengirim data media dari perangkat ke aliranvideo Kinesis.

Anda harus melakukan langkah-langkah berikut untuk mengintegrasikan kode Anda dengan Kinesis VideoStreams, sehingga aplikasi Anda dapat memulai streaming data ke aliran video Kinesis Anda:

53

Amazon Kinesis Video Streams Panduan DeveloperProsedur: Menggunakan Java Producer SDK

1. Buat sebuah instansKinesisVideoClientobjek.2. BuatMediaSourcekeberatan dengan memberikan informasi sumber media. Misalnya, saat membuat

sumber media kamera, Anda memberikan informasi seperti mengidentifikasi kamera dan menentukanpengkodean yang digunakan kamera.

Ketika Anda ingin memulai streaming, Anda harus membuat sumber media kustom.3. Daftarkan sumber media denganKinesisVideoClient.

Setelah Anda mendaftarkan sumber media denganKinesisVideoClient, setiap kali data menjaditersedia dengan sumber media, panggilanKinesisVideoClientdengan data.

Prosedur: Menggunakan Java Producer SDKProsedur ini menunjukkan bagaimana menggunakan Kinesis Video Streams Java Producer Client diaplikasi Java Anda untuk mengirim data ke aliran video Kinesis Anda.

Langkah-langkah ini tidak mengharuskan Anda memiliki sumber media, seperti kamera atau mikrofon.Sebagai gantinya, untuk tujuan pengujian, kode menghasilkan bingkai sampel yang terdiri dari serangkaianbyte. Anda dapat menggunakan pola pengkodean yang sama saat mengirim data media dari sumber nyataseperti kamera dan mikrofon.

Prosedur ini mencakup langkah-langkah berikut:

• Unduh dan Konfigurasikan Kode• Menulis dan Periksa Kode• Jalankan dan Verifikasi Kode

Prasyarat• Dalam kode contoh, Anda memberikan kredensi dengan menentukan profil yang Anda siapkan

di file profil kredensia AWS Anda. Jika Anda belum melakukannya, siapkan profil kredensi Andaterlebih dahulu. Untuk informasi selengkapnya, lihatMenyiapkan Kredensial dan Wilayah AWS untukPengembangandiAWS SDK for Java.

Note

Contoh Java menggunakanSystemPropertiesCredentialsProviderkeberatanuntuk mendapatkan kredensi AWS Anda. Penyedia mengambil kredensial-kredenal inidariaws.accessKeyIddanaws.secretKeysifat sistem Java. Anda mengatur properti sistemini di lingkungan pengembangan Java Anda. Untuk informasi tentang cara mengatur propertisistem Java, lihat dokumentasi untuk lingkungan pengembangan terintegrasi Anda (IDE)tertentu.

• KlasterNativeLibraryPathharus berisiKinesisVideoProducerJNIfile, tersedia dihttps://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp. Ekstensi nama file untuk file initergantung pada sistem operasi Anda:• KinesisVideoProducerJNI.sountuk Linux• KinesisVideoProduser JNI.Dylibuntuk macOS• KinesisVideoProducerJNI.dlluntuk Windows

Note

Pustaka pra-bangun untuk macOS, Ubuntu, Windows, dan Raspbian tersedia disrc/main/resources/libpadahttps://github.com/awslabs/amazon-kinesis-video-streams-producer-sdkJava. Untuk lingkungan lain, kompilasiPerpustakaan produsen C ++ (p. 62).

54

Amazon Kinesis Video Streams Panduan DeveloperLangkah 1: Unduh dan Konfigurasikan Kode

Langkah 1: Unduh dan Konfigurasi Kode PustakaProduser JavaPada bagian ini dari prosedur Java Producer Library, Anda men-download kode contoh Java, mengimporproyek ke Java IDE Anda, dan mengkonfigurasi lokasi perpustakaan.

Untuk prasyarat dan rincian lainnya tentang contoh ini, lihatMenggunakan Perpustakaan Producer Java.

1. Buat direktori, dan kemudian kloning kode sumber contoh dariGitHubrepositori.

$ git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-java

2. Buka lingkungan pengembangan terintegrasi Java (IDE) yang memungkinkan Anda(misalnya,GerhanaatauJetBrainsIDEA IntelliJ), dan impor proyek Apache Maven yang Anda download:

• Dalam IntelliJ IDEA: Pilih Import (Impor). Arahkan kepom.xmlfile di root paket download.• Dalam Eclipse: PilihBerkas,Impor,Maven,Proyek Maven yang Ada. Kemudian arahkan kekinesis-video-java-demodirektori.

Untuk informasi lebih lanjut, lihat dokumentasi untuk IDE Anda.3. Kode contoh Java menggunakan kredensi AWS saat ini. Untuk menggunakan profil kredenal yang

berbeda, cari kode berikut diDemoAppMain.java:

final KinesisVideoClient kinesisVideoClient = KinesisVideoJavaClientFactory .createKinesisVideoClient( Regions.US_WEST_2, AuthHelper.getSystemPropertiesCredentialsProvider());

Ubah kode menjadi berikut:

final KinesisVideoClient kinesisVideoClient = KinesisVideoJavaClientFactory .createKinesisVideoClient( Regions.US_WEST_2, new ProfileCredentialsProvider("credentials-profile-name"));

Untuk informasi selengkapnya, lihatProfileCredentialsPenyediadiAWS SDK for Javareferensi.

Langkah Selanjutnyathe section called “Langkah 2: Menulis dan Periksa Kode” (p. 55)

Langkah 2: Menulis dan Periksa KodeDi bagian ini dariProsedur Pustaka Produser Java, Anda menulis dan memeriksa kode contoh Java yangAnda download di bagian sebelumnya.

Aplikasi uji Java (DemoAppMain) menunjukkan pola coding berikut:

• Buat instans KinesisVideoClient.• Buat instans MediaSource.• DaftarkanMediaSourceDengan klien.

55

Amazon Kinesis Video Streams Panduan DeveloperLangkah 2: Menulis dan Periksa Kode

• Mulai streaming. Artinya, mulaiMediaSource, dan mulai mengirim data ke klien.

Bagian berikut memberikan perincian.

Membuat InstansKinesisVideoKlienAnda membuatKinesisVideoClientobjek dengan memanggilcreateKinesisVideoClientoperasi.

final KinesisVideoClient kinesisVideoClient = KinesisVideoJavaClientFactory .createKinesisVideoClient( Regions.US_WEST_2, AuthHelper.getSystemPropertiesCredentialsProvider());

UntukKinesisVideoClientuntuk melakukan panggilan jaringan, perlu kredensi untukmengotentikasi. Anda lulus dalam sebuah contohSystemPropertiesCredentialsProvider, yangberbunyiAWSCredentialsuntuk profil default dalam file kredensia:

[default]aws_access_key_id = ABCDEFGHIJKLMOPQRSTUaws_secret_access_key = AbCd1234EfGh5678IjKl9012MnOp3456QrSt7890

Membuat InstansMediaSourceUntuk mengirim byte ke aliran video Kinesis Anda, Anda perlu menghasilkan data. Arus Video KinesisAmazon menyediakan aliran Video Kinesis Amazon menyediakanMediaSourceantarmuka, yang mewakilisumber data.

Misalnya, perpustakaan Kinesis Video Streams JavamenyediakanImageFileMediaSourceimplementasiMediaSourceantarmuka. Kelas ini hanya membacadata dari serangkaian file media daripada aliran video Kinesis, tetapi Anda dapat menggunakannya untukmenguji kode.

final MediaSource bytesMediaSource = createImageFileMediaSource();

MendaftarkanMediaSourceDengan KlienDaftarkan sumber media yang Anda buat denganKinesisVideoClientsehingga ia tahu tentang klien(dan kemudian dapat mengirim data ke klien).

kinesisVideoClient.registerMediaSource(STREAM_NAME, bytesMediaSource);

Memulai Sumber MediaMulai sumber media sehingga dapat mulai menghasilkan data dan mengirimkannya ke klien.

bytesMediaSource.start();

56

Amazon Kinesis Video Streams Panduan DeveloperLangkah 3: Jalankan dan Verifikasi Kode

Langkah Selanjutnyathe section called “Langkah 3: Jalankan dan Verifikasi Kode” (p. 57)

Langkah 3: Jalankan dan Verifikasi KodeUntuk menjalankan harness tes Java untukPerpustakaan Producer Java, lakukan hal berikut.

1. PilihDemoAppUtama.2. PilihJalankan,Jalankan 'DemoAppUtama.3. Tambahkan kredensi Anda ke argumen JVM untuk aplikasi:

• Untuk kredensi AWS non-sementara: "-Daws.accessKeyId={YourAwsAccessKey} -Daws.secretKey={YourAwsSecretKey} -Djava.library.path={NativeLibraryPath}"

• Untuk kredensi AWS sementara: "-Daws.accessKeyId={YourAwsAccessKey} -Daws.secretKey={YourAwsSecretKey} -Daws.sessionToken={YourAwsSessionToken}-Djava.library.path={NativeLibraryPath}"

4. Masuk keAWS Management Consoledan buka konsol Kinesis Video Streams.

PadaKelola Arushalaman, pilih stream Anda.5. Sampel video akan diputar di pemutar tertanam. Anda mungkin perlu menunggu dalam waktu

singkat (hingga sepuluh detik di bawah kondisi bandwidth dan prosesor yang khas) sementara framemenumpuk sebelum video muncul.

Contoh kode menciptakan aliran. SebagaiMediaSourcedalam kode dimulai, mulai mengirim frame sampelkeKinesisVideoClient. Klien kemudian mengirimkan data ke aliran video Kinesis Anda.

Menggunakan Android Producer LibraryAmazon Kinesis Video Streams menyediakan Android Producer Library, yang dapat Anda gunakan untukmenulis kode aplikasi, dengan konfigurasi minimal, untuk mengirim data media dari perangkat Android kealiran video Kinesis.

Anda harus melakukan langkah-langkah berikut untuk mengintegrasikan kode Anda dengan Kinesis VideoStreams sehingga aplikasi Anda dapat memulai streaming data ke aliran video Kinesis Anda:

1. Buatlah sebuah instans dariKinesisVideoClientobjek.2. BuatMediaSourcekeberatan dengan memberikan informasi sumber media. Misalnya, saat membuat

sumber media kamera, Anda memberikan informasi seperti mengidentifikasi kamera dan menentukanpengkodean yang digunakan kamera.

Ketika ingin memulai streaming, Anda harus membuat sumber media khusus.

Prosedur: Menggunakan Android Producer SDKProsedur ini menunjukkan cara menggunakan Kinesis Video Streams Android Producer Client di aplikasiAndroid Anda untuk mengirim data ke aliran video Kinesis Anda.

Prosedur ini mencakup langkah-langkah berikut:

• Unduh dan Konfigurasikan Kode• Periksa Kode

57

Amazon Kinesis Video Streams Panduan DeveloperProsedur: Menggunakan Android Producer SDK

• Jalankan dan Verifikasi Kode

Prasyarat• Kami merekomendasikanStudio Androiduntuk memeriksa, mengedit, dan menjalankan kode aplikasi.

Kami merekomendasikan setidaknya versi 3.0.0, dirilis Oktober 2017.• Dalam kode contoh, Anda memberikan kredensi Amazon Cognito. Ikuti prosedur ini untuk menyiapkan

kolam pengguna dan kolam identitas Amazon Cognito:

Menyiapkan kumpulan pengguna

1. Masuk ke konsol Amazon Cognito.2. Pilih Kelola Kolam Pengguna Anda.3. Pilih Buat kolam pengguna.4. Ketikkan nilai untukNama kolam; misalnya,<username>_android_user_pool.5. Pilih Tinjau default.6. PilihBuat kolam.7. Menyalin dan menyimpanId Kolamnilai. Anda akan membutuhkan nilai ini ketika Anda

mengonfigurasi aplikasi contoh.8. Di halaman kolam Anda, pilihKlien Aplikasi.9. Pilih Tambahkan sebuah klien aplikasi.10. Ketikkan nilai untukNama klien aplikasi; misalnya,<username>_android_app_client.11. Pilih Buat klien aplikasi.12. PilihTampilkan Detail, dan menyalin dan menyimpanID Klien AplikasidanRahasia Klien Aplikasi.

Anda akan membutuhkan nilai-nilai ini ketika Anda mengkonfigurasi aplikasi contoh.

Untuk mengatur kumpulan identitas

1. Buka konsol Amazon Cognito.2. Pilih Kelola Kolam Identitas.3. Pilih Buat kolam identitas baru.4. Ketikkan nilai untukNama kolam identitas; misalnya,<username>_android_identity_pool.5. Perluas bagian Penyedia autentikasi. PadaCognitotab, tambahkan nilai untukID Kolam

penggunadanID Klien Aplikasidari prosedur sebelumnya.6. PilihBuat kolam.7. Di halaman berikutnya, perluasTampilkan Detailbagian.8. Pada bagian yang memiliki nilai untukNama peranyang berakhirAuth_Role, pilihDokumen Kebijakan.9. PilihMengedit, dan konfirmasikanKebijakan Editkotak dialog yang muncul. Kemudian salin JSON

berikut dan tempelkan ke editor:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cognito-identity:*", "kinesisvideo:*" ], "Resource": [ "*" ]

58

Amazon Kinesis Video Streams Panduan DeveloperLangkah 1: Unduh dan Konfigurasikan Kode

} ]}

10. Pilih Izinkan.11. Di halaman berikutnya, salin dan simpanID kolam identitasnilai dariDapatkan Kredenensi

AWScuplikan kode. Anda akan membutuhkan nilai ini ketika Anda mengonfigurasi aplikasi contoh.

Langkah 1: Unduh dan Konfigurasikan Kode PustakaProduser AndroidDi bagian prosedur Android Producer Library ini, Anda mengunduh kode contoh Android dan membukaproyek di Android Studio.

Untuk prasyarat dan rincian lainnya tentang contoh ini, lihatMenggunakan Android Producer Library.

1. Buat direktori, lalu kloning AWS Android SDK dariGitHubrepositori.

$ git clone https://github.com/awslabs/aws-sdk-android-samples

2. BukaStudio Android.3. Di layar pembuka, pilihBuka proyek Android Studio yang ada.4. Arahkan keaws-sdk-android-samples/AmazonKinesisVideoDemoAppdirektori, dan pilihOKE.5. Buka file AmazonKinesisVideoDemoApp/src/main/res/raw/awsconfiguration.json.

DiCredentialsProvidersimpul, berikan ID kolam identitas dariUntuk mengatur kumpulanidentitasprosedur diPrasyaratbagian, dan menyediakan Wilayah AWS Anda (misalnya,us-west-2).

DiCognitoUserPoolnode, berikan rahasia klien App, ID klien aplikasi, dan ID Pool dariMenyiapkankumpulan penggunaprosedur diPrasyaratbagian, dan menyediakan Wilayah AWS Anda (misalnya,us-west-2).

6. Klasterawsconfiguration.jsonFile akan terlihat mirip dengan berikut ini:

{ "Version": "1.0", "CredentialsProvider": { "CognitoIdentity": { "Default": { "PoolId": "us-west-2:01234567-89ab-cdef-0123-456789abcdef", "Region": "us-west-2" } } }, "IdentityManager": { "Default": {} }, "CognitoUserPool": { "Default": { "AppClientSecret": "abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmno", "AppClientId": "0123456789abcdefghijklmnop", "PoolId": "us-west-2_qRsTuVwXy", "Region": "us-west-2" } }}

59

Amazon Kinesis Video Streams Panduan DeveloperLangkah 2: Periksa Kode

7. PerbaruiAmazonKinesisVideoDemoApp/src/main/java/com/amazonaws/kinesisvideo/demoapp/KinesisVideoDemoApp.javadengan wilayah Anda (dalam contoh di bawah ini, itu diaturkeUS_WEST_2):

public class KinesisVideoDemoApp extends Application { public static final String TAG = KinesisVideoDemoApp.class.getSimpleName(); public static Regions KINESIS_VIDEO_REGION = Regions.US_WEST_2;

Untuk konstanta wilayah AWS, lihatKawasan.

Langkah Selanjutnyathe section called “Langkah 2: Periksa Kode” (p. 60)

Langkah 2: Periksa KodeDi bagianProsedur Android Producer Library, Anda memeriksa contoh kode.

Aplikasi uji Android (AmazonKinesisVideoDemoApp) menunjukkan pola coding berikut:

• Buat instans KinesisVideoClient.• Buat instans MediaSource.• Mulai streaming—yaitu, mulaiMediaSource, dan mulai mengirim data ke klien.

Bagian berikut memberikan perincian.

Membuat sebuah instansKinesisVideoKlienAnda membuatKinesisVideoClientobjek dengan memanggilcreateKinesisVideoClientoperasi.

mKinesisVideoClient = KinesisVideoAndroidClientFactory.createKinesisVideoClient( getActivity(), KinesisVideoDemoApp.KINESIS_VIDEO_REGION, KinesisVideoDemoApp.getCredentialsProvider());

UntukKinesisVideoClientuntuk melakukan panggilan jaringan, perlu kredensi untuk mengotentikasi.Anda lulus dalam sebuah contohAWSCredentialsProvider, yang membaca kredensi Amazon CognitoAnda dariawsconfiguration.jsonfile yang Anda modifikasi di bagian sebelumnya.

Membuat sebuah instansMediaSourceUntuk mengirim byte ke aliran video Kinesis Anda, Anda harus menghasilkan data. Amazon Kinesis VideoStreams menyediakanMediaSourceantarmuka, yang mewakili sumber data.

Misalnya, pustaka Android Kinesis Video StreamsmenyediakanAndroidCameraMediaSourceimplementasiMediaSourceantarmuka. Kelas ini membacadata dari salah satu kamera perangkat.

Pada contoh kode berikut (darifragment/StreamConfigurationFragment.javafile), konfigurasiuntuk sumber media dibuat:

private AndroidCameraMediaSourceConfiguration getCurrentConfiguration() {

60

Amazon Kinesis Video Streams Panduan DeveloperLangkah 3: Jalankan dan Verifikasi Kode

return new AndroidCameraMediaSourceConfiguration( AndroidCameraMediaSourceConfiguration.builder() .withCameraId(mCamerasDropdown.getSelectedItem().getCameraId()) .withEncodingMimeType(mMimeTypeDropdown.getSelectedItem().getMimeType()) .withHorizontalResolution(mResolutionDropdown.getSelectedItem().getWidth()) .withVerticalResolution(mResolutionDropdown.getSelectedItem().getHeight()) .withCameraFacing(mCamerasDropdown.getSelectedItem().getCameraFacing()) .withIsEncoderHardwareAccelerated( mCamerasDropdown.getSelectedItem().isEndcoderHardwareAccelerated()) .withFrameRate(FRAMERATE_20) .withRetentionPeriodInHours(RETENTION_PERIOD_48_HOURS) .withEncodingBitRate(BITRATE_384_KBPS) .withCameraOrientation(-mCamerasDropdown.getSelectedItem().getCameraOrientation()) .withNalAdaptationFlags(StreamInfo.NalAdaptationFlags.NAL_ADAPTATION_ANNEXB_CPD_AND_FRAME_NALS) .withIsAbsoluteTimecode(false));}

Pada contoh kode berikut (darifragment/StreamingFragment.javafile), sumber media dibuat:

mCameraMediaSource = (AndroidCameraMediaSource) mKinesisVideoClient .createMediaSource(mStreamName, mConfiguration);

Memulai Sumber MediaMulai sumber media sehingga dapat mulai menghasilkan data dan mengirimkannya ke klien. Contoh kodeberikut adalah darifragment/StreamingFragment.javaBerkas:

mCameraMediaSource.start();

Langkah Selanjutnyathe section called “Langkah 3: Jalankan dan Verifikasi Kode” (p. 61)

Langkah 3: Jalankan dan Verifikasi KodeUntuk menjalankan aplikasi contoh Android untukPustaka Produser Android, lakukan hal berikut ini.

1. Connect ke perangkat Android.2. PilihJalankan,Jalankan..., dan pilihEdit konfigurasi....3. Pilih+,Aplikasi Android. Di bidang Nama, masukkan AmazonKinesisVideoDemoApp.

DiModulpulldown, pilihAmazonKinesisVideoDemoAplikasi. Pilih OKE.4. PilihJalankan,Jalankan.5. DiPilih Target Deploymentlayar, pilih perangkat yang terhubung, dan pilihOKE.6. DiAWSKinesisVideoDemoAppaplikasi pada perangkat, pilihBuat akun baru.7. Masukkan nilai untukNAMA PENGGUNA,Kata Sandi,Nama yang diberikan,Alamat email, dannomor

telepon, dan kemudian pilihDaftar.Note

Nilai-nilai ini memiliki kendala berikut:

• Kata Sandi: Harus berisi huruf besar dan kecil, angka, dan karakter khusus. Anda dapatmengubah kendala ini di halaman pool Pengguna Anda diKonsol Amazon Cognito.

• Alamat email: Harus alamat yang valid sehingga Anda dapat menerima kode konfirmasi.

61

Amazon Kinesis Video Streams Panduan DeveloperPerpustakaan produsen C ++

• Nomor telepon: Harus dalam format berikut:+<Country code><Number>,misalnya,+12065551212.

8. Masukkan kode yang Anda terima melalui email, dan pilihKonfirmasi. PilihOke.9. Di halaman berikutnya, tinggalkan nilai default, dan pilihAliran.10. Masuk keAWS Management Consoledan buka konsol Kinesis Video Streams dihttps://

console.aws.amazon.com/kinesisvideo/Di Wilayah Barat AS (Oregon).

PadaKelola Aliranhalaman, pilihaliran demo.11. Video streaming diputar di pemutar tertanam. Anda mungkin perlu menunggu dalam waktu singkat

(hingga sepuluh detik di bawah kondisi bandwidth dan prosesor yang khas) sementara framemenumpuk sebelum video muncul.

Note

Jika layar perangkat berputar (misalnya, dari potret ke lanskap), aplikasi akan menghentikanstreaming video.

Contoh kode menciptakan aliran. SebagaiMediaSourcedalam kode dimulai, mulai mengirim framedari kamera keKinesisVideoClient. Klien kemudian mengirimkan data ke aliran video Kinesisbernamaaliran demo.

Menggunakan Perpustakaan Produser C ++Amazon Kinesis Video Streams menyediakan Perpustakaan Produser C++, yang dapat Anda gunakanuntuk menulis kode aplikasi untuk mengirim data media dari perangkat ke aliran video Kinesis.

Objek ModelPerpustakaan C ++ menyediakan objek berikut untuk mengelola pengiriman data ke aliran video Kinesis:

• KinesisVideoprodusen: Berisi informasi tentang sumber media dan kredenal AWS Anda, danmempertahankan callback untuk melaporkan peristiwa Kinesis Video Streams.

• KinesisVideoAliran: Merupakan aliran video Kinesis. Berisi informasi tentang parameter aliran video,seperti nama, periode retensi data, jenis konten media, dan sebagainya.

Menempatkan Media ke dalam StreamingC ++ perpustakaan menyediakan metode (misalnya,PutFrame) yang dapat Anda gunakan untukmemasukkan data ke dalamKinesisVideoStreamobjek. Perpustakaan kemudian mengelola keadaaninternal data, yang dapat mencakup tugas-tugas berikut:

• Melakukan autentikasi.• Menonton latensi jaringan. Jika latensi terlalu tinggi, perpustakaan mungkin memilih untuk menjatuhkan

frame.• Melacak status streaming sedang berlangsung.

Antarmuka CallbackLapisan ini mengekspos satu set antarmuka callback, yang memungkinkannya untuk berbicara denganlapisan aplikasi. Antarmuka callback ini mencakup yang berikut ini:

62

Amazon Kinesis Video Streams Panduan DeveloperProsedur: Menggunakan C++ Producer SDK

• Layanan callback antarmuka (CallbackProvider): Perpustakaan memanggil peristiwa yang diperolehmelalui antarmuka ini ketika menciptakan aliran, memperoleh deskripsi aliran, menghapus aliran, dansebagainya.

• Client-ready state atau low storage event interface (ClientCallbackProvider): Perpustakaanmemanggil peristiwa pada antarmuka ini ketika klien siap, atau ketika mendeteksi bahwa itu mungkinkehabisan penyimpanan atau memori yang tersedia.

• Stream peristiwa callback antarmuka (StreamCallbackProvider): Perpustakaan memanggil peristiwapada antarmuka ini ketika peristiwa aliran terjadi, seperti aliran memasuki keadaan siap, menjatuhkanframe, atau kesalahan aliran.

Kinesis Video Streams menyediakan implementasi default untuk antarmuka ini. Anda juga dapatmenyediakan implementasi kustom Anda sendiri—misalnya, jika Anda memerlukan logika jaringan khususatau Anda ingin mengekspos kondisi penyimpanan yang rendah ke antarmuka pengguna.

Untuk informasi selengkapnya tentang callback di Pustaka Produser, lihatCallback Produsen (p. 118).

Prosedur: Menggunakan C++ Producer SDKProsedur ini menunjukkan bagaimana menggunakan klien Kinesis Video Streams dan sumber mediadalam aplikasi C++ untuk mengirim data ke aliran video Kinesis Anda.

Prosedur ini mencakup langkah-langkah berikut:

• Langkah 1: Unduh dan Konfigurasikan Kode• Langkah 2: Menulis dan Periksa Kode• Langkah 3: Jalankan dan Verifikasi Kode

Prasyarat• Kredenensi: Dalam kode contoh, Anda memberikan kredensi dengan menentukan profil yang Anda

siapkan di file profil kredensia AWS Anda. Jika Anda belum melakukannya, pertama siapkan profilkredensial Anda.

Untuk informasi selengkapnya, lihatMenyiapkan Kredensial dan Wilayah AWS untuk Pengembangan.• Integrasi toko sertifikat: Perpustakaan Produser Kinesis Video Streams harus membangun kepercayaan

dengan layanan yang dipanggilnya. Hal ini dilakukan dengan memvalidasi otoritas sertifikasi (CA) di tokosertifikat publik. Pada model berbasis Linux, toko ini terletak di/etc/ssl/direktori.

Unduh sertifikat dari lokasi berikut ke toko sertifikat Anda:

https://www.amazontrust.com/repository/SFSRootCAG2.pem• Instal dependensi build berikut untuk macOS:

• Autoconf 2,69(Lisensi GPLv3+/AutoConf: GNU GPL versi 3 atau yang lebih baru)• CMake 3.7 atau 3.8• Konfigurasi PKG• Flex 2.5.35 Apple (flex-31) atau yang lebih baru• Bison 2.4(Lisensi GNU)• Automake 1.15.1(Lisensi GNU)• GNU Libtool (versi Apple Inc. cctools-898)• XCode (macOS)/dentang/gcc (xcode-pilih versi 2347)• Java Development Kit (JDK) (untuk kompilasi Java JNI)

63

Amazon Kinesis Video Streams Panduan DeveloperProsedur: Menggunakan C++ Producer SDK

• Lib-Pkg• Instal dependensi build berikut untuk Ubuntu (respons terhadap perintah versi terpotong):

• Instal Git:sudo apt-get install git

$ git --versiongit version 2.14.1

• PasangCMake:sudo apt-get install cmake

$ cmake --versioncmake version 3.9.1

• Instal Libtool:sudo apt-get install libtool

2.4.6-2

• Instal libtool-bin:sudo apt-get install libtool-bin

$ libtool --versionlibtool (GNU libtool) 2.4.6Written by Gordon Matzigkeit, 1996

• Instal GNU Automake:sudo apt-get install automake

$ automake --versionautomake (GNU automake) 1.15

• Instal GNU Bison:sudo apt-get install bison

$ bison -Vbison (GNU Bison) 3.0.4

• Instal G ++:sudo apt-get install g++

g++ --versiong++ (Ubuntu 7.2.0-8ubuntu3) 7.2.0

• Instal curl:sudo apt-get install curl

$ curl --versioncurl 7.55.1 (x86_64-pc-linux-gnu) libcurl/7.55.1 OpenSSL/1.0.2g zlib/1.2.11 libidn2/2.0.2 libpsl/0.18.0 (+libidn2/2.0.2) librtmp/2.3

• Instal pkg-config:sudo apt-get install pkg-config

$ pkg-config --version0.29.1

• Instal Flex:sudo apt-get install flex

$ flex --versionflex 2.6.1

• Instal OpenJDK:sudo apt-get install openjdk-8-jdk

$ java -versionopenjdk version "1.8.0_171"

64

Amazon Kinesis Video Streams Panduan DeveloperLangkah 1: Unduh dan Konfigurasikan Kode

• MengaturJAVA_HOMEVariabel Lingkungan:export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/

• Jalankan skrip build:./install-script

Langkah SelanjutnyaLangkah 1: Unduh dan Konfigurasikan Kode Perpustakaan Produser C ++

Langkah 1: Unduh dan Konfigurasikan KodePerpustakaan Produser C ++Untuk informasi tentang cara mengunduh dan mengonfigurasi pustaka produser C++, lihatAmazon KinesisVideo Streams Produser CPP, Plugin GStreamer dan JNI.

Untuk prasyarat dan rincian lainnya tentang contoh ini, lihatMenggunakan Perpustakaan Produser C ++.

Langkah SelanjutnyaLangkah 2: Menulis dan Periksa Kode (p. 65)

Langkah 2: Menulis dan Periksa KodeDi bagianProsedur Producer C ++, Anda memeriksa kode di C ++ test harness (tst/ProducerTestFixture.hdan file lainnya). Anda mengunduh kode ini di bagian sebelumnya.

ParameterPlatform IndependenC ++ contoh menunjukkan pola coding berikut:

• Membuat sebuah instansKinesisVideoProduceruntuk mengakses Kinesis Video Streams.• Buat instans KinesisVideoStream. Ini membuat aliran video Kinesis di akun AWS Anda jika aliran

dengan nama yang sama belum ada.• PanggilputFramepadaKinesisVideoStreamuntuk setiap frame data, karena tersedia, untuk

mengirimkannya ke sungai.

Bagian berikut memberikan perincian:

Membuat InstansKinesisVideoprodusenAnda membuatKinesisVideoProducerobjek denganmemanggilKinesisVideoProducer::createSyncMetode. Contoh berikutmembuatKinesisVideoProducerdi dalamProducerTestFixture.hBerkas:

kinesis_video_producer_ = KinesisVideoProducer::createSync(move(device_provider_), move(client_callback_provider_), move(stream_callback_provider_), move(credential_provider_), defaultRegion_);

ParametercreateSyncmengambil parameter berikut:

• SEBUAHDeviceInfoProviderobjek, yang mengembalikanDeviceInfoobjek yang berisi informasitentang perangkat atau konfigurasi penyimpanan.

65

Amazon Kinesis Video Streams Panduan DeveloperLangkah 2: Menulis dan Periksa Kode

Note

Anda mengkonfigurasi ukuran toko konten AndamenggunakandeviceInfo.storageInfo.storageSizeparameter. Aliran konten Andaberbagi toko konten. Untuk menentukan kebutuhan ukuran penyimpanan Anda, kalikan ukuranbingkai rata-rata dengan jumlah frame yang disimpan untuk durasi maksimal untuk semuaaliran. Kemudian kalikan dengan 1,2 untuk memperhitungkan defragmentasi. Misalnya, aplikasiAnda memiliki konfigurasi berikut:• Tiga aliran• 3 menit durasi maksimum• Setiap aliran adalah 30 frame per detik (FPS)• Setiap frame berukuran 10.000 KBPersyaratan toko konten untuk aplikasi ini adalah3 (aliran) * 3 (menit) * 60 (detik dalam satumenit) * 10000 (kb) * 1.2 (tunjangan defragmentasi) = 194,4 Mb ~ 200Mb.

• SEBUAHClientCallbackProviderobjek, yang mengembalikan fungsi pointer yang melaporkanperistiwa klien-spesifik.

• SEBUAHStreamCallbackProviderobjek, yang mengembalikan fungsi pointer yang dipanggil kembaliketika peristiwa aliran spesifik terjadi.

• SEBUAHCredentialProviderobjek, yang menyediakan akses ke variabel lingkungan kredenensialAWS.

• Wilayah AWS (“us-west-2"). Titik akhir layanan ditentukan dari Wilayah.

Membuat InstansKinesisVideoAliranAnda membuatKinesisVideoStreamobjek denganmemanggilKinesisVideoProducer::CreateStreamMetode denganStreamDefinitionparameter.Contoh ini menciptakanKinesisVideoStreamdi dalamProducerTestFixture.hfile dengan jenis treksebagai video, dan dengan track id sebagai 1:

auto stream_definition = make_unique<StreamDefinition>(stream_name, hours(2), tags, "", STREAMING_TYPE_REALTIME, "video/h264", milliseconds::zero(), seconds(2), milliseconds(1), true, true, true);return kinesis_video_producer_->createStream(move(stream_definition));

ParameterStreamDefinitionObjek memiliki bidang-bidang berikut:

• Nama Stream.• Periode retensi data.• Tag untuk sungai. Tag ini dapat digunakan oleh aplikasi konsumen untuk menemukan aliran yang benar,

atau untuk mendapatkan informasi lebih lanjut tentang aliran. Tag juga dapat dilihat diAWS ManagementConsole.

• AWS KMSkunci enkripsi untuk sungai. Untuk informasi selengkapnya, lihatMenggunakan Enkripsi SisiServer dengan Kinesis Video Streams.

• Jenis streaming. Saat ini, satu-satunya nilai yang valid adalahSTREAMING_TYPE_REALTIME.

66

Amazon Kinesis Video Streams Panduan DeveloperLangkah 2: Menulis dan Periksa Kode

• Jenis konten media.• Latensi media. Nilai ini saat ini tidak digunakan, dan harus diatur ke 0.• Durasi pemutaran setiap fragmen.• Skala timecode media.• Apakah media menggunakan fragmentasi bingkai kunci.• Apakah media menggunakan timecodes.• Apakah media menggunakan waktu fragmen absolut.

Menambahkan trek audio ke Stream Video KinesisAnda dapat menambahkan detail track audio ke definisi aliran trek video dengan menggunakan metodeaddTrackStreamDefinition:

stream_definition->addTrack(DEFAULT_AUDIO_TRACKID, DEFAULT_AUDIO_TRACK_NAME, DEFAULT_AUDIO_CODEC_ID, MKV_TRACK_INFO_TYPE_AUDIO);

Metode addTrack membutuhkan parameter berikut:

• Lacak id (sebagai 1 untuk audio). Ini harus unik dan nilai non-nol.• Nama track yang ditentukan pengguna (misalnya “audio” untuk track audio).• Codec id untuk lagu ini (misalnya untuk track audio “A_AAC”).• Jenis track (misalnya gunakan nilai enum MKV_TRACK_INFO_TYPE_AUDIO untuk audio).

Jika Anda memiliki data pribadi codec untuk track audio, maka Anda dapat menyebarkannyasaat memanggil fungsi AddTrack. Anda juga dapat mengirim data pribadi codec setelahmembuatKinesisVideoStream objek saat memanggil metode start diKinesisVideoAliran.

Menempatkan Frame ke Aliran Video KinesisAnda memasukkan media ke dalam aliran video KinesismenggunakanKinesisVideoStream::putFrame, lewat dalamFrameobjek yang berisi header danmedia data. Contoh panggilanputFramedi dalamProducerApiTest.cppBerkas:

frame.duration = FRAME_DURATION_IN_MICROS * HUNDREDS_OF_NANOS_IN_A_MICROSECOND; frame.size = SIZEOF(frameBuffer_); frame.frameData = frameBuffer_; MEMSET(frame.frameData, 0x55, frame.size);

while (!stop_producer_) { // Produce frames timestamp = std::chrono::duration_cast<std::chrono::nanoseconds>( std::chrono::system_clock::now().time_since_epoch()).count() / DEFAULT_TIME_UNIT_IN_NANOS; frame.index = index++; frame.decodingTs = timestamp; frame.presentationTs = timestamp;

// Key frame every 50th frame.flags = (frame.index % 50 == 0) ? FRAME_FLAG_KEY_FRAME : FRAME_FLAG_NONE; ...

EXPECT_TRUE(kinesis_video_stream->putFrame(frame));

67

Amazon Kinesis Video Streams Panduan DeveloperLangkah 2: Menulis dan Periksa Kode

Note

Contoh Producer C ++ sebelumnya mengirimkan buffer data uji. Dalam aplikasi dunia nyata, Andaharus mendapatkan buffer frame dan ukuran dari data frame dari sumber media (seperti kamera).

ParameterFrameObjek memiliki bidang-bidang berikut:

• Indeks bingkai. Ini harus menjadi nilai incrementing monoton.• Bendera terkait dengan frame. Misalnya, jika encoder dikonfigurasi untuk menghasilkan bingkai kunci,

frame ini akan ditugaskanFRAME_FLAG_KEY_FRAMEbendera.• Decoding cap waktu.• Presentasi stempel waktu.• Durasi frame (untuk 100 ns unit).• Ukuran bingkai dalam byte.• Data bingkai.

Untuk informasi lebih lanjut tentang format frame, lihatModel Data Kinesis Video Streams.

MenempatkanKinesisVideoBingkai ke jalurtertentuKinesisVideoAliranAnda dapat menggunakanPutFramekelas Helper untuk menempatkan data frame ke trek tertentu. Pertama,hubungigetFrameDataBuffer untuk mendapatkan pointer ke salah satu buffer pra-dialokasikan untukmengisiKinesisVideoData bingkai. Kemudian, Anda dapat menghubungiputFrameMultiMelacak untukmengirimKinesisVideoBingkai bersama dengan nilai boolean untuk menunjukkan jenis data frame.Gunakan true jika data video atau false jika frame berisi data audio. ParameterputFrameMultiMetode trackmenggunakan mekanisme antrian untuk memastikan bahwa Fragmen MKV mempertahankan perangkowaktu bingkai yang meningkat secara monoton dan dua fragmen tidak tumpang tindih. Misalnya, timestampMKV dari frame pertama fragmen harus selalu lebih besar dari stempel waktu MKV dari frame terakhir darifragmen sebelumnya.

ParameterPutFrameHelper memiliki bidang-bidang berikut:

• Jumlah maksimum frame audio dalam antrian• Jumlah maksimum frame video dalam antrian• Ukuran untuk mengalokasikan untuk bingkai audio tunggal• Ukuran untuk mengalokasikan untuk bingkai video tunggal

Metrik dan Logging MetrikC ++ Producer SDK mencakup fungsionalitas untuk metrik dan metrik logging.

Anda dapat menggunakangetKinesisVideoMetricsdangetKinesisVideoStreamMetricsOperasiAPI untuk mengambil informasi tentang Kinesis Video Streams dan stream aktif Anda.

Kode berikut adalah darikinesis-video-pic/src/client/include/com/amazonaws/kinesis/video/client/Include.hBerkas.

/*** Gets information about the storage availability.** @param 1 CLIENT_HANDLE - the client object handle.* @param 2 PKinesisVideoMetrics - OUT - Kinesis Video metrics to be filled.*

68

Amazon Kinesis Video Streams Panduan DeveloperLangkah 2: Menulis dan Periksa Kode

* @return Status of the function call.*/PUBLIC_API STATUS getKinesisVideoMetrics(CLIENT_HANDLE, PKinesisVideoMetrics);

/*** Gets information about the stream content view.** @param 1 STREAM_HANDLE - the stream object handle.* @param 2 PStreamMetrics - Stream metrics to fill.** @return Status of the function call.*/PUBLIC_API STATUS getKinesisVideoStreamMetrics(STREAM_HANDLE, PStreamMetrics);

ParameterPClientMetricsobjek diisi olehgetKinesisVideoMetricsberisi informasi berikut:

• contentStoreSize: Ukuran keseluruhan dalam byte toko konten (memori yang digunakan untukmenyimpan data streaming).

• contentStoreAvailableUkuran: Memori gratis di toko konten, dalam byte.• contentStoreAllocatedUkuran: Memori yang dialokasikan di toko konten.• totalContentViewsUkuran: Total memori yang digunakan untuk tampilan konten. (Tampilan konten adalah

serangkaian indeks informasi di toko konten.)• totalFrameRate: Jumlah agregat frame per detik di semua aliran aktif.• totalTransferRate: Total bit per detik (bps) dikirim di semua aliran.

ParameterPStreamMetricsobjek diisi olehgetKinesisVideoStreamMetricsberisi informasi berikut:

• currentViewDuration: Perbedaan unit 100 ns antara kepala tampilan konten (saat frame dikodekan) danposisi saat ini (saat data bingkai dikirim ke Kinesis Video Streams).

• overallViewDuration: Perbedaan dalam unit 100 ns antara kepala tampilan konten (ketika framedikodekan) ke ekor (ketika frame memerah dari memori, baik karena total ruang yang dialokasikan untuktampilan konten terlampaui, atau karenaPersistedAckpesan diterima dari Kinesis Video Streams, danframe yang diketahui bertahan memerah).

• currentViewSize: Ukuran dalam byte tampilan konten dari kepala (ketika frame dikodekan) ke posisi saatini (ketika frame dikirim ke Kinesis Video Streams).

• overallViewSize: Ukuran total dalam byte tampilan konten.• currentFrameRate: Tingkat terakhir diukur dari sungai, dalam frame per detik.• currentTransferRate: Tingkat diukur terakhir dari aliran, dalam byte per detik.

TeardownJika Anda ingin mengirim byte yang tersisa dalam buffer dan menungguACK, Anda dapatmenggunakanstopSync:

kinesis_video_stream->stopSync();

Atau Anda dapat meneleponstopuntuk mengakhiri streaming:

kinesis_video_stream->stop();

69

Amazon Kinesis Video Streams Panduan DeveloperLangkah 3: Jalankan dan Verifikasi Kode

Setelah menghentikan aliran, Anda dapat membebaskan aliran melalui memanggil API berikut:

kinesis_video_producer_->freeStream(kinesis_video_stream);

Langkah Selanjutnyathe section called “Langkah 3: Jalankan dan Verifikasi Kode” (p. 70)

Langkah 3: Jalankan dan Verifikasi KodeUntuk menjalankan dan memverifikasi kode untukProsedur Producer C ++, lihat petunjuk khusus OSberikut:

• Linux• macOS• Windows• Raspberry Pi OS

Anda dapat memantau lalu lintas di streaming Anda dengan menonton metrik yang terkait dengan aliranAnda di AmazonCloudWatchkonsol, sepertiPutMedia.IncomingBytes.

Menggunakan Producer SDK C ++ sebagai PluginGStreamerGStreameradalah kerangka media populer yang digunakan oleh banyak kamera dan sumber video untukmembuat jaringan pipa media kustom dengan menggabungkan plugin modular. Plugin Kinesis VideoStreams GStreamer sangat menyederhanakan integrasi pipa media GStreamer yang ada dengan KinesisVideo Streams.

Untuk informasi tentang menggunakan C++ Producer SDK sebagai plugin GStreamer, lihatContoh: KinesisVideo Streams Produser SDK GStreamer Plugin (p. 132).

Menggunakan C ++ Producer SDK sebagai PluginGStreamer di Docker ContainerGStreameradalah kerangka media populer yang digunakan oleh banyak kamera dan sumber video untukmembuat jaringan pipa media kustom dengan menggabungkan plugin modular. Plugin Kinesis VideoStreams GStreamer sangat menyederhanakan integrasi pipa media GStreamer yang ada dengan KinesisVideo Streams.

Selain itu, menggunakanDockeruntuk membuat pipa GStreamer menstandarisasi lingkungan operasi untukKinesis Video Streams, yang sangat menyederhanakan membangun dan mengeksekusi aplikasi.

Untuk informasi tentang menggunakan C++ Producer SDK sebagai plugin GStreamer dalam kontainerDocker, lihatJalankan Elemen GStreamer dalam Container Docker (p. 135).

Menggunakan Logging dengan C++ Producer SDKAnda mengkonfigurasi pencatatan untuk aplikasi C++ Producer SDK dikvs_log_configurationfiledikinesis-video-native-buildfolder.

70

Amazon Kinesis Video Streams Panduan DeveloperPustaka Produser

Contoh berikut menunjukkan baris pertama dari file konfigurasi default, yang mengkonfigurasi aplikasiuntuk menulisDEBUGentri log -level keAWS Management Console:

log4cplus.rootLogger=DEBUG, KvsConsoleAppender

Anda dapat mengatur tingkat loggingINFOuntuk penebangan yang kurang verbose.

Untuk mengkonfigurasi aplikasi untuk juga menulis entri log ke file log, perbarui baris pertama dalam fileberikut:

log4cplus.rootLogger=DEBUG, KvsConsoleAppender, KvsFileAppender

Ini mengkonfigurasi aplikasi untuk menulis entri log kekvs.logdi dalamkinesis-video-native-build/logfolder.

Untuk mengubah lokasi berkas log, perbarui baris berikut dengan jalur baru:

log4cplus.appender.KvsFileAppender.File=./log/kvs.log

Note

JikaDEBUG-level logging ditulis ke file, file log dapat menggunakan ruang penyimpanan yangtersedia pada perangkat dengan cepat.

Menggunakan C Producer LibraryAmazon Kinesis Video Streams menyediakan C Producer Library, yang dapat Anda gunakan untuk menuliskode aplikasi untuk mengirim data media dari perangkat ke aliran video Kinesis.

Objek ModelPerpustakaan produser Kinesis Video Streams C didasarkan pada komponen umum yang disebut PlatformIndependent Codebase (PIC), yang tersedia diGitHubpadahttps://github.com/awslabs/amazon-kinesis-video-streams-pic/. PIC berisi logika bisnis platform-independenuntuk tingkat rendah. Perpustakaanproduser Kinesis Video Streams C membungkus PIC dengan lapisan API tambahan yang memungkinkancallback dan peristiwa spesifik skenario dan platform. Perpustakaan produser Kinesis Video Streams Cmemiliki komponen-komponen berikut yang dibangun di atas PIC:

• Penyedia info perangkat— MengeksposDeviceInfostruktur yang dapat langsung dipasok ke PIC API.Ada satu seteasy-to-configurepenyedia, termasuk penyedia aplikasi yang dioptimalkan skenario yangdapat mengoptimalkan toko konten berdasarkan jumlah dan jenis aliran yang menangani aplikasi Andadan jumlah buffering yang diperlukan dikonfigurasi berdasarkan jumlah RAM yang tersedia.

• Penyedia info stream— MengeksposStreamInfostruktur yang dapat langsung dipasok ke PIC API.Ada satu seteasy-to-configurepenyedia yang khusus untuk jenis aplikasi dan jenis umum dari skenariostreaming. Ini termasuk penyedia seperti video, audio, audio/video multitrack, dll Masing-masing skenarioini memiliki default yang dapat Anda sesuaikan sesuai dengan kebutuhan aplikasi Anda.

• Penyedia panggilan balik— MengeksposClientCallbacksstruktur yang dapat langsung dipasok kePIC API. Ini termasuk satu seteasy-to-configurepenyedia callback untuk jaringan (callback API berbasisCURL), otorisasi (AWS credentials API), coba lagi streaming pada callback error, dll. API PenyediaCallback mengambil sejumlah argumen untuk dikonfigurasi, seperti Wilayah AWS dan informasiotorisasi (melalui sertifikat IoT atau melalui AWSAccessKeyID,SecretKey,SessionToken). Anda dapatmeningkatkan Callback Provider dengan callback kustom jika aplikasi Anda membutuhkan pemrosesanlebih lanjut dari callback tertentu untuk mencapai beberapa logika khusus aplikasi.

71

Amazon Kinesis Video Streams Panduan DeveloperMenempatkan Media Ke Aliran

• FrameOrderKoordinator- Membantu menangani sinkronisasi audio dan video untuk skenario multi-track. Ini memiliki perilaku default yang dapat Anda sesuaikan untuk menangani logika spesifik aplikasiAnda. Ini juga menyederhanakan kemasan metadata bingkai dalam struktur PIC Frame sebelummengirimkannya ke API PIC lapisan bawah. Untuk skenario non-multitrack, komponen ini adalah pass-through ke PIC PutFrame API.

Perpustakaan C menyediakan objek berikut untuk mengelola pengiriman data ke aliran video Kinesis:

• KinesisVideoKlien— Berisi informasi tentang informasi perangkat Anda dan mempertahankan callbackuntuk melaporkan peristiwa Kinesis Video Streams.

• KinesisVideoAliran— Merupakan informasi tentang parameter aliran video, seperti nama, periode retensidata, jenis konten media, dan sebagainya.

Menempatkan Media Ke AliranC library menyediakan metode (misalnya,PutKinesisVideoFrame) yang dapat Anda gunakan untukmemasukkan data ke dalamKinesisVideoStreamobjek. Perpustakaan kemudian mengelola keadaaninternal data, yang dapat mencakup tugas-tugas berikut:

• Melakukan autentikasi.• Menonton latensi jaringan. Jika latensi terlalu tinggi, perpustakaan mungkin memilih untuk menjatuhkan

frame.• Melacak status streaming sedang berlangsung.

Prosedur: Menggunakan C Producer SDKProsedur ini menunjukkan bagaimana menggunakan klien Kinesis Video Streams dan sumber mediadalam aplikasi C untuk mengirim frame video yang dikodekan H.264 ke aliran video Kinesis Anda.

Prosedur ini mencakup langkah-langkah berikut:

• Langkah 1: Unduh Kode Perpustakaan Produser C (p. 74)• Langkah 2: Menulis dan Periksa Kode (p. 74)• Langkah 3: Jalankan dan Verifikasi Kode (p. 76)

Prasyarat• Kredensial— Dalam kode contoh, Anda memberikan kredensi dengan menentukan profil yang Anda

siapkan di file profil kredensia AWS Anda. Jika Anda belum melakukannya, pertama-tama siapkan profilkredensi Anda.

Untuk informasi selengkapnya, lihatMenyiapkan Kredenal dan Wilayah AWS untuk Pengembangan.• Integrasi toko sertifikat— Perpustakaan Produser Kinesis Video Streams harus membangun

kepercayaan dengan layanan yang dipanggilnya. Hal ini dilakukan dengan memvalidasi otoritassertifikasi (CA) di toko sertifikat publik. Pada model berbasis Linux, toko ini terletak di/etc/ssl/Direktori.

Unduh sertifikat dari lokasi berikut ke toko sertifikat Anda:

https://www.amazontrust.com/repository/SFSRootCAG2.pem• Instal dependensi build berikut untuk macOS:

• Autoconf 2,69(Lisensi GPLv3+/AutoConf: GNU GPL versi 3 atau yang lebih baru)

72

Amazon Kinesis Video Streams Panduan DeveloperProsedur: Menggunakan C Producer SDK

• CMake 3.7 atau 3.8• Konfigurasi PKG• Flex 2.5.35 Apple (flex-31) atau yang lebih baru• Bison 2.4(Lisensi GNU)• Automake 1.15.1(Lisensi GNU)• GNU Libtool (versi Apple Inc. cctools-898)• XCode (macOS)/dentang/gcc (xcode-pilih versi 2347)• Java Development Kit (JDK) (untuk kompilasi Java JNI)• Lib-Pkg

• Instal dependensi build berikut untuk Ubuntu (respons terhadap perintah versi terpotong):• Instal Git:sudo apt-get install git

$ git --versiongit version 2.14.1

• PasangCMake:sudo apt-get install cmake

$ cmake --versioncmake version 3.9.1

• Instal Libtool:sudo apt-get install libtool

2.4.6-2

• Instal libtool-bin:sudo apt-get install libtool-bin

$ libtool --versionlibtool (GNU libtool) 2.4.6Written by Gordon Matzigkeit, 1996

• Instal GNU Automake:sudo apt-get install automake

$ automake --versionautomake (GNU automake) 1.15

• Instal GNU Bison:sudo apt-get install bison

$ bison -Vbison (GNU Bison) 3.0.4

• Instal G ++:sudo apt-get install g++

g++ --versiong++ (Ubuntu 7.2.0-8ubuntu3) 7.2.0

• Instal curl:sudo apt-get install curl

$ curl --versioncurl 7.55.1 (x86_64-pc-linux-gnu) libcurl/7.55.1 OpenSSL/1.0.2g zlib/1.2.11 libidn2/2.0.2 libpsl/0.18.0 (+libidn2/2.0.2) librtmp/2.3

• Instal pkg-config:sudo apt-get install pkg-config

$ pkg-config --version0.29.1

73

Amazon Kinesis Video Streams Panduan DeveloperLangkah 1: Unduh Kode

• Instal Flex:sudo apt-get install flex

$ flex --versionflex 2.6.1

• Instal OpenJDK:sudo apt-get install openjdk-8-jdk

$ java -versionopenjdk version "1.8.0_171"

• MenetapkanJAVA_HOMEVariabel lingkungan:export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/

• Jalankan skrip build:./install-script

Langkah SelanjutnyaLangkah 1: Unduh Kode Perpustakaan Produser C (p. 74)

Langkah 1: Unduh Kode Perpustakaan Produser CPada bagian ini, Anda mengunduh pustaka tingkat rendah. Untuk prasyarat dan rincian lainnya tentangcontoh ini, lihatMenggunakan C Producer Library.

1. Buat direktori, lalu kloning kode sumber contoh dariGitHubrepositori.

git clone --recursive https://github.com/awslabs/amazon-kinesis-video-streams-producer-c.git

Note

Jika Anda melewatkan menjalankan git clone dengan--recursive, jalankangitsubmodule update --initdiamazon-kinesis-video-streams-producer-c/open-sourcedirektori. Anda juga harus menginstal pkg-config, automake, CMake, danmembangun lingkungan.Untuk informasi selengkapnya, lihatREADME.mddihttps://github.com/awslabs/amazon-kinesis-video-streams-producer-c.git.

2. Buka kode di lingkungan pengembangan terpadu (IDE) pilihan Anda (misalnya,Gerhana).

Langkah SelanjutnyaLangkah 2: Menulis dan Periksa Kode (p. 74)

Langkah 2: Menulis dan Periksa KodePada bagian ini, Anda memeriksa kode aplikasisampelKvsVideoOnlyStreamingSample.cdisamplesfolderhttps://github.com/awslabs/amazon-kinesis-video-streams-producer-crepo padaGitHub. Anda mengunduh kode ini pada langkah sebelumnya. Contohini menunjukkan cara menggunakan library produser C untuk mengirim bingkai video berkode H.264 didalam foldersamples/h264SampleFrameske aliran video Kinesis Anda.

Aplikasi sampel ini memiliki tiga bagian:

74

Amazon Kinesis Video Streams Panduan DeveloperLangkah 2: Menulis dan Periksa Kode

• Inisialisasi dan konfigurasi:• Menginisialisasi dan mengkonfigurasi pipa media spesifik platform.• Menginisialisasi dan mengkonfigurasiKinesisVideoKlien danKinesisVideoStreaming untuk pipa,

pengaturan callback, mengintegrasikan otentikasi skenario spesifik, mengekstraksi dan mengirimkandata pribadi codec, dan mendapatkan aliran ke keadaan READY.

• Loop utama:• Mendapatkan frame dari pipa media dengan cap waktu dan bendera.• Mengirimkan frame keKinesisVideoArus.

• Teardown:• Menghentikan (sync)KinesisVideoStreaming, membebaskanKinesisVideoStreaming,

membebaskanKinesisVideoKlien.

Contoh aplikasi ini menyelesaikan hal-hal berikut:

• MemanggilcreateDefaultDeviceInfoAPI untuk membuatdeviceInfoobjek yang berisi informasitentang konfigurasi perangkat atau penyimpanan.

// default storage size is 128MB. Use setDeviceInfoStorageSize after create to change storage size.CHK_STATUS(createDefaultDeviceInfo(&pDeviceInfo));// adjust members of pDeviceInfo here if needed pDeviceInfo->clientInfo.loggerLogLevel = LOG_LEVEL_DEBUG;

• MemanggilcreateRealtimeVideoStreamInfoProviderAPI untuk membuatStreamInfoobjek.

CHK_STATUS(createRealtimeVideoStreamInfoProvider(streamName, DEFAULT_RETENTION_PERIOD, DEFAULT_BUFFER_DURATION, &pStreamInfo));// adjust members of pStreamInfo here if needed

• MemanggilcreateDefaultCallbacksProviderWithAwsCredentialsAPI untuk membuatpenyedia callback default berdasarkan kredensi AWS statis.

CHK_STATUS(createDefaultCallbacksProviderWithAwsCredentials(accessKey, secretKey, sessionToken, MAX_UINT64, region, cacertPath, NULL, NULL, FALSE, &pClientCallbacks));

• MemanggilcreateKinesisVideoClientAPI untuk membuatKinesisVideoClientobjek yangberisi informasi tentang penyimpanan perangkat Anda dan mempertahankan callback untuk melaporkanperistiwa Kinesis Video Streams.

CHK_STATUS(createKinesisVideoClient(pDeviceInfo, pClientCallbacks, &clientHandle));

• MemanggilcreateKinesisVideoStreamSyncAPI untuk membuatKinesisVideoStreamobjek.

75

Amazon Kinesis Video Streams Panduan DeveloperLangkah 3: Jalankan dan Verifikasi Kode

CHK_STATUS(createKinesisVideoStreamSync(clientHandle, pStreamInfo, &streamHandle));

• Mengatur bingkai sampel dan panggilanPutKinesisVideoFrameAPI untuk mengirim frame itukeKinesisVideoStreamobjek.

// setup sample frame MEMSET(frameBuffer, 0x00, frameSize); frame.frameData = frameBuffer; frame.version = FRAME_CURRENT_VERSION; frame.trackId = DEFAULT_VIDEO_TRACK_ID; frame.duration = HUNDREDS_OF_NANOS_IN_A_SECOND / DEFAULT_FPS_VALUE; frame.decodingTs = defaultGetTime(); // current time frame.presentationTs = frame.decodingTs;

while(defaultGetTime() > streamStopTime) { frame.index = frameIndex; frame.flags = fileIndex % DEFAULT_KEY_FRAME_INTERVAL == 0 ? FRAME_FLAG_KEY_FRAME : FRAME_FLAG_NONE; frame.size = SIZEOF(frameBuffer);

CHK_STATUS(readFrameData(&frame, frameFilePath));

CHK_STATUS(putKinesisVideoFrame(streamHandle, &frame)); defaultThreadSleep(frame.duration);

frame.decodingTs += frame.duration; frame.presentationTs = frame.decodingTs; frameIndex++; fileIndex++; fileIndex = fileIndex % NUMBER_OF_FRAME_FILES; }

• Teardown:

CHK_STATUS(stopKinesisVideoStreamSync(streamHandle));CHK_STATUS(freeKinesisVideoStream(&streamHandle));CHK_STATUS(freeKinesisVideoClient(&clientHandle));

Langkah SelanjutnyaLangkah 3: Jalankan dan Verifikasi Kode (p. 76)

Langkah 3: Jalankan dan Verifikasi Kode

Untuk menjalankan dan memverifikasi kode untukProsedur Pustaka, lakukan hal berikut:

1. Jalankan perintah berikut untuk membuatbuilddirektori diyang diunduh C SDK, danmengeksekusicmakedari itu:

mkdir -p amazon-kinesis-video-streams-producer-c/build;

76

Amazon Kinesis Video Streams Panduan DeveloperLangkah 3: Jalankan dan Verifikasi Kode

cd amazon-kinesis-video-streams-producer-c/build; cmake ..

Anda dapat melewati opsi berikutcmake ..

• -DBUILD_DEPENDENCIES- apakah atau tidak untuk membangun tergantung perpustakaan darisumber

• -DBUILD_TEST=TRUE- membangun unit/tes integrasi, mungkin berguna untuk mengkonfirmasidukungan untuk perangkat Anda.

./tst/webrtc_client_test

• -DCODE_COVERAGE-enable pelaporan cakupan• -DCOMPILER_WARNINGS- Aktifkan semua peringatan kompilator• -DADDRESS_SANITIZER- membangun denganAddressSanitizer• -DMEMORY_SANITIZER- membangun denganMemorySanitizer• -DTHREAD_SANITIZER- membangun denganThreadSanitizer• -DUNDEFINED_BEHAVIOR_SANITIZER- membangun denganUndefinedBehaviorPembersih• -DALIGNED_MEMORY_MODEL- membangun untuk model memori selaras hanya perangkat. Default-

nya adalah OFF.2. Arahkan kebuilddirektori yang baru saja Anda buat dengan langkah di atas, dan jalankanmakeuntuk

membangun WebRTC C SDK dan sampel yang disediakan.

make

3. Aplikasi sampelkinesis_video_cproducer_video_only_samplemengirimkan bingkai videoh.264-dikodekan di dalam foldersamples/h264SampleFramesArus Kinesis Video Streams. Perintahberikut mengirimkan frame video dalam satu lingkaran selama sepuluh detik ke Kinesis Video Streams:

./kinesis_video_cproducer_video_only_sample YourStreamName 10

Jika Anda ingin mengirim frame H.264-dikodekan dari folder lain (misalnya,MyH264FramesFolder),Anda dapat menjalankan sampel dengan argumen berikut:

./kinesis_video_cproducer_video_only_sample YourStreamName 10 MyH264FramesFolder

4. Untuk mengaktifkan log verbose, tentukanHEAP_DEBUGdanLOG_STREAMINGC-mendefinisikan denganuncommenting baris yang sesuai diCMakeList.txt.

Anda dapat memantau kemajuan suite dalam output debug di IDE Anda. Anda juga dapatmemantau lalu lintas di aliran Anda dengan menonton metrik yang terkait dengan aliran Anda diAmazonCloudWatchkonsol, sepertiPutMedia.IncomingBytes.

Note

Konsol tidak menampilkan data sebagai aliran video karena harness uji hanya mengirimkan framebyte kosong.

77

Amazon Kinesis Video Streams Panduan DeveloperReferensi

Referensi SDK ProdusenBagian ini berisi batas, kode kesalahan, dan informasi referensi lainnya untukPustaka Produsen KinesisVideo Streams (p. 52).

Topik• Batas SDK Produsen (p. 78)• Referensi Kode Kesalahan (p. 80)• Referensi Bendera Adaptasi Lapisan Abstraksi Jaringan (NAL) (p. 104)• Struktur SDK Produsen (p. 105)• Struktur Arus Video Kinesis (p. 107)• Callback Produsen (p. 118)

Batas SDK ProdusenTabel berikut berisi batas saat ini untuk nilai dalamPustaka Produsen (p. 52).

Note

Sebelum menetapkan nilai-nilai ini, Anda harus memvalidasi input Anda. SDK tidak memvalidasibatas ini, dan terjadi kesalahan runtime jika batas terlampaui.

Nilai Kuota Catatan

Jumlah aliran maksimal 128 Jumlah maksimum stream yangdapat dibuat objek produser.Ini adalah batas lembut (Andadapat meminta kenaikan). Inimemastikan bahwa produsertidak sengaja membuat aliransecara rekursif.

Panjang nama perangkat maks 128 karakter  

Jumlah tag maks 50 per stream  

Panjang nama stream maks 256 karakter  

Ukuran penyimpanan minimum 10 MiB = 10 * 1024 * 1024 byte  

Ukuran penyimpanan maksimal 10 GiB = 10 * 1024 * 1024 byte  

Panjang jalur direktori root maks 4.096 karakter  

Panjang info auth maks 10.000 byte  

Panjang string URI maks 10.000 karakter  

Panjang nama tag maksimal 128 karakter  

Panjang nilai tag maksimal 1.024 karakter  

Periode token keamanan min 30 detik  

78

Amazon Kinesis Video Streams Panduan DeveloperBatas SDK Produsen

Nilai Kuota Catatan

Masa tenggang keamanan 40 menit Jika durasi yang ditentukan lebihpanjang, itu terbatas pada nilaiini.

Periode penahanan 0 atau lebih dari satu jam 0 menunjukkan tidak ada retensi.

Durasi klaster minimum 1 detik Nilai ditentukan dalam 100 unitns, yang merupakan standarSDK.

Durasi klaster maksimal 30 detik Nilai ditentukan dalam 100 unitns, yang merupakan standarSDK. API backend dapatmenerapkan durasi klaster yanglebih pendek.

Ukuran fragmen maksimal 50 MB Untuk informasi selengkapnya,lihat Batas Arus Kinesis VideoStreams (p. 168).

Durasi fragmen maks 10 detik Untuk informasi selengkapnya,lihat Batas Arus Kinesis VideoStreams (p. 168).

Durasi koneksi maks 45 menit Backend menutup koneksisetelah waktu ini. SDK memutartoken dan menetapkan koneksibaru dalam waktu ini.

Panjang segmen Max ACK 1.024 karakter Panjang segmen maksimumpengakuan dikirim ke fungsi ACKparser.

Max jenis konten panjang string 128 karakter  

Panjang string ID codec maks 32 karakter  

Panjang string nama track maks 32 karakter  

Panjang data pribadi codec maks 1 MiB = 1 * 1024 * 1024 byte  

Panjang nilai skala timecode min 100 ns Nilai skala timecode minimumuntuk mewakili stempel waktubingkai di cluster MKV yangdihasilkan. Nilai ditentukandengan penambahan sebesar100 ns, yang merupakan standarSDK.

Panjang nilai skala timecodemaks

1 detik Nilai skala timecode maksimumuntuk mewakili stempel waktubingkai di cluster MKV yangdihasilkan. Nilai ditentukandengan penambahan sebesar100 ns, yang merupakan standarSDK.

Min konten tampilan item count 10  

79

Amazon Kinesis Video Streams Panduan DeveloperReferensi Kode Kesalahan

Nilai Kuota Catatan

Durasi buffer minimum 20 detik Nilai ditentukan denganpenambahan sebesar 100 ns,yang merupakan standar SDK.

Max panjang versi pembaruan 128 karakter  

Panjang ARN maks 1024 karakter  

Panjang urutan fragmenmaksimal

128 karakter  

Periode retensi maks 10 tahun  

Referensi Kode KesalahanBagian ini berisi informasi kesalahan dan kode status untukPustaka Produsen (p. 52).

Untuk informasi tentang solusi untuk masalah umum, lihatMemecahkan Kinesis Video Streams (p. 174).

Topik• Kesalahan dan Kode Status Dikembalikan olehPutFrameCallback - Kode Independen Platform

(PIT) (p. 80)• Kesalahan dan Kode Status Dikembalikan olehPutFrameCallback - C Produser

Perpustakaan (p. 103)

Kesalahan dan Kode Status Dikembalikan olehPutFrameCallback- Kode Independen Platform (PIT)Bagian berikut berisi informasi kesalahan dan status yang dikembalikan oleh callbackuntukPutFrameoperasi dalam Platform Independent Codebase (PIT).

Topik• Kesalahan dan Kode Status Dikembalikan oleh Perpustakaan Klien (p. 80)• Kesalahan dan Kode Status Dikembalikan oleh Pustaka Durasi (p. 94)• Kesalahan dan Kode Status Dikembalikan oleh Perpustakaan Umum (p. 95)• Kesalahan dan Kode Status Dikembalikan oleh Heap Library (p. 96)• Kesalahan dan Kode Status Dikembalikan oleh Perpustakaan MKVGen (p. 97)• Kesalahan dan Kode Status Dikembalikan oleh Trace Library (p. 101)• Kesalahan dan Kode Status Dikembalikan oleh Perpustakaan Utils (p. 101)• Kesalahan dan Kode Status Dikembalikan oleh View Library (p. 101)

Kesalahan dan Kode Status Dikembalikan oleh Perpustakaan Klien

Tabel berikut berisi kesalahan dan status informasi yang dikembalikan oleh metode di Kinesis VideoStreamsClientPustaka.

80

Amazon Kinesis Video Streams Panduan DeveloperReferensi Kode Kesalahan

Code Message Deskripsi Tindakan yangDirekomendasikan

0x52000001 STATUS_MAX_STREAM_COUNTJumlah aliranmaksimum tercapai.

Tentukan jumlahaliran maks yang lebihbesarDeviceInfosebagaimanaditentukan dalamBatas SDKProdusen (p. 78).

0x52000002 STATUS_MIN_STREAM_COUNTKesalahan jumlahaliran minimum.

Tentukan jumlah maksimumaliran yang lebih besar dari 0diDeviceInfo.

0x52000003 STATUS_INVALID_DEVICE_NAME_LENGTHPanjang namaperangkat tidak valid.

Lihat panjang namaperangkat maks dalamkarakter yang ditentukandalamBatas SDKProdusen (p. 78).

0x52000004 STATUS_INVALID_DEVICE_INFO_VERSIONTidakberlakunyaDeviceInfoversistruktur.

Tentukan versi struktur saatini yang benar.

0x52000005 STATUS_MAX_TAG_COUNT Jumlah tag maksimumtercapai.

Lihat jumlah tag max saat iniyang ditentukan dalamBatasSDK Produsen (p. 78).

0x52000006 STATUS_DEVICE_FINGERPRINT_LENGTH

0x52000007 STATUS_INVALID_CALLBACKS_VERSIONTidakberlakunyaCallbacksversistruktur.

Tentukan versi struktur saatini yang benar.

0x52000008 STATUS_INVALID_STREAM_INFO_VERSIONTidakberlakunyaStreamInfoversistruktur.

Tentukan versi struktur saatini yang benar.

0x52000009 STATUS_INVALID_STREAM_NAME_LENGTHPanjang nama streamtidak valid.

Lihat panjang nama streammax dalam karakter yangditentukan dalamBatas SDKProdusen (p. 78).

0x5200000a STATUS_INVALID_STORAGE_SIZEUkuran penyimpananyang tidak valid telahditentukan.

Ukuran penyimpanandalam byte harus beradadalam batas yangditentukan dalamBatas SDKProdusen (p. 78).

0x5200000b STATUS_INVALID_ROOT_DIRECTORY_LENGTHPanjang stringdirektori root tidakvalid.

Mengacu pada panjang jalurdirektori root maks yangditentukan dalamBatas SDKProdusen (p. 78).

0x5200000c STATUS_INVALID_SPILL_RATIORasio tumpahan tidakvalid.

Ekspresikan rasio tumpahansebagai persentase dari 0sampai 100.

81

Amazon Kinesis Video Streams Panduan DeveloperReferensi Kode Kesalahan

Code Message Deskripsi Tindakan yangDirekomendasikan

0x5200000d STATUS_INVALID_STORAGE_INFO_VERSIONTidakberlakunyaStorageInfoversistruktur.

Tentukan versi struktur saatini yang benar.

0x5200000e STATUS_INVALID_STREAM_STATEAliran ini dalamkeadaan yang tidakmengizinkan operasisaat ini.

Paling umum, kesalahanini terjadi ketika SDK gagalmencapai keadaan yangdibutuhkan untuk melakukanoperasi yang diminta.Misalnya, hal itu terjadijikaGetStreamingEndpointAPIpanggilan gagal, dan aplikasiklien mengabaikan dan terusmenempatkan frame kedalam sungai.

0x5200000f STATUS_SERVICE_CALL_CALLBACKS_MISSINGParameterCallbacksstrukturtelah hilang titikmasuk fungsi untukbeberapa fungsi wajib.

Pastikan bahwa callbackwajib diimplementasikandalam aplikasi klien.Kesalahan ini hanya terpaparpada klien PIC (PlatformIndependent Code). C ++dan pembungkus tingkattinggi lainnya memenuhipanggilan ini.

0x52000010 STATUS_SERVICE_CALL_NOT_AUTHORIZED_ERRORTidak diotorisasi. Verifikasi token keamanan/sertifikat/keamanan tokenintegrasi/kedaluwarsa.Pastikan bahwa tokenmemiliki hak terkait yangbenar dengannya. Untukaplikasi sampel KinesisVideo Streams, pastikanbahwa variabel lingkungandiatur dengan benar.

0x52000011 STATUS_DESCRIBE_STREAM_CALL_FAILEDDescribeStreamKegagalanAPI.

Kesalahan ini dikembalikansetelahDescribeStreamAPIcoba lagi kegagalan.Klien PIC mengembalikankesalahan ini setelahmenyerah mencoba kembali.

0x52000012 STATUS_INVALID_DESCRIBE_STREAM_RESPONSETidakberlakunyaDescribeStreamResponsestruktur.

Struktur yang diteruskankeDescribeStreamResultEventadalahnull atau berisi item yangtidak valid seperti AmazonResource Name (ARN) nol.

82

Amazon Kinesis Video Streams Panduan DeveloperReferensi Kode Kesalahan

Code Message Deskripsi Tindakan yangDirekomendasikan

0x52000013 STATUS_STREAM_IS_BEING_DELETED_ERRORArus sedang dihapus. Kegagalan API disebabkanoleh aliran yang dihapus.Pastikan bahwa tidak adaproses lain yang mencobauntuk menghapus aliran saataliran sedang digunakan.

0x52000014 STATUS_SERVICE_CALL_INVALID_ARG_ERRORArgumen tidak validditentukan untukpanggilan layanan.

Backend mengembalikankesalahan ini ketika argumenpanggilan layanan tidak validatau ketika SDK menemukankesalahan yang tidak dapatditafsirkan.

0x52000015 STATUS_SERVICE_CALL_DEVICE_NOT_FOUND_ERRORPerangkat tidakditemukan.

Pastikan perangkat tidakdihapus saat digunakan.

0x52000016 STATUS_SERVICE_CALL_DEVICE_NOT_PROVISIONED_ERRORPerangkat itu tidakdisediakan.

Pastikan perangkat telahdisediakan.

0x52000017 STATUS_SERVICE_CALL_RESOURCE_NOT_FOUND_ERRORSumber daya generiktidak ditemukandikembalikan darilayanan.

Kesalahan ini terjadiketika layanan tidak dapatmenemukan sumber daya(misalnya, stream). Inimungkin berarti hal yangberbeda dalam konteks yangberbeda, tetapi kemungkinanpenyebabnya adalahpenggunaan API sebelumstream dibuat. MenggunakanSDK memastikan bahwaaliran dibuat terlebih dahulu.

0x52000018 STATUS_INVALID_AUTH_LENPanjang info authtidak valid.

Mengacu pada nilai-nilaisaat ini yang ditentukandalamBatas SDKProdusen (p. 78).

0x52000019 STATUS_CREATE_STREAM_CALL_FAILEDParameterCreateStreamPanggilanAPI gagal.

Lihat string kesalahan untukinformasi lebih rinci tentangmengapa operasi gagal.

0x5200002a STATUS_GET_STREAMING_TOKEN_CALL_FAILEDParameterGetStreamingTokenpanggilangagal.

Lihat string kesalahan untukinformasi lebih rinci tentangmengapa operasi gagal.

0x5200002b STATUS_GET_STREAMING_ENDPOINT_CALL_FAILEDParameterGetStreamingEndpointPanggilanAPI gagal.

Lihat string kesalahan untukinformasi lebih rinci tentangmengapa operasi gagal.

0x5200002c STATUS_INVALID_URI_LENPanjang stringURI tidak validdikembalikandariGetStreamingEndpointAPI.

Lihat nilai maksimum saat iniyang ditentukan dalamBatasSDK Produsen (p. 78).

83

Amazon Kinesis Video Streams Panduan DeveloperReferensi Kode Kesalahan

Code Message Deskripsi Tindakan yangDirekomendasikan

0x5200002d STATUS_PUT_STREAM_CALL_FAILEDParameterPutMediaPanggilanAPI gagal.

Lihat string kesalahan untukinformasi lebih rinci tentangmengapa operasi gagal.

0x5200002e STATUS_STORE_OUT_OF_MEMORYToko kontenkehabisan memori.

Toko konten dibagi antaraaliran dan harus memilikikapasitas yang cukupuntuk menyimpan durasimaksimum untuk semuaaliran + ~ 20% (akuntansiuntuk defragmentasi).Penting untuk tidakmeluap penyimpanan.Pilih nilai untuk durasimaksimum per aliran yangsesuai dengan ukuranpenyimpanan kumulatifdan toleransi latensi. Lebihbaik menjatuhkan framesaat jatuh dari jendelatampilan konten versushanya diletakkan (tekananmemori toko konten). Halini karena menjatuhkanframe memicu callbacknotifikasi tekanan aliran.Kemudian aplikasi dapatmenyesuaikan komponenmedia hulu (seperti encoder)untuk mengencerkan bitrate,drop frame, atau bertindaksesuai.

0x5200002f STATUS_NO_MORE_DATA_AVAILABLETidak ada lagi datayang tersedia saat iniuntuk streaming.

Ini adalah hasil yang validpotensial ketika pipa mediamenghasilkan lebih lambatdaripada benang jaringanmengkonsumsi frame untukdikirim ke layanan. Klientingkat tinggi (misalnya, C++, Java, atau Android) tidakmelihat peringatan ini karenaditangani secara internal.

0x52000030 STATUS_INVALID_TAG_VERSIONTidakberlakunyaTagversistruktur.

Tentukan versi struktur saatini yang benar.

0x52000031 STATUS_SERVICE_CALL_UNKNOWN_ERRORKesalahan yang tidakdiketahui atau generikdikembalikan daritumpukan jaringan.

Lihat log untuk informasilebih rinci.

84

Amazon Kinesis Video Streams Panduan DeveloperReferensi Kode Kesalahan

Code Message Deskripsi Tindakan yangDirekomendasikan

0x52000032 STATUS_SERVICE_CALL_RESOURCE_IN_USE_ERRORSumber daya yangdigunakan.

Kembali dari layanan. Untukinformasi selengkapnya, lihatReferensi API Kinesis VideoStreams.

0x52000033 STATUS_SERVICE_CALL_CLIENT_LIMIT_ERRORBatas klien. Kembali dari layanan. Untukinformasi selengkapnya, lihatReferensi API Kinesis VideoStreams.

0x52000034 STATUS_SERVICE_CALL_DEVICE_LIMIT_ERRORBatas perangkat. Kembali dari layanan. Untukinformasi selengkapnya, lihatReferensi API Kinesis VideoStreams.

0x52000035 STATUS_SERVICE_CALL_STREAM_LIMIT_ERRORBatas aliran. Kembali dari layanan. Untukinformasi selengkapnya, lihatReferensi API Kinesis VideoStreams.

0x52000036 STATUS_SERVICE_CALL_RESOURCE_DELETED_ERRORSumber daya dihapusatau dihapus.

Kembali dari layanan. Untukinformasi selengkapnya, lihatReferensi API Kinesis VideoStreams.

0x52000037 STATUS_SERVICE_CALL_TIMEOUT_ERRORWaktu layanan habis. Memanggil API layanantertentu menghasilkan bataswaktu. Pastikan bahwaAnda memiliki koneksijaringan yang valid. PIC akanmencoba lagi operasi secaraotomatis.

0x52000038 STATUS_STREAM_READY_CALLBACK_FAILEDStreamingpemberitahuan siap.

Pemberitahuan ini dikirimdari PIC ke klien yangmenunjukkan bahwa aliranasync telah dibuat.

0x52000039 STATUS_DEVICE_TAGS_COUNT_NON_ZERO_TAGS_NULLTag tidak validditentukan.

Jumlah tag tidak nol, tetapitag kosong. Pastikan bahwatag ditentukan atau hitunganadalah nol.

0x5200003a STATUS_INVALID_STREAM_DESCRIPTION_VERSIONTidakberlakunyaStreamDescriptionversistruktur.

Tentukan versi struktur saatini yang benar.

0x5200003b STATUS_INVALID_TAG_NAME_LENPanjang nama tagtidak valid.

Lihat batas untuk nama tagyang ditentukan dalamBatasSDK Produsen (p. 78).

0x5200003c STATUS_INVALID_TAG_VALUE_LENPanjang nilai tag tidakvalid.

Lihat batas untuk nilai tagyang ditentukan dalamBatasSDK Produsen (p. 78).

85

Amazon Kinesis Video Streams Panduan DeveloperReferensi Kode Kesalahan

Code Message Deskripsi Tindakan yangDirekomendasikan

0x5200003d STATUS_TAG_STREAM_CALL_FAILEDParameterTagResourceAPIgagal.

ParameterTagResourcePanggilanAPI gagal. Periksa koneksijaringan yang valid. Lihat loguntuk informasi lebih lanjuttentang kegagalan.

0x5200003e STATUS_INVALID_CUSTOM_DATAData kustom tidakvalid memanggil APIPIC.

Data kustom tidak valid telahditentukan dalam panggilanke API PIC. Hal ini dapatterjadi hanya pada klien yanglangsung menggunakan PIC.

0x5200003f STATUS_INVALID_CREATE_STREAM_RESPONSETidakberlakunyaCreateStreamResponsestruktur.

Struktur atau bidanganggotanya tidak valid(yaitu, ARN adalah null ataulebih besar dari apa yangditentukan dalamBatas SDKProdusen (p. 78)).

0x52000040 STATUS_CLIENT_AUTH_CALL_FAILEDAutentikasi kliengagal.

PIC gagal mendapatkaninformasi autentikasiyang tepat(yaitu,AccessKeyIdatauSecretAccessKey)setelah sejumlahretries. Periksa integrasiotentikasi. Aplikasisampel menggunakanvariabel lingkunganuntuk meneruskaninformasi kredenensial kePerpustakaan Produser C ++.

0x52000041 STATUS_GET_CLIENT_TOKEN_CALL_FAILEDMendapatkanpanggilan tokenkeamanan gagal.

Situasi ini dapat terjadi untukklien yang menggunakanPIC secara langsung.Setelah sejumlah percobaanulang, panggilan gagaldengan kesalahan ini.

0x52000042 STATUS_CLIENT_PROVISION_CALL_FAILEDKesalahanpenyediaan.

Penyediaan tidakdilaksanakan.

0x52000043 STATUS_CREATE_CLIENT_CALL_FAILEDGagal membuat klienproduser.

Kesalahan generik yangdikembalikan oleh PICsetelah sejumlah percobaanulang ketika pembuatan kliengagal.

0x52000044 STATUS_CLIENT_READY_CALLBACK_FAILEDGagal mendapatkanklien produser kekeadaan READY.

Dikembalikan oleh mesinnegara PIC jika PIC gagalpindah ke negara READY.Lihat log untuk informasilebih lanjut tentang akarpenyebabnya.

86

Amazon Kinesis Video Streams Panduan DeveloperReferensi Kode Kesalahan

Code Message Deskripsi Tindakan yangDirekomendasikan

0x52000045 STATUS_TAG_CLIENT_CALL_FAILEDParameterTagResourceuntukklien produser gagal.

ParameterTagResourcePanggilanAPI gagal untuk klienproduser. Lihat log untukinformasi lebih lanjut tentangakar penyebabnya.

0x52000046 STATUS_INVALID_CREATE_DEVICE_RESPONSEPembuatanPerangkat/Produsergagal.

SDK tingkat lebih tinggi(misalnya, C++ atau Java)belum mengimplementasikanAPI pembuatan perangkat/produser. Klien yangmenggunakan PICsecara langsung dapatmenunjukkan kegagalanmenggunakan notifikasihasil.

0x52000047 STATUS_ACK_TIMESTAMP_NOT_IN_VIEW_WINDOWCap waktu ACK yangditerima tidak dalampandangan.

Kesalahan ini terjadi jikaframe yang sesuai denganACK diterima jatuh darijendela tampilan konten.Umumnya, ini terjadi jikapengiriman ACK lambat. Halini dapat ditafsirkan sebagaiperingatan dan indikasibahwa downlink lambat.

0x52000048 STATUS_INVALID_FRAGMENT_ACK_VERSIONTidakberlakunyaFragmentAckversistruktur.

Tentukan versi saat ini yangbenarFragmentAckstruktur.

0x52000049 STATUS_INVALID_TOKEN_EXPIRATIONKedaluwarsa tokenkeamanan tidak valid.

Kedaluwarsa tokenkeamanan harus memilikicap waktu mutlak di masadepan yang lebih besardari stempel waktu saat ini,dengan masa tenggang.Untuk batas untuk masatenggang, lihatBatas SDKProdusen (p. 78).

0x5200004a STATUS_END_OF_STREAM Indikator akhir aliran(EOS).

DiGetStreamDataAPI call,menunjukkan bahwa sesiupload menangani saatini telah berakhir. Hal initerjadi jika sesi berakhir ataukesalahan, atau jika tokensesi telah kedaluwarsa dansesi sedang diputar.

0x5200004b STATUS_DUPLICATE_STREAM_NAMENama stream duplikat. Beberapa stream tidak dapatmemiliki nama stream yangsama. Pilih nama unik untukstream.

87

Amazon Kinesis Video Streams Panduan DeveloperReferensi Kode Kesalahan

Code Message Deskripsi Tindakan yangDirekomendasikan

0x5200004c STATUS_INVALID_RETENTION_PERIODPeriode retensi tidakvalid.

Periode retensi tidakvalid ditentukandalamStreamInfostruktur.Untuk informasi tentangrentang nilai yang valid untukperiode retensi, lihatBatasSDK Produsen (p. 78).

0x5200004d STATUS_INVALID_ACK_KEY_STARTTidakberlakunyaFragmentAck.

Gagal mengurai fragmenACK string. Indikator awalkunci tidak valid. FragmenACK string mungkin rusak.Hal ini dapat diri benardan kesalahan ini dapatdiperlakukan sebagaiperingatan.

0x5200004e STATUS_INVALID_ACK_DUPLICATE_KEY_NAMETidakberlakunyaFragmentAck.

Gagal mengurai fragmenACK string. Beberapakunci memiliki nama yangsama. Fragmen ACK stringmungkin rusak. Hal ini dapatdiri benar dan kesalahan inidapat diperlakukan sebagaiperingatan.

0x5200004f STATUS_INVALID_ACK_INVALID_VALUE_STARTTidakberlakunyaFragmentAck.

Gagal mengurai fragmenACK string karena indikatorawal nilai kunci yang tidakvalid. Fragmen ACK stringmungkin rusak. Hal ini dapatmengoreksi diri sendiri,dan kesalahan ini dapatdiperlakukan sebagaiperingatan.

0x52000050 STATUS_INVALID_ACK_INVALID_VALUE_ENDTidakberlakunyaFragmentAck.

Gagal mengurai fragmenACK string karena indikatornilai kunci akhir yang tidakvalid. Fragmen ACK stringmungkin rusak. Hal ini dapatdiri benar dan kesalahan inidapat diperlakukan sebagaiperingatan.

0x52000051 STATUS_INVALID_PARSED_ACK_TYPETidakberlakunyaFragmentAck.

Gagal mengurai fragmenACK string karena jenis ACKtidak valid ditentukan.

0x52000052 STATUS_STREAM_HAS_BEEN_STOPPEDStream dihentikan. Aliran telah dihentikan, tetapibingkai masih dimasukkanke dalam sungai.

88

Amazon Kinesis Video Streams Panduan DeveloperReferensi Kode Kesalahan

Code Message Deskripsi Tindakan yangDirekomendasikan

0x52000053 STATUS_INVALID_STREAM_METRICS_VERSIONTidakberlakunyaStreamMetricsversistruktur.

Tentukan versi saat ini yangbenarStreamMetricsstruktur.

0x52000054 STATUS_INVALID_CLIENT_METRICS_VERSIONTidakberlakunyaClientMetricsversistruktur.

Tentukan versi saat ini yangbenarClientMetricsstruktur.

0x52000055 STATUS_INVALID_CLIENT_READY_STATEInisialisasi produsergagal mencapaikeadaan READY.

Gagal mencapai keadaanREADY selama inisialisasiklien produser. Lihat loguntuk informasi lebih lanjut.

0x52000056 STATUS_STATE_MACHINE_STATE_NOT_FOUNDKesalahan mesinkeadaan internal.

Bukan kesalahan yangterlihat publik.

0x52000057 STATUS_INVALID_FRAGMENT_ACK_TYPEJenis ACK tidakvalid ditentukandalamFragmentAckstruktur.

ParameterFragmentAckstrukturharus berisi jenis ACKdidefinisikan dalam headerpublik.

0x52000058 STATUS_INVALID_STREAM_READY_STATEKesalahan transisimesin negara internal.

Bukan kesalahan yangterlihat publik.

0x52000059 STATUS_CLIENT_FREED_BEFORE_STREAMObjek sungaidibebaskan setelahproduser dibebaskan.

Ada upaya untukmembebaskan objek sungaisetelah objek produserdibebaskan. Hal ini hanyadapat terjadi pada klien yanglangsung menggunakan PIC.

0x5200005a STATUS_ALLOCATION_SIZE_SMALLER_THAN_REQUESTEDKesalahanpenyimpanan internal.

Kesalahan internal yangmenunjukkan bahwa ukuranalokasi aktual dari tokokonten lebih kecil dariukuran bingkai/fragmen yangdikemas.

0x5200005b STATUS_VIEW_ITEM_SIZE_GREATER_THAN_ALLOCATIONKesalahanpenyimpanan internal.

Ukuran tersimpan alokasidalam tampilan konten lebihbesar dari ukuran alokasi ditoko konten.

0x5200005c STATUS_ACK_ERR_STREAM_READ_ERRORStreaming membacakesalahan ACK.

Kesalahan bahwa ACKkembali dari backendmenunjukkan aliranmembaca/parsingkesalahan. Hal ini umumnyaterjadi ketika backendgagal untuk mengambilsungai. Auto-restreamingbiasanya dapat memperbaikikesalahan ini.

89

Amazon Kinesis Video Streams Panduan DeveloperReferensi Kode Kesalahan

Code Message Deskripsi Tindakan yangDirekomendasikan

0x5200005d STATUS_ACK_ERR_FRAGMENT_SIZE_REACHEDUkuran fragmenmaksimum tercapai.

Ukuran fragmen maksdalam byte didefinisikandalamBatas SDKProdusen (p. 78).Kesalahan ini menunjukkanbahwa ada bingkai yangsangat besar, atau tidak adabingkai kunci untuk membuatfragmen ukuran yang dapatdikelola. Periksa pengaturanencoder dan pastikan bahwaframe kunci diproduksidengan benar. Untuk aliranyang memiliki kepadatansangat tinggi, konfigurasikanencoder untuk menghasilkanfragmen pada durasi yanglebih kecil untuk mengelolaukuran maksimum.

0x5200005e STATUS_ACK_ERR_FRAGMENT_DURATION_REACHEDDurasi fragmenmaksimum tercapai.

Durasi fragmen maksdidefinisikan dalamBatasSDK Produsen (p. 78).Kesalahan ini menunjukkanbahwa ada frame yangsangat rendah per detik atautidak ada bingkai kunci untukmembuat fragmen durasiyang dapat dikelola. Periksapengaturan encoder danpastikan bahwa frame kuncidiproduksi dengan benarpada interval reguler.

0x5200005f STATUS_ACK_ERR_CONNECTION_DURATION_REACHEDDurasi koneksimaksimum tercapai.

Kinesis Video Streamsmemberlakukan durasikoneksi maks seperti yangditentukan dalamBatasSDK Produsen (p. 78).Producer SDK secaraotomatis memutar stream/token sebelum maksimumtercapai, sehingga klien yangmenggunakan SDK tidakboleh menerima kesalahanini.

0x52000060 STATUS_ACK_ERR_FRAGMENT_TIMECODE_NOT_MONOTONICTimecodes tidakmeningkat secaramonoton.

Producer SDKmemberlakukan capwaktu, sehingga klien yangmenggunakan SDK tidakboleh menerima kesalahanini.

90

Amazon Kinesis Video Streams Panduan DeveloperReferensi Kode Kesalahan

Code Message Deskripsi Tindakan yangDirekomendasikan

0x52000061 STATUS_ACK_ERR_MULTI_TRACK_MKVBeberapa trek diMKV.

Producer SDKmemberlakukan aliran trektunggal, sehingga klien yangmenggunakan SDK tidakboleh menerima kesalahanini.

0x52000062 STATUS_ACK_ERR_INVALID_MKV_DATAData MKV tidak valid. Backend MKV parsermengalami kesalahanparsing sungai. Klienyang menggunakan SDKmungkin mengalamikesalahan ini jika aliranrusak dalam transisi ataujika tekanan buffer memaksaSDK untuk menjatuhkanframe ekor yang sebagianditransmisikan. Dalam kasusterakhir, kami sarankanAnda mengurangi FPS/resolusi, meningkatkanrasio kompresi, atau(dalam kasus jaringan“bursty”) memungkinkanpenyimpanan konten yanglebih besar dan durasi bufferuntuk mengakomodasitekanan sementara.

0x52000063 STATUS_ACK_ERR_INVALID_PRODUCER_TIMESTAMPTimestamp produsertidak valid.

Layanan mengembalikankesalahan ini ACK jikajam produser memiliki driftbesar ke masa depan. SDKtingkat tinggi (misalnya, Javaatau C ++) menggunakanbeberapa versi jam sistemuntuk memenuhi callbackwaktu saat ini dari PIC.Pastikan jam sistem diaturdengan benar. Klien yangmenggunakan PIC secaralangsung harus memastikanbahwa fungsi callbackmereka mengembalikantimestamp yang benar.

91

Amazon Kinesis Video Streams Panduan DeveloperReferensi Kode Kesalahan

Code Message Deskripsi Tindakan yangDirekomendasikan

0x52000064 STATUS_ACK_ERR_STREAM_NOT_ACTIVEAliran tidak aktif. Panggilan ke API backenddibuat sementara streamtidak dalam keadaan “Aktif”.Hal ini terjadi ketika klienmenciptakan aliran dansegera terus mendorongframe ke dalamnya. SDKmenangani skenario inimelalui mesin negara danmekanisme pemulihan.

0x52000065 STATUS_ACK_ERR_KMS_KEY_ACCESS_DENIEDAWS KMSaksesditolak kesalahan.

Kembali ketika akun tidakmemiliki akses ke kunci yangditentukan.

0x52000066 STATUS_ACK_ERR_KMS_KEY_DISABLEDAWS KMSkuncidinonaktifkan

Kunci yang ditentukan telahdinonaktifkan.

0x52000067 STATUS_ACK_ERR_KMS_KEY_VALIDATION_ERRORAWS KMSKesalahanvalidasi kunci.

Kesalahan validasi generik.Untuk informasi lebih lanjut,lihat Referensi API AWS KeyManagement Service.

0x52000068 STATUS_ACK_ERR_KMS_KEY_UNAVAILABLEAWS KMSkunci tidaktersedia.

Kuncinya tidak tersedia.Untuk informasi lebih lanjut,lihat Referensi API AWS KeyManagement Service.

0x52000069 STATUS_ACK_ERR_KMS_KEY_INVALID_USAGEPenggunaan tidakvalidAWS KMSkunci.

ParameterAWS KMSkuncitidak dikonfigurasi untukdigunakan dalam konteks ini.Untuk informasi lebih lanjut,lihat Referensi API AWS KeyManagement Service.

0x5200006a STATUS_ACK_ERR_KMS_KEY_INVALID_STATEAWS KMSstatus tidakvalid.

Untuk informasi lebih lanjut,lihat Referensi API AWS KeyManagement Service.

0x5200006b STATUS_ACK_ERR_KMS_KEY_NOT_FOUNDAWS KMSKunci tidakditemukan.

Kuncinya tidak ditemukan.Untuk informasi lebih lanjut,lihat Referensi API AWS KeyManagement Service.

0x5200006c STATUS_ACK_ERR_STREAM_DELETEDArus telah atausedang dihapus.

Aliran sedang dihapusoleh aplikasi lain ataumelaluiAWS ManagementConsole.

0x5200006d STATUS_ACK_ERR_ACK_INTERNAL_ERRORKesalahan internal. Kesalahan internal layanangenerik.

92

Amazon Kinesis Video Streams Panduan DeveloperReferensi Kode Kesalahan

Code Message Deskripsi Tindakan yangDirekomendasikan

0x5200006e STATUS_ACK_ERR_FRAGMENT_ARCHIVAL_ERRORKesalahan arsipfragmen.

Kembali ketika layanangagal untuk bertahan lamadan indeks fragmen. Meskijarang terjadi, hal itu bisaterjadi karena berbagaialasan. Secara default, SDKmencoba mengirim fragmentersebut.

0x5200006f STATUS_ACK_ERR_UNKNOWN_ACK_ERRORKesalahan yang tidakdiketahui.

Layanan mengembalikankesalahan yang tidakdiketahui.

0x52000070 STATUS_MISSING_ERR_ACK_IDHilang informasi ACK. ACK parser selesai parsing,tapiFragmentAckInformasihilang.

0x52000071 STATUS_INVALID_ACK_SEGMENT_LENPanjang segmen ACKtidak valid.

Sebuah string segmen ACKdengan panjang yang tidakvalid ditentukan untuk ACKparser. Untuk informasiselengkapnya, lihat BatasSDK Produsen (p. 78).

0x52000074 STATUS_MAX_FRAGMENT_METADATA_COUNTJumlah maksimumitem metadata telahditambahkan kefragmen.

Aliran video Kinesis dapatmenambahkan hingga10 item metadata kefragmen, baik denganmenambahkan itemnonpersistent ke fragmen,atau dengan menambahkanitem persisten ke antrianmetadata. Untuk informasiselengkapnya, lihatMenggunakan MetadataStreaming dengan KinesisVideo Streams (p. 14).

0x52000075 STATUS_ACK_ERR_FRAGMENT_METADATA_LIMIT_REACHEDBatas (jumlahmetadata maksimum,panjang namametadata, ataupanjang nilaimetadata) telahtercapai.

SDK Produsen membatasijumlah dan ukuran itemmetadata. Kesalahan initidak terjadi kecuali batasdalam kode Producer SDKdiubah. Untuk informasiselengkapnya, lihatMenggunakan MetadataStreaming dengan KinesisVideo Streams (p. 14).

0x52000076 STATUS_BLOCKING_PUT_INTERRUPTED_STREAM_TERMINATEDTidakdiimplementasikan.

 

93

Amazon Kinesis Video Streams Panduan DeveloperReferensi Kode Kesalahan

Code Message Deskripsi Tindakan yangDirekomendasikan

0x52000077 STATUS_INVALID_METADATA_NAMENama metadata tidakvalid.

Nama metadata tidak dapatdimulai dengan string“AWS”. Jika kesalahanini terjadi, item metadatatidak ditambahkan keantrian fragmen ataumetadata. Untuk informasiselengkapnya, lihatMenggunakan MetadataStreaming dengan KinesisVideo Streams (p. 14).

0x52000078 STATUS_END_OF_FRAGMENT_FRAME_INVALID_STATEAkhir dari framefragmen dalam statustidak valid.

Akhir fragmen tidak harusdikirim dalamnon-key-framealiran terfragmentasi.

0x52000079 STATUS_TRACK_INFO_MISSINGInformasi track hilang. Nomor trek harus lebih besardari 0 dan harus sesuaidengan id track.

0x5200007a STATUS_MAX_TRACK_COUNT_EXCEEDEDJumlah trackmaksimumterlampaui.

Anda dapat memilikimaksimal 3 track per stream.

0x5200007b STATUS_OFFLINE_MODE_WITH_ZERO_RETENTIONWaktu retensi modestreaming offlinediatur ke nol.

Waktu retensi modestreaming offline tidak bolehdiatur ke nol.

0x5200007c STATUS_ACK_ERR_TRACK_NUMBER_MISMATCHNomor trek kesalahanACK tidak cocok.

 

0x5200007d STATUS_ACK_ERR_FRAMES_MISSING_FOR_TRACKFrame hilang untuktrek.

 

0x5200007e STATUS_ACK_ERR_MORE_THAN_ALLOWED_TRACKS_FOUNDJumlah trekmaksimum yangdiizinkan terlampaui.

 

0x5200007f STATUS_UPLOAD_HANDLE_ABORTEDUpload pegangandibatalkan.

 

0x52000080 STATUS_INVALID_CERT_PATH_LENGTHPanjang jalur sertifikattidak valid.

 

0x52000081 STATUS_DUPLICATE_TRACK_ID_FOUNDID track duplikatditemukan.

 

Kesalahan dan Kode Status Dikembalikan oleh Pustaka Durasi

Tabel berikut berisi kesalahan dan status informasi yang dikembalikan oleh metodedalamDurationPustaka.

94

Amazon Kinesis Video Streams Panduan DeveloperReferensi Kode Kesalahan

Code Message

0xFFFFFFFFFFFFFFFF INVALID_DURATION_VALUE

Kesalahan dan Kode Status Dikembalikan oleh Perpustakaan Umum

Tabel berikut berisi kesalahan dan status informasi yang dikembalikan oleh metode dalamCommonPustaka.

Note

Kode kesalahan dan informasi status ini umum terjadi pada banyak API.

Code Message Deskripsi

0x00000001 STATUS_NULL_ARG NULL disahkan untuk argumenwajib.

0x00000002 STATUS_INVALID_ARG Nilai tidak valid ditentukan untukargumen.

0x00000003 STATUS_INVALID_ARG_LEN Panjang argumen yang tidakvalid telah ditentukan.

0x00000004 STATUS_NOT_ENOUGH_MEMORY Tidak dapat mengalokasikanmemori yang cukup.

0x00000005 STATUS_BUFFER_TOO_SMALL Ukuran buffer yang ditentukanterlalu kecil.

0x00000006 STATUS_UNEXPECTED_EOF Akhir file yang tak terdugatercapai.

0x00000007 STATUS_FORMAT_ERROR Format yang tidak valid ditemui.

0x00000008 STATUS_INVALID_HANDLE_ERRORNilai pegangan tidak valid.

0x00000009 STATUS_OPEN_FILE_FAILED Gagal membuka berkas.

0x0000000a STATUS_READ_FILE_FAILED Gagal membaca dari sebuahberkas.

0x0000000b STATUS_WRITE_TO_FILE_FAILEDGagal menulis ke berkas.

0x0000000c STATUS_INTERNAL_ERROR Kesalahan internal yangbiasanya tidak terjadi danmungkin menunjukkan bug SDKatau API layanan.

0x0000000d STATUS_INVALID_OPERATION Ada operasi yang tidak valid,atau operasi tidak diizinkan.

0x0000000e STATUS_NOT_IMPLEMENTED Fitur ini tidak diimplementasikan.

0x0000000f STATUS_OPERATION_TIMED_OUT Waktu operasi habis.

0x00000010 STATUS_NOT_FOUND Sumber daya yang dibutuhkantidak ditemukan.

95

Amazon Kinesis Video Streams Panduan DeveloperReferensi Kode Kesalahan

Kesalahan dan Kode Status Dikembalikan oleh Heap Library

Tabel berikut berisi kesalahan dan status informasi yang dikembalikan oleh metode dalamHeapPustaka.

Code Message Deskripsi

0x01000001 STATUS_HEAP_FLAGS_ERROR Kombinasi bendera yang tidakvalid telah ditentukan.

0x01000002 STATUS_HEAP_NOT_INITIALIZEDSebuah operasi dicoba sebelumtumpukan diinisialisasi.

0x01000003 STATUS_HEAP_CORRUPTED Tumpukan itu rusak atauband penjaga (dalam modedebug) ditimpa. Sebuah bufferoverflow dalam kode kliendapat menyebabkan kerusakantumpukan.

0x01000004 STATUS_HEAP_VRAM_LIB_MISSINGVRAM (video RAM) penggunaatau kernel mode perpustakaantidak dapat dimuat atau hilang.Periksa apakah platform yangmendasari mendukung alokasiVRAM.

0x01000005 STATUS_HEAP_VRAM_LIB_REOPENGagal membuka pustaka VRAM.

0x01000006 STATUS_HEAP_VRAM_INIT_FUNC_SYMBOLGagal memuat ekspor fungsiINIT.

0x01000007 STATUS_HEAP_VRAM_ALLOC_FUNC_SYMBOLGagal memuatALLOCeksporfungsi.

0x01000008 STATUS_HEAP_VRAM_FREE_FUNC_SYMBOLGagal memuatFREEeksporfungsi.

0x01000009 STATUS_HEAP_VRAM_LOCK_FUNC_SYMBOLGagal memuatLOCKeksporfungsi.

0x0100000a STATUS_HEAP_VRAM_UNLOCK_FUNC_SYMBOLGagal memuatUNLOCKeksporfungsi.

0x0100000b STATUS_HEAP_VRAM_UNINIT_FUNC_SYMBOLGagal memuatUNINITeksporfungsi.

0x0100000c STATUS_HEAP_VRAM_GETMAX_FUNC_SYMBOLGagal memuatGETMAXeksporfungsi.

0x0100000d STATUS_HEAP_DIRECT_MEM_INITGagal menginisialisasi heap poolutama di tumpukan hibrida.

0x0100000e STATUS_HEAP_VRAM_INIT_FAILEDInisialisasi dinamis VRAM gagal.

0x0100000f STATUS_HEAP_LIBRARY_FREE_FAILEDGagal untuk de-mengalokasikandan membebaskan pustakaVRAM.

0x01000010 STATUS_HEAP_VRAM_ALLOC_FAILEDAlokasi VRAM gagal.

96

Amazon Kinesis Video Streams Panduan DeveloperReferensi Kode Kesalahan

Code Message Deskripsi

0x01000011 STATUS_HEAP_VRAM_FREE_FAILEDBebas VRAM gagal.

0x01000012 STATUS_HEAP_VRAM_MAP_FAILEDPeta VRAM gagal.

0x01000013 STATUS_HEAP_VRAM_UNMAP_FAILEDVRAM unmap gagal.

0x01000014 STATUS_HEAP_VRAM_UNINIT_FAILEDDeinitialisasi VRAM gagal.

Kesalahan dan Kode Status Dikembalikan oleh Perpustakaan MKVGen

Tabel berikut berisi kesalahan dan status informasi yang dikembalikan oleh metode dalamMKVGenPustaka.

Code Message Deskripsi/Tindakan yangDirekomendasikan

0x32000001 STATUS_MKV_INVALID_FRAME_DATAAnggota tidak validFramestrukturdata. Pastikan data durasi,ukuran, dan bingkai valid danberada dalam batas yangditentukan dalamBatas SDKProdusen (p. 78).

0x32000002 STATUS_MKV_INVALID_FRAME_TIMESTAMPBingkai timestamp tidak valid.PTS yang dihitung (stempelwaktu presentasi) dan DTS(decoding timestamp) lebih besaratau sama dengan timestampdari frame awal fragmen. Iniadalah indikasi dari restartpipa media potensial ataumasalah stabilitas encoder.Untuk informasi pemecahanmasalah, lihatKesalahan: “Gagalmengirimkan frame ke klienVideo Kinesis” (p. 180)

0x32000003 STATUS_MKV_INVALID_CLUSTER_DURATIONDurasi fragmen yang tidak validtelah ditentukan. Untuk informasiselengkapnya, lihat Batas SDKProdusen (p. 78).

0x32000004 STATUS_MKV_INVALID_CONTENT_TYPE_LENGTHPanjang string tipe kontentidak valid. Untuk informasiselengkapnya, lihat Batas SDKProdusen (p. 78).

0x32000005 STATUS_MKV_NUMBER_TOO_BIG Ada upaya untuk menyandikanangka yang terlalu besaruntuk diwakili dalam formatEBL (Extensible Binary MetaLanguage). Ini tidak bolehterkena klien SDK.

0x32000006 STATUS_MKV_INVALID_CODEC_ID_LENGTHPanjang string ID codectidak valid. Untuk informasi

97

Amazon Kinesis Video Streams Panduan DeveloperReferensi Kode Kesalahan

Code Message Deskripsi/Tindakan yangDirekomendasikanselengkapnya, lihat Batas SDKProdusen (p. 78).

0x32000007 STATUS_MKV_INVALID_TRACK_NAME_LENGTHPanjang string nama tracktidak valid. Untuk informasiselengkapnya, lihat Batas SDKProdusen (p. 78).

0x32000008 STATUS_MKV_INVALID_CODEC_PRIVATE_LENGTHPanjang data pribadi codectidak valid. Untuk informasiselengkapnya, lihat Batas SDKProdusen (p. 78).

0x32000009 STATUS_MKV_CODEC_PRIVATE_NULLData pribadi codec (CPD) adalahNULL, sedangkan ukuran CPDlebih besar dari 0.

0x3200000a STATUS_MKV_INVALID_TIMECODE_SCALENilai skala timecode tidakvalid. Untuk informasiselengkapnya, lihat Batas SDKProdusen (p. 78).

0x3200000b STATUS_MKV_MAX_FRAME_TIMECODEBingkai timecode lebih besardari maksimum. Untuk informasiselengkapnya, lihat Batas SDKProdusen (p. 78).

0x3200000c STATUS_MKV_LARGE_FRAME_TIMECODETimecode bingkai maks tercapai.Format MKV menggunakanditandatangani 16 bit untukmewakili timecode relatif frameke awal cluster. Kesalahanyang dihasilkan jika frametimecode tidak dapat diwakili.Kesalahan ini menunjukkanpilihan skala timecode buruk ataudurasi klaster terlalu panjang,sehingga mewakili timecodebingkai meluap ruang 16-bit yangditandatangani.

98

Amazon Kinesis Video Streams Panduan DeveloperReferensi Kode Kesalahan

Code Message Deskripsi/Tindakan yangDirekomendasikan

0x3200000d STATUS_MKV_INVALID_ANNEXB_NALU_IN_FRAME_DATAKode awal Annex-B tidak validditemui. Misalnya, benderaadaptasi Annex-B ditentukandan kode menemukan urutanawal yang tidak valid lebih daritiga nol. Format Annex-B yangvalid harus memiliki urutan“pencegahan emulasi” untukmelarikan diri dari urutan tigaatau lebih nol di bytestream.Untuk informasi lebih lanjut,lihat spesifikasi MPEG. Untukinformasi tentang kesalahanini di Android, lihatKesalahanSTATUS_MKV_INVALID_ANNEXB_NALU_IN_FRAME_DATA(0x3200000d) diAndroid (p. 182).

0x3200000e STATUS_MKV_INVALID_AVCC_NALU_IN_FRAME_DATAKemasan AVCC NaLu tidakvalid ketika bendera AVCCberadaptasi ditentukan. Pastikanbahwa bytestream dalamformat AVCC yang valid. Untukinformasi lebih lanjut, lihatspesifikasi MPEG.

0x3200000f STATUS_MKV_BOTH_ANNEXB_AND_AVCC_SPECIFIEDKedua mengadaptasi AVCCdan Annex-B NALs ditentukan.Tentukan salah satu, atautentukan tidak ada.

0x32000010 STATUS_MKV_INVALID_ANNEXB_NALU_IN_CPDFormat Annex-B tidak valid dariCPD ketika bendera Annex-Bberadaptasi ditentukan. Pastikanbahwa CPD dalam format Annex-B yang valid. Jika tidak, makalepaskan bendera adaptasi CPDAnnex-B.

0x32000011 STATUS_MKV_PTS_DTS_ARE_NOT_SAMEKinesis Video Streamsmemberlakukan PTS (presentasitimestamp) dan DTS (decodingtimestamp) menjadi sama untukframe awal fragmen. Ini adalahframe kunci yang memulaifragmen.

0x32000012 STATUS_MKV_INVALID_H264_H265_CPDGagal mengurai data pribadicodec H264/H265.

0x32000013 STATUS_MKV_INVALID_H264_H265_SPS_WIDTHGagal mengekstrak lebar daridata pribadi codec.

0x32000014 STATUS_MKV_INVALID_H264_H265_SPS_HEIGHTGagal mengekstrak tinggi daridata pribadi codec.

99

Amazon Kinesis Video Streams Panduan DeveloperReferensi Kode Kesalahan

Code Message Deskripsi/Tindakan yangDirekomendasikan

0x32000015 STATUS_MKV_INVALID_H264_H265_SPS_NALUH264/H265 SPS NaLu tidakvalid.

0x32000016 STATUS_MKV_INVALID_BIH_CPD Format header info bitmap tidakvalid dalam data pribadi codec.

0x32000017 STATUS_MKV_INVALID_HEVC_NALU_COUNTJumlah Unit Layer AbstraksiJaringan Efisiensi Tinggi (HEVC)Coding Video Coding (NALU)yang tidak valid.

0x32000018 STATUS_MKV_INVALID_HEVC_FORMATFormat HEVC tidak valid.

0x32000019 STATUS_MKV_HEVC_SPS_NALU_MISSINGHilang HEVC NALus diSequence Parameter Set (SPS).

0x3200001a STATUS_MKV_INVALID_HEVC_SPS_NALU_SIZEUkuran HEVC SPS NALU tidakvalid.

0x3200001b STATUS_MKV_INVALID_HEVC_SPS_CHROMA_FORMAT_IDCFormat Chroma IDC tidak valid.

0x3200001c STATUS_MKV_INVALID_HEVC_SPS_RESERVEDSPS milik HEVC tidak valid.

0x3200001d STATUS_MKV_MIN_ANNEX_B_CPD_SIZEMinimum Annex-B codec ukurannilai beta pribadi. Untuk H264,nilai ini harus sama denganatau lebih besar bahwa 11.Untuk H265, nilai ini harus samadengan atau lebih besar dari 15.

0x3200001e STATUS_MKV_ANNEXB_CPD_MISSING_NALUSData pribadi codec yang hilang diAnnex-B Nalus.

0x3200001f STATUS_MKV_INVALID_ANNEXB_CPD_NALUSbeta pribadi codec tidak valid diAnnex-B NaLus.

0x32000020 STATUS_MKV_INVALID_TAG_NAME_LENGTHPanjang nama tag tidak valid.Nilai yang valid lebih besar darinol dan kurang dari 128.

0x32000021 STATUS_MKV_INVALID_TAG_VALUE_LENGTHPanjang nilai tag tidak valid. nilaivalid lebih besar dari nol dankurang dari 256.

0x32000022 STATUS_MKV_INVALID_GENERATOR_STATE_TAGSTag status generator tidak valid.

0x32000023 STATUS_MKV_INVALID_AAC_CPD_SAMPLING_FREQUENCY_INDEXIndeks frekuensi sampling datapribadi codec AAC tidak valid.

0x32000024 STATUS_MKV_INVALID_AAC_CPD_CHANNEL_CONFIGKonfigurasi saluran data pribadicodec AAC tidak valid.

0x32000025 STATUS_MKV_INVALID_AAC_CPD Data pribadi codec AAC tidakvalid.

0x32000026 STATUS_MKV_TRACK_INFO_NOT_FOUNDInformasi track tidak ditemukan.

100

Amazon Kinesis Video Streams Panduan DeveloperReferensi Kode Kesalahan

Code Message Deskripsi/Tindakan yangDirekomendasikan

0x32000027 STATUS_MKV_INVALID_SEGMENT_UUIDUUID segmen tidak valid.

0x32000028 STATUS_MKV_INVALID_TRACK_UIDUID track tidak valid.

Kesalahan dan Kode Status Dikembalikan oleh Trace Library

Tabel berikut berisi kesalahan dan status informasi yang dikembalikan oleh metode dalamTracePustaka.

Code Message

0x10100001 STATUS_MIN_PROFILER_BUFFER

Kesalahan dan Kode Status Dikembalikan oleh Perpustakaan Utils

Tabel berikut berisi kesalahan dan status informasi yang dikembalikan oleh metode dalamUtilsPustaka.

Code Message

0x40000001 STATUS_INVALID_BASE64_ENCODE

0x40000002 STATUS_INVALID_BASE

0x40000003 STATUS_INVALID_DIGIT

0x40000004 STATUS_INT_OVERFLOW

0x40000005 STATUS_EMPTY_STRING

0x40000006 STATUS_DIRECTORY_OPEN_FAILED

0x40000007 STATUS_PATH_TOO_LONG

0x40000008 STATUS_UNKNOWN_DIR_ENTRY_TYPE

0x40000009 STATUS_REMOVE_DIRECTORY_FAILED

0x4000000a STATUS_REMOVE_FILE_FAILED

0x4000000b STATUS_REMOVE_LINK_FAILED

0x4000000c STATUS_DIRECTORY_ACCESS_DENIED

0x4000000d STATUS_DIRECTORY_MISSING_PATH

0x4000000e STATUS_DIRECTORY_ENTRY_STAT_ERROR

Kesalahan dan Kode Status Dikembalikan oleh View Library

Tabel berikut berisi kesalahan dan status informasi yang dikembalikan oleh metode dalamViewPustaka.

101

Amazon Kinesis Video Streams Panduan DeveloperReferensi Kode Kesalahan

Code Message Deskripsi

0x30000001 STATUS_MIN_CONTENT_VIEW_ITEMSJumlah item tampilankonten yang tidak valid telahditentukan. Untuk informasiselengkapnya, lihat Batas SDKProdusen (p. 78).

0x30000002 STATUS_INVALID_CONTENT_VIEW_DURATIONDurasi tampilan konten tidak validtelah ditentukan. Untuk informasiselengkapnya, lihat Batas SDKProdusen (p. 78).

0x30000003 STATUS_CONTENT_VIEW_NO_MORE_ITEMSUpaya dilakukan untuk melewatiposisi kepala.

0x30000004 STATUS_CONTENT_VIEW_INVALID_INDEXIndeks tidak valid ditentukan.

0x30000005 STATUS_CONTENT_VIEW_INVALID_TIMESTAMPAda stempel waktu yang tidakvalid atau tumpang tindihtimestamp. Frame decodingtimestamp harus lebih besar atausama dengan stempel waktuframe sebelumnya, ditambahdurasi frame sebelumnya:`DTS(n) >= DTS(n-1) +Duration(n-1)`. Kesalahanini sering menunjukkanencoder “tidak stabil”. Encodermenghasilkan ledakan frameyang dikodekan, dan capwaktu mereka lebih kecildari durasi intra-frame. Ataustream dikonfigurasi untukmenggunakan stempel waktuSDK, dan frame dikirim lebihcepat dari durasi frame. Untukmembantu dengan beberapa“jitter” dalam encoder, tentukandurasi bingkai yang lebih kecildiStreamInfo.StreamCapsstruktur.Misalnya, jika alirannya 25FPS,durasi masing-masing frameadalah 40 ms. Namun, untukmenangani jitter encoder, kamisarankan Anda menggunakansetengah dari durasi frametersebut (20 ms). Beberapa aliranmemerlukan kontrol yang lebihtepat atas waktu untuk deteksikesalahan.

0x30000006 STATUS_INVALID_CONTENT_VIEW_LENGTHPanjang data item tampilankonten yang tidak valid telahditentukan.

102

Amazon Kinesis Video Streams Panduan DeveloperReferensi Kode Kesalahan

Kesalahan dan Kode Status Dikembalikan olehPutFrameCallback- C Produser PerpustakaanBagian berikut berisi kesalahan dan status informasi yang dikembalikan oleh callbackuntukPutFrameoperasi dalam perpustakaan produser C.

Code Message Deskripsi Tindakan yangDirekomendasikan

0x15000001 STATUS_STOP_CALLBACK_CHAINRantai panggilan baliktelah berhenti.

 

0x15000002 STATUS_MAX_CALLBACK_CHAINRantai callbackmaksimum tercapai.

 

0x15000003 STATUS_INVALID_PLATFORM_CALLBACKS_VERSIONTidakberlakunyaPlatformCallbacksversistruktur.

Tentukan versi struktur saatini yang benar.

0x15000004 STATUS_INVALID_PRODUCER_CALLBACKS_VERSIONTidakberlakunyaProducerCallbacksversistruktur.

Tentukan versi struktur saatini yang benar.

0x15000005 STATUS_INVALID_STREAM_CALLBACKS_VERSIONTidakberlakunyaStreamCallbacksversistruktur.

Tentukan versi struktur saatini yang benar.

0x15000006 STATUS_INVALID_AUTH_CALLBACKS_VERSIONTidakberlakunyaAuthCallbacksversistruktur.

Tentukan versi struktur saatini yang benar.

0x15000007 STATUS_INVALID_API_CALLBACKS_VERSIONTidakberlakunyaApiCallbacksversistruktur.

Tentukan versi struktur saatini yang benar.

0x15000008 STATUS_INVALID_AWS_CREDENTIALS_VERSIONTidakberlakunyaAwsCredentialsversistruktur.

Tentukan versi struktur saatini yang benar.

0x15000009 STATUS_MAX_REQUEST_HEADER_COUNTJumlah headerpermintaanmaksimum tercapai.

 

0x1500000a STATUS_MAX_REQUEST_HEADER_NAME_LENPanjang namaheader permintaanmaksimum tercapai.

 

0x1500000b STATUS_MAX_REQUEST_HEADER_VALUE_LENPanjang nilaiheader permintaanmaksimum tercapai.

 

0x1500000c STATUS_INVALID_API_CALL_RETURN_JSONJSON kembali tidakvalid untuk panggilanAPI.

 

0x1500000d STATUS_CURL_INIT_FAILEDInisialisasi Curl gagal.  

103

Amazon Kinesis Video Streams Panduan DeveloperBendera Adaptasi NAL

Code Message Deskripsi Tindakan yangDirekomendasikan

0x1500000e STATUS_CURL_LIBRARY_INIT_FAILEDCurl lib inisialisasigagal.

 

0x1500000f STATUS_INVALID_DESCRIBE_STREAM_RETURN_JSONJSON kembalitidak validuntukDescribeStream.

 

0x15000010 STATUS_HMAC_GENERATION_ERRORKesalahan generasiHMAC.

 

0x15000011 STATUS_IOT_FAILED Otorisasi IOT gagal.  

0x15000012 STATUS_MAX_ROLE_ALIAS_LEN_EXCEEDEDPanjang alias peranmaksimum tercapai.

Tentukan panjang alias yanglebih pendek.

0x15000013 STATUS_MAX_USER_AGENT_NAME_POSTFIX_LEN_EXCEEDEDPanjang postfix namaagen maksimumtercapai.

 

0x15000014 STATUS_MAX_CUSTOM_USER_AGENT_LEN_EXCEEDEDPanjang agenpengguna pelangganmaksimum tercapai.

 

0x15000015 STATUS_INVALID_USER_AGENT_LENGTHPanjang agenpengguna tidak valid.

 

0x15000016 STATUS_INVALID_ENDPOINT_CACHING_PERIODPeriode cachingendpoint tidak valid.

Tentukan periode cachingyang kurang dari 24 jam.

0x15000017 STATUS_IOT_EXPIRATION_OCCURS_IN_PASTIOT kedaluwarsatimestamp terjadi dimasa lalu.

 

0x15000018 STATUS_IOT_EXPIRATION_PARSING_FAILEDPenguraiankedaluwarsa IOT telahgagal.

 

Referensi Bendera Adaptasi Lapisan AbstraksiJaringan (NAL)Bagian ini berisi informasi tentang bendera yang tersediauntukStreamInfo.NalAdaptationFlagspencacahan.

Parameteraliran dasardalam sebuah aplikasi dapat di baikLampiran BatauAVCCformat:

• ParameterLampiran Bbatas formatNALus (Jaringan Abstraksi Layer unit)dengan dua byte nol, diikuti olehsatu atau tiga byte nol, diikuti dengan nomor1(disebutmulai kode, misalnya, 00000001).

• ParameterAVCCFormat juga membungkus Nalus, tetapi masing-masing NALU didahului dengan nilaiyang menunjukkan ukuran NALU (biasanya empat byte).

Banyak encoder menghasilkan format bitstream Annex-B. Beberapa prosesor bitstream tingkat tinggi(seperti mesin pemutaran atauEkstensi Sumber Media (MSE)pemain diAWS Management Console)menggunakan format AVCC untuk frame mereka.

104

Amazon Kinesis Video Streams Panduan DeveloperStruktur produsen

Data pribadi codec (CPD), yaitu SPS/PPS (Sequence Parameter Set/Picture Parameter Set) untuk codecH.264, juga bisa dalam format Annex-B atau AVCC. Namun, untuk CPD, formatnya berbeda dari yangdijelaskan sebelumnya.

Bendera memberitahu SDK untuk menyesuaikan NALus ke AVCC atau Annex-B untuk data frame danCPD sebagai berikut:

Bendera Adaptasi

NAL_ADAPTATION_FLAG_NONE Tidak ada adaptasi

NAL_ADAPTATION_ANNEXB_NALS Beradaptasi Annex-B Nalus keAVCC NALus

NAL_ADAPTATION_AVCC_NALS Beradaptasi AVCC Nalus keAnnex-B Nalus

NAL_ADAPTATION_ANNEXB_CPD_NALSAdaptasi Annex-B NALus untukdata pribadi codec ke formatAVCC NALus

NAL_ADAPTATION_ANNEXB_CPD_AND_FRAME_NALSSesuaikan Annex-B NALus untukcodec dan bingkai data pribadi keformat AVCC NALus

Untuk informasi selengkapnya tentang tipe NALU, lihatBagian 1.3: Jaringan Abstraksi Lapisan JenisSatuandiRFC 3984.

Struktur SDK ProdusenBagian ini mencakup informasi tentang struktur yang dapat Anda gunakan untuk menyediakan data keobjek Produser Kinesis Video Streams.

Topik• DeviceInfo/DefaultDeviceInfoProvider (p. 105)• StorageInfo (p. 106)

DeviceInfo/DefaultDeviceInfoProviderParameterDeviceInfodanDefaultDeviceInfoProviderobjek mengontrol perilaku objek Kinesis Video Streams.

Bidang anggota

• versi: Nilai integer yang digunakan untuk memastikan bahwa versi struktur yangbenar digunakan dengan versi dasar kode saat ini. Versi saat ini ditentukan denganmenggunakanDEVICE_INFO_CURRENT_VERSIONmakro.

• nama: Nama yang dapat dibaca manusia untuk perangkat.• TagCount/Tag: Saat ini tidak digunakan.• streamCount: Jumlah maksimum stream yang dapat ditangani perangkat. Ini pra-

mengalokasikan penyimpanan untuk pointer ke objek aliran awalnya, tetapi objek aliranaktual dibuat kemudian. Defaultnya adalah 16 aliran, tetapi Anda dapat mengubah nomor inidiDefaultDeviceInfoProvider.cppberkas.

105

Amazon Kinesis Video Streams Panduan DeveloperStruktur produsen

• StorageInfo: Sebuah objek yang menggambarkan konfigurasi penyimpanan utama. Untuk informasiselengkapnya, lihat StorageInfo (p. 106).

StorageInfoMenentukan konfigurasi penyimpanan utama untuk Kinesis Video Streams.

Implementasi default didasarkan pada implementasi tumpukan cepat fragmentasi rendah, yangdioptimalkan untuk streaming. MenggunakanMEMALLOCpengalokasi, yang dapat ditimpa pada platformtertentu. Beberapa platform memiliki alokasi memori virtual tanpa mendukung alokasi dengan halamanfisik. Saat memori digunakan, halaman virtual didukung oleh halaman fisik. Hal ini mengakibatkan tekananmemori rendah pada keseluruhan sistem ketika penyimpanan kurang digunakan.

Hitung ukuran penyimpanan default berdasarkan rumus berikut.ParameterDefragmentationFactorharus diatur ke 1,2 (20 persen).

Size = NumberOfStreams * AverageFrameSize * FramesPerSecond * BufferDurationInSeconds * DefragmentationFactor

Pada contoh berikut, perangkat memiliki audio dan video stream. Aliran audio memiliki 512 sampel perdetik, dengan sampel rata-rata 100 byte. Aliran video memiliki 25 frame per detik, dengan rata-rata 10.000byte. Setiap aliran memiliki durasi buffer 3 menit.

Size = (512 * 100 * (3 * 60) + 25 * 10000 * (3 * 60)) * 1.2 = (9216000 + 45000000) * 1.2 = 65059200 = ~ 66MB.

Jika perangkat memiliki lebih banyak memori yang tersedia, disarankan agar Anda menambahkan lebihbanyak memori ke penyimpanan untuk menghindari fragmentasi yang parah.

Pastikan bahwa ukuran penyimpanan memadai untuk mengakomodasi buffer penuh untuk semua aliranpada kompleksitas pengkodean tinggi (ketika ukuran frame lebih besar karena gerak tinggi) atau ketikabandwidth rendah. Jika produser menyentuh tekanan memori, ia memancarkan callback tekanan overflowstorage (StorageOverflowPressureFunc). Namun, ketika tidak ada memori yang tersedia di tokokonten, itu menjatuhkan frame yang sedang didorong ke Kinesis Video Streams dengan kesalahan(STATUS_STORE_OUT_OF_MEMORY = 0x5200002e). Untuk informasi selengkapnya, lihat Kesalahan danKode Status Dikembalikan oleh Perpustakaan Klien (p. 80). Hal ini juga dapat terjadi jika pengakuanaplikasi (ACK) tidak tersedia, atau ACK yang bertahan tertunda. Dalam hal ini, buffer mengisi kapasitas“buffer duration” sebelum frame yang lebih tua mulai putus.

Bidang anggota

• versi: Nilai integer yang digunakan untuk memastikan bahwa versi struktur yang benar digunakandengan versi dasar kode saat ini.

• StorageType: SEBUAHDEVICE_STORAGE_TYPEpencacahan yang menentukanmendasari pendukungan/implementasi penyimpanan. Satu-satunya nilai yang di-supportsaat ini adalah DEVICE_STORAGE_TYPE_IN_MEM. Implementasi masa depan akanmendukungDEVICE_STORAGE_TYPE_HYBRID_FILE, menunjukkan bahwa penyimpanan jatuh kembalike toko konten yang didukung file.

• StorageSize: Ukuran penyimpanan dalam byte untuk prealokasi. Alokasi minimum adalah 10 MB, danalokasi maksimum adalah 10 GB. (Ini akan berubah dengan implementasi masa depan toko konten yangdidukung file.)

• spillRatio: Nilai integer yang mewakili persentase penyimpanan yang akan dialokasikan dari jenispenyimpanan memori langsung (RAM), yang bertentangan dengan penyimpanan overflow sekunder(penyimpanan file). Saat ini tidak digunakan.

• RootDirectory: Jalur ke direktori tempat penyimpanan konten yang didukung file berada. Saat ini tidakdigunakan.

106

Amazon Kinesis Video Streams Panduan DeveloperStruktur Stream

Struktur Arus Video KinesisAnda dapat menggunakan struktur berikut untuk memberikan data ke instance aliran video Kinesis.

Topik• StreamDefinition/ StreamInfo (p. 107)• ClientMetrics (p. 116)• StreamMetrics (p. 117)

StreamDefinition/ StreamInfoParameterStreamDefinitionobjek di lapisan C ++ membungkusStreamInfoobjek dalam kodeplatform-independen, dan menyediakan beberapa nilai default dalam konstruktor.

Bidang anggota

Field Tipe Data Deskripsi nilai default

stream_name string Nama stream opsional.Untuk informasiselengkapnya tentangpanjang nama stream,lihatBatas SDKProdusen (p. 78).Setiap aliran harusmemiliki nama yangunik.

Jika tidak ada namayang ditentukan, namadihasilkan secara acak.

retention_period duration<uint64_t,ratio<3600>>

Periode retensi untuksungai, dalam detik.Menentukan0menunjukkantidak ada retensi.

3600 (Satu jam)

tag const map<string,string>*

Peta pasangan nilaikunci yang berisiinformasi pengguna.Jika stream sudahmemiliki satu set tag,tag baru ditambahkanke set tag yang ada.

Tidak ada tag

kms_key_id string ParameterAWSKMSID kunci yangakan digunakanuntuk mengenkripsialiran. Untuk informasiselengkapnya, lihatPerlindungan Datadi Arus KinesisVideo StreamsStreesis (p. 35).

Kunci KMS default(aws/kinesis-video.)

streaming_type STREAMING_TYPEenumerasiSatu-satunya nilaiyang di-support adalahSTREAMING_TYPE_REALTIME.

 

107

Amazon Kinesis Video Streams Panduan DeveloperStruktur Stream

Field Tipe Data Deskripsi nilai default

content_type string Format konten sungai.Konsol Kinesis VideoStreams dapat memutarkonten divideo/h264format.

video/h264

max_latency duration<uint64_t,milli>

Latensi maksimumdalam milidetik untukstream. Callbacktekanan latensi aliran(jika ditentukan)dipanggil ketikadurasi buffer melebihijumlah waktu ini.Menentukan0menunjukkanbahwa tidak adacallback tekanan latensialiran akan dipanggil.

milliseconds::zero()

fragment_duration duration<uint64_t> Durasi fragmenyang Anda inginkan,dalam hitungan detik.Nilai ini digunakandalam kombinasidengankey_frame_fragmentationnilai.Jika nilai inifalse,Kinesis Video Streamsmenghasilkan fragmenpada bingkai kuncisetelah durasi iniberlalu. Misalnya,aliran audio AdvancedAudio Coding (AAC)memiliki setiap framesebagai bingkai kunci.Menentukankey_frame_fragmentation= falsemenyebabkanfragmentasi terjadi padabingkai kunci setelahdurasi ini berakhir,menghasilkan fragmen 2detik.

2

108

Amazon Kinesis Video Streams Panduan DeveloperStruktur Stream

Field Tipe Data Deskripsi nilai default

timecode_scale duration<uint64_t,milli>

Skala timecode MKVdalam milidetik,yang menentukangranularitas timecodesuntuk frame dalamcluster MKV. Timecodebingkai MKV selalurelatif terhadapawal cluster. MKVmenggunakan nilai 16-bit yang ditandatangani(0-32767) untukmewakili timecodedalam cluster (fragmen).Oleh karena itu, Andaharus memastikanbahwa kerangkatimecode dapat diwakilidengan skala timecodeyang diberikan. Nilaiskala timecode default1 ms memastikanbahwa frame terbesaryang dapat diwakiliadalah 32767 ms ~=32 detik. Ini adalahselama durasi fragmenmaksimum yangditentukan dalamBatasArus Kinesis VideoStreams (p. 168),yang 10 detik.

1

key_frame_fragmentasi bool Apakah akanmenghasilkan fragmenpada bingkai kunci.Jikatrue, SDKmenghasilkan awalfragmen setiapkali ada bingkaikunci. Jikafalse,Kinesis VideoStreams menunggusetidaknyafragment_durationdanmenghasilkan fragmenbaru pada frame kuncimengikutinya.

true

109

Amazon Kinesis Video Streams Panduan DeveloperStruktur Stream

Field Tipe Data Deskripsi nilai default

frame_timecodes bool Apakah akanmenggunakan bingkaitimecodes ataumenghasilkan capwaktu menggunakancallback waktu saat ini.Banyak encoder tidakmenghasilkan cap waktudengan frame. Jadimenentukanfalseuntukparameter inimemastikanbahwa frame yangtimestamped karenamereka dimasukkan kedalam Kinesis VideoStreams.

true

absolute_fragment_times bool Kinesis Video Streamsmenggunakan MKVsebagai mekanismepengemasan yangmendasarinya.Spesifikasi MKV ketattentang timecodesbingkai relatif terhadapawal cluster (fragmen).Namun, timecodescluster dapat berupaabsolut atau relatifterhadap waktumulai untuk sungai.Jika stempel wakturelatif,PutMedialayananAPI panggilanmenggunakan opsionalstream start timestampdan menyesuaikanstempel waktu cluster.Layanan ini selalumenyimpan fragmendengan cap waktumutlak mereka.

true

fragment_acks bool Apakah akan menerimaACK fragmen tingkataplikasi (pengakuan)atau tidak.

true, yang berartibahwa SDK akanmenerima ACK danbertindak sesuai.

restart_on_error bool Apakah akan me-restart pada kesalahantertentu.

true, yang berartibahwa SDK mencobauntuk me-restartstreaming jika terjadikesalahan.

110

Amazon Kinesis Video Streams Panduan DeveloperStruktur Stream

Field Tipe Data Deskripsi nilai default

recalculate_metrics bool Apakah akanmenghitung ulangmetrik. Setiap panggilanuntuk mengambil metrikdapat menghitungulang mereka untukmendapatkan nilai“berjalan” terbaru, yangmungkin menciptakandampak CPU kecil.Anda mungkin harusmengatur inifalsepadaperangkat yang sangatrendah/footprint untukcadangan siklus CPU.Jika tidak, itu tidakdisarankan untukmenggunakanfalseuntuknilai ini.

true

111

Amazon Kinesis Video Streams Panduan DeveloperStruktur Stream

Field Tipe Data Deskripsi nilai default

nal_adaptation_flags uint32_t Menentukan unitNetwork AbstractionLayer (NALU)bendera adaptasi.Jika bitstream adalahH.264 dikodekan,maka dapat diprosessebagai mentah ataudikemas dalam NALus.Mereka baik dalamformat Annex-B atauAVCC. Sebagianbesar produsen aliranelemen/konsumen(baca encoder/decoder)menggunakan formatAnnex-B karenamemiliki beberapakeunggulan, sepertipemulihan kesalahan.Sistem tingkat tinggimenggunakan formatAVCC, yang merupakanformat default untukMPEG, HLS, DASH,dan sebagainya.Pemutaran konsolmenggunakan MSEbrowser (ekstensisumber media) untukmemecahkan kode danmemutar kembali aliranyang menggunakanformat AVCC. UntukH.264 (dan untuk M-JPEG dan H.265),SDK menyediakankemampuan adaptasi.

Banyak aliran dasardalam format berikut.Dalam contohini,Abadalah kode awalAnnex-B (001 atau0001).

Ab(Sps)Ab(Pps)Ab(I-frame)Ab(P/B-frame) Ab(P/B-frame)…. Ab(Sps)Ab(Pps)Ab(I-frame)Ab(P/B-frame) Ab(P/B-frame)

Dalam kasus H.264,data pribadi codec

Defaultnya adalahmengadaptasi formatAnnex-B ke formatAVCC untuk data framedan untuk data pribadicodec.

112

Amazon Kinesis Video Streams Panduan DeveloperStruktur Stream

Field Tipe Data Deskripsi nilai default(CPD) ada dalamparameter SPS (setparameter urutan) danPPS (set parametergambar), dan dapatdisesuaikan denganformat AVCC.Kecuali pipa mediamemberikan CPDsecara terpisah, aplikasidapat mengekstrakCPD dari frame. Halini dapat dilakukandengan mencari frameIDR pertama (yangharus berisi SPS/PPS),ekstrak dua NALus(yaituAb(Sps)Ab(Pps)),dan mengaturnyadi CPDdiStreamDefinition.

Untuk informasiselengkapnya, lihatBendera AdaptasiNAL (p. 104).

frame_rate uint32_t Frame rate yangdiharapkan. Nilaiini digunakan untukmenghitung kebutuhanbuffering dengan lebihbaik.

25

avg_bandwidth_bps uint32_t Bandwidth rata-ratayang diharapkanuntuk sungai. Nilaiini digunakan untukmenghitung kebutuhanbuffering dengan lebihbaik.

4 * 1024 * 1024

113

Amazon Kinesis Video Streams Panduan DeveloperStruktur Stream

Field Tipe Data Deskripsi nilai default

buffer_duration duration<uint64_t> Durasi penyanggaaliran, dalam hitungandetik. SDK menyimpanframe di toko kontenhinggabuffer_duration,setelah itu frame yanglebih tua dijatuhkansaat jendela bergerakmaju. Jika frame yangdijatuhkan belumdikirim ke backend,callback frame yangdijatuhkan dipanggil.Jika durasi buffersaat ini lebih besardarimax_latency,maka callback tekananlatensi aliran disebut.Penyangga dipangkaske awal fragmenberikutnya ketikafragmen bertahanACK diterima. Hal inimenunjukkan bahwakonten telah bertahanlama di cloud, sehinggamenyimpan konten diperangkat lokal tidaklagi diperlukan.

120

114

Amazon Kinesis Video Streams Panduan DeveloperStruktur Stream

Field Tipe Data Deskripsi nilai default

replay_duration duration<uint64_t> Durasi untuk memutarpembaca saat inimundur untuk memutarulang selama kesalahanjika restart diaktifkan,dalam hitungan detik.Rollback berhenti diawal buffer (jika barusaja mulai streamingatau ACK yang bertahantelah datang). Rollbackmencoba mendaratdi bingkai kunciyang menunjukkanawal fragmen. Jikakesalahan yangmenyebabkan restarttidak menunjukkanhost mati (yaitu, hostmasih hidup dan berisidata frame dalambuffer internal), rollbackberhenti pada frameACK diterima terakhir.Kemudian gulunganmaju ke frame kunciberikutnya, karenaseluruh fragmen sudahdisimpan dalam memorihost.

40

connection_staleness duration<uint64_t> Waktu, dalam hitungandetik, setelah itucallback aliran stalenessdisebut jika SDK tidakmenerima bufferingACK. Ini menunjukkanbahwa frame sedangdikirim dari perangkat,tetapi backend tidakmengakui mereka.Kondisi ini menunjukkankoneksi terputus padahop menengah ataupada penyeimbangbeban.

30

codec_id string ID codec untuk trekMKV.

V_MPEG4/ISO/AVC

track_name string Nama lagu MKV. kinesis_video

115

Amazon Kinesis Video Streams Panduan DeveloperStruktur Stream

Field Tipe Data Deskripsi nilai default

codecPrivateData unsigned char* Codec data pribadi(CPD) buffer. Jikapipa media memilikiinformasi tentangCPD sebelum alirandimulai, dapat diaturdalamStreamDefinition.codecPrivateData.Bit disalin, dan bufferdapat digunakankembali ataudibebaskan setelahpanggilan untukmembuat aliran. Namun,jika data tidak tersediasaat aliran dibuat, datadapat diatur dalamsalah satu kelebihanbebanKinesisVideoStream.start(cpd)fungsi.

null

codecPrivateDataUkuran uint32_t Ukuran buffer datapribadi codec.

0

ClientMetricsParameterClientMetricsobjek diisi dengan menelepongetKinesisVideoMetrics.

Bidang anggota

Field Tipe Data Deskripsi

versi UINT32 Versi struktur, didefinisikandalamCLIENT_METRICS_CURRENT_VERSIONmakro.

contentStoreSize UINT64 Besar toko konten secarakeseluruhan dalam byte. Iniadalah nilai yang ditentukandalamDeviceInfo.StorageInfo.storageSize.

contentStoreAvailableUkuran UINT64 Ukuran penyimpanan yangtersedia saat ini dalam byte.

contentStoreAllocatedUkuran UINT64 Saat ini dialokasikan ukuran.Yang dialokasikan ditambahukuran yang tersedia harussedikit lebih kecil dari ukuranpenyimpanan keseluruhan,karena pembukuan internal danpelaksanaan toko konten.

totalContentViewsUkuran UINT64 Ukuran memori yangdialokasikan untuk semuatampilan konten untuk semuaaliran. Hal ini tidak dihitungterhadap ukuran penyimpanan.

116

Amazon Kinesis Video Streams Panduan DeveloperStruktur Stream

Field Tipe Data DeskripsiMemori ini dialokasikanmenggunakanMEMALLOCmakro,yang dapat ditimpa untukmemberikan pengalokasi kustom.

totalFrameRate UINT64 Total frame rate diamati di semuaaliran.

totalTransferRate UINT64 Total laju aliran diamati dalambyte per detik di semua aliran.

StreamMetricsParameterStreamMetricsobjek diisi dengan menelepongetKinesisVideoMetrics.

Bidang anggota

Field Tipe Data Deskripsi

versi UINT32 Versi struktur, didefinisikandalamSTREAM_METRICS_CURRENT_VERSIONmakro.

currentViewDuration UINT64 Durasi akumulasi frame.Dalam kasus jaringan cepat,durasi ini adalah 0 ataudurasi frame (sebagai framesedang ditransmisikan). Jikadurasi menjadi lebih lamadarimax_latencyditentukandalamStreamDefinition,callback latency stream dipanggiljika ditentukan. Durasi ditentukandalam unit 100 ns, yangmerupakan unit waktu defaultuntuk lapisan PIC.

overallViewDuration UINT64 Durasi tampilan keseluruhan.Jika stream dikonfigurasitanpa ACK atau persistensi,nilai ini tumbuh saat framedimasukkan ke dalam aliranvideo Kinesis dan menjadi samadenganbuffer_durationdiStreamDefinition.Ketika ACK diaktifkan danACK bertahan diterima, bufferdipangkas ke frame kunciberikutnya, karena cap waktuACK menunjukkan awal seluruhfragmen. Durasi ditentukandalam unit 100-ns, yangmerupakan unit waktu defaultuntuk lapisan PIC.

currentViewSize UINT64 Ukuran dalam byte buffer saat ini.

117

Amazon Kinesis Video Streams Panduan DeveloperCallback

Field Tipe Data Deskripsi

overallViewSize UINT64 Ukuran tampilan keseluruhandalam byte.

currentFrameRate UINT64 Frame rate diamati untuk aliransaat ini.

currentTransferRate UINT64 Tingkat transfer diamati dalambyte per detik untuk aliran saatini.

Callback ProdusenKelas dan metode di Amazon Kinesis Video Streams Producer SDK tidak mempertahankan prosesnyasendiri. Sebaliknya, mereka menggunakan panggilan fungsi masuk dan acara untuk menjadwalkancallback untuk berkomunikasi dengan aplikasi.

Ada dua pola callback yang dapat digunakan aplikasi untuk berinteraksi dengan SDK:

• CallbackProvider: Objek ini mengekspos setiap callback dari komponen kode platform-independent(PIC) ke aplikasi. Pola ini memungkinkan fungsionalitas penuh, tetapi juga berarti bahwa implementasiharus menangani semua metode API publik dan tanda tangan di lapisan C++.

• StreamCallbackPenyedia (p. 119) dan ClientCallbackPenyedia (p. 118): Objek ini mengeksposcallback spesifik aliran dan spesifik klien, dan lapisan C++ SDK mengekspos sisa callback. Ini adalahpola callback yang disukai untuk berinteraksi dengan Producer SDK.

Diagram berikut mengilustrasikan model objek callback:

Pada diagram sebelumnya,DefaultCallbackProviderberasaldariCallbackProvider(yang mengekspos semua callback di PIC) danberisiStreamCallbackProviderdanClientCallbackProvider.

Topik ini berisi bagian-bagian berikut:• ClientCallbackPenyedia (p. 118)• StreamCallbackPenyedia (p. 119)• ClientCallbacksStruktur (p. 119)• Implementasi Callback untuk Coba Ulang Streaming (p. 122)

ClientCallbackPenyediaParameterClientCallbackProviderobjek mengekspos fungsi callback tingkat klien. Rincian fungsidijelaskan dalamClientCallbacks (p. 119)bagian.

Metode panggilan balik:

• getClientReadyCallback: Melaporkan keadaan siap untuk klien.• getStorageOverflowPressureCallback: Melaporkan overflow atau tekanan

penyimpanan. Callback ini disebut ketika pemanfaatan penyimpanan turun dibawahSTORAGE_PRESSURE_NOTIFICATION_THRESHOLDnilai, yang merupakan 5 persen dari ukuranpenyimpanan keseluruhan. Untuk informasi selengkapnya, lihat StorageInfo (p. 106).

118

Amazon Kinesis Video Streams Panduan DeveloperCallback

StreamCallbackPenyediaParameterStreamCallbackProviderobjek mengekspos fungsi callback tingkat aliran.

Metode panggilan balik:

• getDroppedFragmentReportCallback: Melaporkan fragmen yang terjatuh.• getDroppedFrameReportCallback: Melaporkan bingkai yang terjatuh.• getFragmentAckReceivedCallback: Laporan bahwa fragmen ACK diterima untuk sungai.• getStreamClosedCallback: Melaporkan aliran kondisi tertutup.• getStreamConnectionStaleCallback: Melaporkan kondisi koneksi basi. Dalam kondisi ini,

produsen mengirimkan data ke layanan tetapi tidak menerima pengakuan.• getStreamDataAvailableCallback: Laporan bahwa data tersedia dalam aliran.• getStreamErrorReportCallback: Melaporkan kondisi galat aliran.• getStreamLatencyPressureCallback: Melaporkan kondisi latensi aliran, yaitu ketika ukuran buffer

akumulasi lebih besar darimax_latencynilai. Untuk informasi selengkapnya, lihat StreamDefinition/StreamInfo (p. 107).

• getStreamReadyCallback: Melaporkan kondisi siap aliran.• getStreamUnderflowReportCallback: Melaporkan kondisi aliran bawah aliran. Fungsi ini saat ini

tidak digunakan dan dicadangkan untuk penggunaan di waktu yang akan datang.

Untuk kode sumber untukStreamCallbackProvider, lihatStreamCallbackPenyedia.h.

ClientCallbacksStrukturParameterClientCallbacksstruktur berisi titik entri fungsi callback yang panggilan PIC ketika peristiwatertentu terjadi. Struktur ini juga berisi informasi versi diCALLBACKS_CURRENT_VERSIONlapangan,dancustomDatabidang untuk data yang ditetapkan pengguna yang dikembalikan dengan fungsi callbackindividu.

Aplikasi klien dapat menggunakanthispointer untukcustom_databidang untuk memetakan fungsianggota ke statisClientCallbackfungsi saat runtime, seperti yang ditunjukkan dalam contoh kodeberikut:

STATUS TestStreamCallbackProvider::streamClosedHandler(UINT64 custom_data, STREAM_HANDLE stream_handle, UINT64 stream_upload_handle) { LOG_INFO("Reporting stream stopped.");

TestStreamCallbackProvider* streamCallbackProvider = reinterpret_cast<TestStreamCallbackProvider*> (custom_data);streamCallbackProvider->streamClosedHandler(...);

Kejadian

Fungsi Deskripsi Tipe

CreateDeviceFunc Saat ini tidak diimplementasikanpada backend. Panggilan inigagal ketika dipanggil dari Javaatau C ++. Klien lain melakukaninisialisasi spesifik platform.

Backend API

CreateStreamFunc Disebut ketika sungai dibuat. Backend API

119

Amazon Kinesis Video Streams Panduan DeveloperCallback

Fungsi Deskripsi Tipe

DescribeStreamFunc DisebutketikaDescribeStreamdisebut.

Backend API

GetStreamingEndpointFunc DisebutketikaGetStreamingEndpointdisebut.

Backend API

GetStreamingTokenFunc DisebutketikaGetStreamingTokendisebut.

Backend API

PutStreamFunc DisebutketikaPutStreamdisebut.

Backend API

TagResourceFunc DisebutketikaTagResourcedisebut.

Backend API

     

CreateMutexFunc Menciptakan mutex sinkronisasi. Sinkron

FreeMutexFunc Membebaskan mutex. sinkronisasi

LockMutexFunc Mengunci mutex sinkronisasi. sinkronisasi

TryLockMutexFunc Mencoba untuk mengunci mutex.Saat ini tidak diimplementasikan.

sinkronisasi

UnlockMutexFunc Membuka mutex. sinkronisasi

     

ClientReadyFunc Dipanggil ketika klien memasukikeadaan siap.

Notifikasi

DroppedFrameReportFunc Laporan ketika frame dijatuhkan. Notifikasi

DroppedFragmentReportFunc Laporan ketika fragmendijatuhkan. Fungsi ini saat initidak digunakan dan dicadangkanuntuk penggunaan di waktu yangakan datang.

Notifikasi

FragmentAckReceivedFunc Disebut ketika ACK fragmen(buffering, diterima, bertahan,dan kesalahan) diterima.

Notifikasi

StorageOverflowPressureFuncDisebut ketika pemanfaatanpenyimpanan turun dibawahSTORAGE_PRESSURE_NOTIFICATION_THRESHOLDnilai,yang didefinisikan sebagai 5persen dari ukuran penyimpanankeseluruhan.

Notifikasi

StreamClosedFunc Disebut ketika bit terakhir dariframe yang tersisa dialirkan.

Notifikasi

120

Amazon Kinesis Video Streams Panduan DeveloperCallback

Fungsi Deskripsi Tipe

StreamConnectionStaleFunc Disebut ketika aliran memasukikeadaan koneksi basi.Dalam kondisi ini, produsenmengirimkan data ke layanantetapi tidak menerimapengakuan.

Notifikasi

StreamDataAvailableFunc Disebut ketika data alirantersedia.

Notifikasi

StreamErrorReportFunc Dipanggil ketika terjadi kesalahanaliran. PIC secara otomatismenutup aliran di bawah kondisiini.

Notifikasi

StreamLatencyPressureFunc Disebut ketika aliran memasukikondisi latensi, yaitu ketikaukuran buffer akumulasi lebihbesar darimax_latencynilai.Untuk informasi selengkapnya,lihat StreamDefinition/StreamInfo (p. 107).

Notifikasi

StreamReadyFunc Disebut ketika sungai memasukikeadaan siap.

Notifikasi

StreamUnderflowReportFunc Fungsi ini saat ini tidakdigunakan dan dicadangkanuntuk penggunaan di waktu yangakan datang.

Notifikasi

     

DeviceCertToTokenFunc Mengembalikan sertifikat koneksisebagai token.

Integrasi platform

GetCurrentTimeFunc Mengembalikan waktu saat ini. Integrasi platform

GetDeviceCertificateFunc Mengembalikan sertifikatperangkat. Fungsi ini saat initidak digunakan dan dicadangkanuntuk penggunaan di waktu yangakan datang.

Integrasi platform

GetDeviceFingerprintFunc Mengembalikan sidik jariperangkat. Fungsi ini saat initidak digunakan dan dicadangkanuntuk penggunaan di waktu yangakan datang.

Integrasi platform

GetRandomNumberFunc Mengembalikan nomor acakantara 0 danRAND_MAX.

Integrasi platform

121

Amazon Kinesis Video Streams Panduan DeveloperCallback

Fungsi Deskripsi Tipe

GetSecurityTokenFunc Mengembalikan tokenkeamanan yang diteruskanke fungsi yang berkomunikasidengan backend API.Implementasi dapat menentukanserialAccessKeyId,SecretKeyId,dan token sesi.

Integrasi platform

LogPrintFunc Log baris teks dengantag dan tingkat log. Untukinformasi selengkapnya, lihatPlatformUtils.h.

Integrasi platform

Untuk fungsi integrasi platform di tabel sebelumnya, parameter terakhiradalahServiceCallContextstruktur, yang memiliki bidang berikut:

• version: Versi struct.• callAfter: Waktu mutlak setelah itu untuk memanggil fungsi.• timeout: Batas waktu operasi di 100 unit nanodetik.• customData: Nilai yang ditetapkan pengguna untuk diteruskan kembali ke klien.• pAuthInfo: Kredensi untuk panggilan. Untuk informasi lebih lanjut, lihat berikut ini (__AuthInfo)

Struktur.

Informasi otorisasi disediakan menggunakan__AuthInfostruktur, yang dapat berupa kredensi serial atautoken otentikasi khusus penyedia. Struktur ini memiliki bidang berikut:

• version: Versi__AuthInfostruktur.• type: SebuahAUTH_INFO_TYPEnilai mendefinisikan jenis kredensi (sertifikat atau token keamanan).• data: Sebuah array byte yang berisi informasi otentikasi.• size: Ukurandataparameter.• expiration: Berakhirnya kredensi di 100 unit nanodetik.

Implementasi Callback untuk Coba Ulang StreamingKinesis Video Producer SDK menyediakan status streaming melalui fungsi callback. Disarankan agar Andamenerapkan mekanisme callback berikut untuk pulih dari masalah jaringan sesaat yang dihadapi selamastreaming.

• Callback tekanan latensi aliran- Mekanisme callback ini akan dipicu ketika SDK menemukan kondisilatensi aliran. Hal ini terjadi ketika ukuran buffer akumulasi lebih besar dari nilai MAX_LATENCY. Ketikastream dibuat, aplikasi streaming menetapkan MAX_LATENCY ke nilai default 60 detik. Implementasikhas untuk callback ini adalah mengatur ulang koneksi. Anda dapat menggunakan implementasi sampeldihttps://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/blob/master/kinesis-video-c-Produser/src/sumber/StreamLatencyStateMachine.csesuai kebutuhan. Perhatikan bahwa tidakada pilihan untuk menyimpan frame yang tidak terkirim karena pemadaman jaringan ke penyimpanansekunder untuk mengisi kembali.

• Callback kebuntuan- callback ini akan dipicu ketika produser dapat mengirim data ke layanan AWS KVS(uplink) tetapi tidak bisa mendapatkan pengakuan (buffered ACK) kembali dalam waktu (default adalah60 detik). Bergantung pada pengaturan jaringan, callback tekanan latensi aliran atau callback stalenessstream, atau keduanya bisa dipicu. Mirip dengan implementasi coba ulang callback tekanan latensi

122

Amazon Kinesis Video Streams Panduan DeveloperCallback

aliran, implementasi tipikal adalah mengatur ulang koneksi dan memulai koneksi baru untuk streaming.Anda dapat menggunakan implementasi sampel dihttps://github.com/awslabs/amazon-kinesis-video-streams-producer-c/blob/master/src/sumber/ConnectionStaleStateMachine.csesuai kebutuhan.

• Callback kesalahan stream- callback ini akan dipicu ketika SDK menemukan batas waktu pada koneksijaringan atau kesalahan lainnya selama panggilan ke panggilan layanan API KVS.

• Callback bingkai yang jatuh- callback ini akan dipicu ketika ukuran penyimpanan penuh baik karenakecepatan jaringan lambat atau kesalahan aliran. Jika kecepatan jaringan menghasilkan frame yangterjatuh, maka Anda dapat meningkatkan ukuran penyimpanan, mengurangi ukuran bingkai video atauframe rate agar sesuai dengan kecepatan jaringan.

123

Amazon Kinesis Video Streams Panduan DeveloperProsedur: Menggunakan Perpustakaan

Parser Stream Video Kinesis

Perpustakaan Parser StreamingVideo Kinesis

The Kinesis Video Stream Parser Perpustakaan adalaheasy-to-useset alat yang dapat Anda gunakandalam aplikasi Java untuk mengkonsumsi data MKV dalam aliran video Kinesis.

Perpustakaan mencakup alat-alat berikut:

• StreamingMkvpembaca (p. 125): Kelas ini membaca elemen MKV ditentukan dari aliran video.• FragmentMetadataPengunjung (p. 126): Kelas ini mengambil metadata untuk fragmen (elemen media)

dan trek (aliran data individual yang berisi informasi media, seperti audio atau sub judul).• OutputSegmentPenggabungan (p. 127): Kelas ini menggabungkan fragmen atau potongan berturut-

turut dalam aliran video.• KinesisVideoContoh (p. 128): Ini adalah contoh aplikasi yang menunjukkan bagaimana menggunakan

Kinesis Video Stream Parser Library.

Perpustakaan juga menyertakan pengujian yang menunjukkan bagaimana alat digunakan.

Prosedur: Menggunakan Perpustakaan ParserStream Video Kinesis

Prosedur ini mencakup langkah-langkah berikut:

• the section called “Langkah 1: Unduh dan Konfigurasikan Kode” (p. 125)• the section called “Langkah 2: Menulis dan Periksa Kode” (p. 125)• the section called “Langkah 3: Jalankan dan Verifikasi Kode” (p. 130)

PrasyaratAnda harus memiliki berikut untuk memeriksa dan menggunakan Kinesis Video Stream Parser Library:

• Akun (AWS) Amazon Web Services. Jika Anda belum memilikiAWSakun, lakukan hal berikut:• Bukahttps://aws.amazon.com/, dan kemudian pilihBuat Akun AWS.

Note

Ini mungkin tidak tersedia di browser Anda jika sebelumnya Anda masuk keAWSManagement Console. Dalam hal ini, pilihMasuk ke Konsol, dan kemudian pilihBuat akunAWS baru.

• Ikuti petunjuk online.

Bagian dari prosedur pendaftaran melibatkan menerima panggilan telepon dan memasukkan PINmenggunakan keypad telepon.

Catat ID akun AWS Anda, karena Anda membutuhkannya.• Lingkungan pengembangan terintegrasi Java (IDE), sepertiEclipse Java NeonatauJetBrainsIde IntelliJ.

124

Amazon Kinesis Video Streams Panduan DeveloperLangkah 1: Unduh dan Konfigurasikan Kode

Langkah 1: Unduh dan Konfigurasikan KodePada bagian ini, Anda men-download perpustakaan Java dan kode tes, dan mengimpor proyek ke JavaIDE Anda.

Untuk prasyarat dan rincian lainnya tentang prosedur ini, lihatPerpustakaan Stream Parser (p. 124).

1. Buat direktori dan kloning kode sumber pustaka dariGitHubrepositori (https://github.com/aws/amazon-kinesis-video-streams-parser-library).

$ git clone https://github.com/aws/amazon-kinesis-video-streams-parser-library

2. Buka IDE Java yang Anda gunakan (misalnya,GerhanaatauIDEA IntelliJ) dan impor proyek ApacheMaven yang Anda download:

• Dalam Eclipse: PilihBerkas,Impor,Maven,Proyek Maven yang ada, dan arahkan kekinesis-video-streams-parser-libfolder.

• Dalam IntelliJ Ide: Pilih Import (Impor). Navigasikan kepom.xmlfile di root paket download.

Untuk informasi selengkapnya, lihat dokumentasi IDE terkait.

Langkah Selanjutnyathe section called “Langkah 2: Menulis dan Periksa Kode” (p. 125)

Langkah 2: Menulis dan Periksa KodePada bagian ini, Anda memeriksa perpustakaan Java dan kode uji, dan belajar bagaimana menggunakanalat dari perpustakaan dalam kode Anda sendiri.

Perpustakaan Parser Stream Video Kinesis berisi alat-alat berikut:

• StreamingMkvpembaca (p. 125)• FragmentMetadataPengunjung (p. 126)• OutputSegmentPenggabungan (p. 127)• KinesisVideoContoh (p. 128)

StreamingMkvpembacaKelas ini membaca elemen MKV ditentukan dari aliran dengan cara non-blocking.

Contoh kode berikut (dariFragmentMetadataVisitorTest) menunjukkan cara membuatdan menggunakanStreaming MkvReadermengambilMkvElementobjek dari aliran input yangdisebutinputStream:

StreamingMkvReader mkvStreamReader = StreamingMkvReader.createDefault(new InputStreamParserByteSource(inputStream)); while (mkvStreamReader.mightHaveNext()) { Optional<MkvElement> mkvElement = mkvStreamReader.nextIfAvailable();

125

Amazon Kinesis Video Streams Panduan DeveloperFragmentMetadataPengunjung

if (mkvElement.isPresent()) { mkvElement.get().accept(fragmentVisitor); ... } } }

FragmentMetadataPengunjungKelas ini mengambil metadata untuk fragmen (elemen media) dan trek (aliran data individual yang berisiinformasi media, seperti data pribadi codec, lebar piksel, atau tinggi piksel).

Contoh kode berikut (dariFragmentMetadataVisitorTestfile) menunjukkan caramenggunakanFragmentMetadataVisitoruntuk mengambil data dariMkvElementobjek:

FragmentMetadataVisitor fragmentVisitor = FragmentMetadataVisitor.create(); StreamingMkvReader mkvStreamReader = StreamingMkvReader.createDefault(new InputStreamParserByteSource(in)); int segmentCount = 0; while(mkvStreamReader.mightHaveNext()) { Optional<MkvElement> mkvElement = mkvStreamReader.nextIfAvailable(); if (mkvElement.isPresent()) { mkvElement.get().accept(fragmentVisitor); if (MkvTypeInfos.SIMPLEBLOCK.equals(mkvElement.get().getElementMetaData().getTypeInfo())) { MkvDataElement dataElement = (MkvDataElement) mkvElement.get(); Frame frame = ((MkvValue<Frame>)dataElement.getValueCopy()).getVal(); MkvTrackMetadata trackMetadata = fragmentVisitor.getMkvTrackMetadata(frame.getTrackNumber()); assertTrackAndFragmentInfo(fragmentVisitor, frame, trackMetadata); } if (MkvTypeInfos.SEGMENT.equals(mkvElement.get().getElementMetaData().getTypeInfo())) { if (mkvElement.get() instanceof MkvEndMasterElement) { if (segmentCount < continuationTokens.size()) { Optional<String> continuationToken = fragmentVisitor.getContinuationToken(); Assert.assertTrue(continuationToken.isPresent()); Assert.assertEquals(continuationTokens.get(segmentCount), continuationToken.get()); } segmentCount++; } } }

}

Contoh sebelumnya menunjukkan pola coding berikut:

• BuatFragmentMetadataVisitoruntuk mengurai data, danStreamingMkvpembaca (p. 125)untukmenyediakan data.

• Untuk masing-masingMkvElementdi sungai, uji apakah metadata adalah tipeSIMPLEBLOCK.• Jika ya, mengambilMkvDataElementdariMkvElement.• MengambilFrame(data media) dariMkvDataElement.• MengambilMkvTrackMetadatauntukFramedariFragmentMetadataVisitor.• Mengambil dan memverifikasi data berikut dariFramedanMkvTrackMetadataobjek:

• Nomor trek.• Tinggi piksel frame.

126

Amazon Kinesis Video Streams Panduan DeveloperOutputSegmentPenggabungan

• Lebar piksel frame.• ID codec untuk codec yang digunakan untuk menyandikan frame.• Bahwa bingkai ini tiba dalam rangka. Artinya, verifikasi bahwa nomor track dari frame sebelumnya, jika

ada, kurang dari frame saat ini.

Untuk menggunakanFragmentMetadataVisitordalam proyek Anda, lulusMkvElementobjek untukpengunjung menggunakan merekaacceptMetode:

mkvElement.get().accept(fragmentVisitor);

OutputSegmentPenggabunganKelas ini menggabungkan metadata dari trek yang berbeda dalam aliran ke aliran dengan satu segmen.

Contoh kode berikut (dariFragmentMetadataVisitorTestfile) menunjukkan caramenggunakanOutputSegmentMergeruntuk menggabungkan metadata track dari array byte yangdisebutinputBytes:

FragmentMetadataVisitor fragmentVisitor = FragmentMetadataVisitor.create();

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

OutputSegmentMerger outputSegmentMerger = OutputSegmentMerger.createDefault(outputStream);

CompositeMkvElementVisitor compositeVisitor = new TestCompositeVisitor(fragmentVisitor, outputSegmentMerger);

final InputStream in = TestResourceUtil.getTestInputStream("output_get_media.mkv");

StreamingMkvReader mkvStreamReader = StreamingMkvReader.createDefault(new InputStreamParserByteSource(in)); while (mkvStreamReader.mightHaveNext()) { Optional<MkvElement> mkvElement = mkvStreamReader.nextIfAvailable(); if (mkvElement.isPresent()) { mkvElement.get().accept(compositeVisitor); if (MkvTypeInfos.SIMPLEBLOCK.equals(mkvElement.get().getElementMetaData().getTypeInfo())) { MkvDataElement dataElement = (MkvDataElement) mkvElement.get(); Frame frame = ((MkvValue<Frame>) dataElement.getValueCopy()).getVal(); Assert.assertTrue(frame.getFrameData().limit() > 0); MkvTrackMetadata trackMetadata = fragmentVisitor.getMkvTrackMetadata(frame.getTrackNumber()); assertTrackAndFragmentInfo(fragmentVisitor, frame, trackMetadata); }}

Contoh sebelumnya menunjukkan pola coding berikut:

• BuatFragmentMetadataPengunjung (p. 126)untuk mengambil metadata dari aliran.• Buat aliran output untuk menerima metadata gabungan.• BuatOutputSegmentMerger, lewat diByteArrayOutputStream.• BuatCompositeMkvElementVisitoryang berisi dua pengunjung.• BuatInputStreamyang menunjuk ke file tertentu.• Gabungkan setiap elemen dalam data input ke dalam output stream.

127

Amazon Kinesis Video Streams Panduan DeveloperKinesisVideoContoh

KinesisVideoContohIni adalah contoh aplikasi yang menunjukkan bagaimana menggunakan Kinesis Video Stream ParserLibrary.

Kelas ini melakukan operasi berikut:

• Membuat aliran video Kinesis. Jika stream dengan nama yang diberikan sudah ada, stream akandihapus dan diciptakan kembali.

• PanggilanPutMediamengalirkan fragmen video ke aliran video Kinesis.• PanggilanGetMediamengalirkan fragmen video dari aliran video Kinesis.• MenggunakanStreamingMkvpembaca (p. 125)untuk mengurai fragmen yang dikembalikan di sungai,

dan menggunakanFragmentMetadataPengunjung (p. 126)untuk log fragmen.

Menghapus dan membuat ulang streamContoh kode berikut (dariStreamOps.javafile) menghapus aliran video Kinesis yang diberikan:

//Delete the streamamazonKinesisVideo.deleteStream(new DeleteStreamRequest().withStreamARN(streamInfo.get().getStreamARN()));

Contoh kode berikut (dariStreamOps.javafile) membuat aliran video Kinesis dengan nama yangditentukan:

amazonKinesisVideo.createStream(new CreateStreamRequest().withStreamName(streamName).withDataRetentionInHours(DATA_RETENTION_IN_HOURS).withMediaType("video/h264"));

MemanggilPutMediaContoh kode berikut (dariPutMediaWorker.javafile) panggilanPutMediadi sungai:

putMedia.putMedia(new PutMediaRequest().withStreamName(streamName).withFragmentTimecodeType(FragmentTimecodeType.RELATIVE).withProducerStartTimestamp(new Date()).withPayload(inputStream), new PutMediaAckResponseHandler() {...});

MemanggilGetMediaContoh kode berikut (dariGetMediaWorker.javafile) panggilanGetMediadi sungai:

GetMediaResult result = videoMedia.getMedia(new GetMediaRequest().withStreamName(streamName).withStartSelector(startSelector));

MenguraiGetMediahasilBagian ini menjelaskan caramenggunakanStreamingMkvpembaca (p. 125),FragmentMetadataPengunjung (p. 126)danCompositeMkvElementVisitoruntukmengurai, menyimpan ke file, dan log data yang dikembalikan dariGetMedia.

128

Amazon Kinesis Video Streams Panduan DeveloperKinesisVideoContoh

Baca output dariGetMediabersamaStreamingMkvpembaca

Contoh kode berikut (dariGetMediaWorker.javafile) membuatStreamingMkvpembaca (p. 125)danmenggunakannya untuk mengurai hasil dariGetMediaoperasi:

StreamingMkvReader mkvStreamReader = StreamingMkvReader.createDefault(new InputStreamParserByteSource(result.getPayload()));log.info("StreamingMkvReader created for stream {} ", streamName);try { mkvStreamReader.apply(this.elementVisitor);} catch (MkvElementVisitException e) { log.error("Exception while accepting visitor {}", e);}

Dalam contoh kode sebelumnya,StreamingMkvpembaca (p. 125)mengambilMKVElementbendadari muatanGetMediahasil. Pada bagian berikutnya, elemen dilewatkankeFragmentMetadataPengunjung (p. 126).

Ambil Fragmen denganFragmentMetadataPengunjung

Contoh kode berikut (dariKinesisVideoExample.javadanStreamingMkvReader.javafile)membuatFragmentMetadataPengunjung (p. 126). ParameterMkvElementbenda iterasiolehStreamingMkvpembaca (p. 125)kemudian diteruskan ke pengunjung menggunakanacceptmetode.

dariKinesisVideoExample.java:

FragmentMetadataVisitor fragmentMetadataVisitor = FragmentMetadataVisitor.create();

dariStreamingMkvReader.java:

if (mkvElementOptional.isPresent()) { //Apply the MkvElement to the visitor mkvElementOptional.get().accept(elementVisitor); }

Log elemen dan menulis mereka ke file

Contoh kode berikut (dariKinesisVideoExample.javafile) menciptakan objek berikut danmengembalikan mereka sebagai bagian dari nilai kembali dariGetMediaProcessingArgumentsFungsi:

• SEBUAHLogVisitor(perpanjanganMkvElementVisitor) yang menulis ke log sistem.• SesiOutputStreamyang menulis data yang masuk ke file MKV.• SEBUAHBufferedOutputStreambahwa buffer data yang terikat untukOutputStream.• Sesithe section called “OutputSegmentPenggabungan” (p. 127)yang menggabungkan elemen berturut-

turut dalamGetMediahasil dengan track yang sama dan data EBML.• SEBUAHCompositeMkvElementVisitoryang

menyusunFragmentMetadataPengunjung (p. 126),the section called“OutputSegmentPenggabungan” (p. 127), danLogVisitormenjadi pengunjung elemen tunggal

//A visitor used to log as the GetMedia stream is processed. LogVisitor logVisitor = new LogVisitor(fragmentMetadataVisitor);

129

Amazon Kinesis Video Streams Panduan DeveloperLangkah Selanjutnya

//An OutputSegmentMerger to combine multiple segments that share track and ebml metadata into one //mkv segment. OutputStream fileOutputStream = Files.newOutputStream(Paths.get("kinesis_video_example_merged_output2.mkv"), StandardOpenOption.WRITE, StandardOpenOption.CREATE); BufferedOutputStream outputStream = new BufferedOutputStream(fileOutputStream); OutputSegmentMerger outputSegmentMerger = OutputSegmentMerger.createDefault(outputStream);

//A composite visitor to encapsulate the three visitors. CompositeMkvElementVisitor mkvElementVisitor = new CompositeMkvElementVisitor(fragmentMetadataVisitor, outputSegmentMerger, logVisitor);

return new GetMediaProcessingArguments(outputStream, logVisitor, mkvElementVisitor);

Argumen pemrosesan media kemudian dilewatkan ke dalamGetMediaWorker, yang pada gilirannyaditeruskan keExecutorServiceyang mengeksekusi pekerja pada thread terpisah:

GetMediaWorker getMediaWorker = GetMediaWorker.create(getRegion(), getCredentialsProvider(), getStreamName(), new StartSelector().withStartSelectorType(StartSelectorType.EARLIEST), amazonKinesisVideo, getMediaProcessingArgumentsLocal.getMkvElementVisitor());executorService.submit(getMediaWorker);

Langkah Selanjutnyathe section called “Langkah 3: Jalankan dan Verifikasi Kode” (p. 130)

Langkah 3: Jalankan dan Verifikasi KodePerpustakaan Parser Stream Video Kinesis berisi alat yang dimaksudkan untuk Anda gunakan dalamproyek Anda sendiri. Proyek ini berisi unit test untuk alat yang dapat Anda jalankan untuk memverifikasiinstalasi Anda.

Pengujian unit berikut disertakan dalam perpustakaan:

• mkv• ElementSizeAndOffsetVisitorTest

• MkvValueTest

• StreamingMkvReaderTest

• utilitas• FragmentMetadataVisitorTest

• OutputSegmentMergerTest

130

Amazon Kinesis Video Streams Panduan DeveloperContoh: Mengirim Data ke Kinesis Video Streams

Contoh Arus Amazon Kinesis VideoStreams

Contoh kode berikut menunjukkan bagaimana bekerja dengan Kinesis Video Streams API:

Contoh: Mengirim Data ke Kinesis Video Streams• Contoh: Kinesis Video Streams Produser SDK GStreamer Plugin (p. 132): Menunjukkan cara

membangun SDK Produser Kinesis Video Streams untuk digunakan sebagai tujuan GStreamer.• Jalankan Elemen GStreamer dalam Container Docker (p. 135): Menunjukkan cara menggunakan

gambar Docker pra-dibangun untuk mengirim video RTSP dari kamera IP ke Kinesis Video Streams.• Contoh: Streaming dari Sumber RTSP (p. 143): Menunjukkan bagaimana membangun gambar Docker

Anda sendiri dan mengirim video RTSP dari kamera IP ke Kinesis Video Streams.• Contoh: Mengirim Data ke Kinesis Video Streams MenggunakanPutMediaAPI (p. 140): Menunjukkan

cara menggunakanMenggunakan Perpustakaan Producer Java (p. 53)untuk mengirim data ke KinesisVideo Streams yang sudah dalam format kontainer (MKV) menggunakanPutMediaAPI.

Contoh: Mengambil Data dari Kinesis VideoStreams

• KinesisVideoContoh (p. 128): Menunjukkan cara mengurai dan mencatat fragmen video menggunakanPerpustakaan Parser Kinesis Video Streams.

• Contoh: Parsing dan Rendering Kinesis Video Streams Fragmen (p. 144): Menunjukkan cara menguraidan merender fragmen aliran video Kinesis menggunakanJCodecdanJFrame.

• the section called “SageMaker” (p. 146): Menunjukkan solusi yang menggunakanSageMakeruntukmenentukan kapan objek tertentu muncul dalam aliran video.

Contoh: Memutar Kembali Data Video• Contoh: Menggunakan HLS dalam HTML dan JavaScript (p. 8): Menunjukkan cara mengambil sesi

streaming HLS untuk streaming video Kinesis dan memutarnya kembali di halaman web.

Prasyarat• Dalam kode contoh, Anda memberikan kredensi dengan menentukan profil yang Anda tetapkan

dalam file profil kredensia AWS Anda, atau dengan memberikan kredensi di properti sistem Java darilingkungan pengembangan terintegrasi (IDE) Anda. Jadi jika Anda belum melakukannya, pertamasiapkan kredensi Anda. Untuk informasi selengkapnya, lihatMenyiapkan Kredenal dan Wilayah AWSuntuk Pengembangan.

• Kami menyarankan agar Anda menggunakan IDE Java untuk melihat dan menjalankan kode, sepertisalah satu dari berikut ini:• Eclipse Neon

131

Amazon Kinesis Video Streams Panduan DeveloperGStreamer

• JetBrainsIntelliJ

Contoh: Kinesis Video Streams Produser SDKGStreamer Plugin

Topik ini menunjukkan bagaimana membangun Amazon Kinesis Video Streams Producer SDK untukdigunakan sebagai plugin GStreamer.

Topik• Unduh, Bangun, dan Konfigurasikan Elemen GStreamer (p. 132)• Jalankan Elemen GStreamer (p. 133)• Contoh Perintah Peluncuran GStreamer (p. 133)• Jalankan Elemen GStreamer dalam Container Docker (p. 135)• Referensi Parameter Elemen GStreamer (p. 137)

GStreameradalah kerangka media populer yang digunakan oleh banyak kamera dan sumber videountuk membuat jaringan pipa media kustom dengan menggabungkan plugin modular. Plugin KinesisVideo Streams GStreamer sangat menyederhanakan integrasi pipa media GStreamer yang ada denganKinesis Video Streams. Setelah mengintegrasikan GStreamer, Anda dapat memulai streaming video darikamera webcam atau RTSP (Real Time Streaming Protocol) ke Kinesis Video Streams untuk pemutaran,penyimpanan, dan analisis lebih lanjut secara real-time atau yang lebih baru.

Plugin GStreamer secara otomatis mengelola transfer aliran video Anda ke Kinesis Video Streams denganmerangkum fungsionalitas yang disediakan oleh Kinesis Video Streams Producer SDK dalam elemenwastafel GStreamer,kvssink. Framework GStreamer menyediakan lingkungan terkelola standar untukmembangun aliran media dari perangkat seperti kamera atau sumber video lainnya untuk pemrosesan,rendering, atau penyimpanan lebih lanjut.

Pipa GStreamer biasanya terdiri dari hubungan antara sumber (kamera video) dan elemen wastafel (baikpemutar untuk membuat video, atau penyimpanan untuk pengambilan offline). Dalam contoh ini, Andamenggunakan elemen Producer SDK sebagaitenggelam, atau tujuan media, untuk sumber video Anda(webcam atau kamera IP). Elemen plugin yang merangkum SDK kemudian mengelola pengiriman aliranvideo ke Kinesis Video Streams.

Topik ini menunjukkan bagaimana membangun pipa media GStreamer yang mampu streaming videodari sumber video, seperti kamera web atau aliran RTSP, biasanya terhubung melalui tahap pengkodeanmenengah (menggunakan pengkodean H.264) ke Kinesis Video Streams. Bila streaming video tersediasebagai aliran video Kinesis, Anda dapat menggunakan Perpustakaan Parser Stream Video Kinesis untukpemrosesan, pemutaran, penyimpanan, atau analisis streaming video lebih lanjut.

Unduh, Bangun, dan Konfigurasikan ElemenGStreamerContoh Plugin GStreamer disertakan dengan Kinesis Video Streams C ++ Producer SDK. Untuk informasitentang prasyarat dan pengunduhan SDK, lihatLangkah 1: Unduh dan Konfigurasikan Kode PerpustakaanProduser C ++ (p. 65).

Anda dapat membangun wastafel Producer SDK GStreamer sebagai pustaka dinamis di macOS, Ubuntu,Raspberry Pi, atau Windows. Plugin GStreamer terletak di Andabuilddirektori. Untuk memuat plugin ini,perlu di AndaGST_PLUGIN_PATH. Jalankan perintah berikut:

132

Amazon Kinesis Video Streams Panduan DeveloperJalankan Elemen GStreamer

export GST_PLUGIN_PATH=`pwd`/build

Jalankan Elemen GStreamerUntuk menjalankan GStreamer dengan elemen Kinesis Video Streams Producer SDK sebagai wastafel,jalankangst-launch-1.0perintah. Gunakan pengaturan yang sesuai untuk plugin GStreamer untukdigunakan. Misalnya,v4l2srcuntuk perangkat v4l2 pada sistem Linux, ataurtspsrcuntuk perangkat RTSP.Tentukankvssinksebagai wastafel (tujuan akhir dari pipa) untuk mengirim video ke Produser SDK.

Parameterkvssinkelemen memiliki parameter yang diperlukan berikut:

• stream-name: Nama aliran video Kinesis.• storage-size: Ukuran penyimpanan perangkat dalam kilobyte. Untuk informasi tentang

mengonfigurasi penyimpanan perangkat, lihatStorageInfo (p. 106).• access-key: Kunci akses AWS yang digunakan untuk mengakses Kinesis Video Streams. Anda harus

memberikan parameter ini ataucredential-path.• secret-key: Kunci rahasia AWS yang digunakan untuk mengakses Kinesis Video Streams. Anda harus

memberikan parameter ini ataucredential-path.• credential-path: Jalur ke file yang berisi kredensi Anda untuk mengakses Kinesis Video Streams.

Untuk informasi selengkapnya tentang kredensi yang berputar, lihatMengelola Kunci Akses untukPengguna IAM. Anda harus memberikan parameter ini atauaccess-keydansecret-key.

Untuk informasi tentangkvssinkparameter opsional, lihatReferensi Parameter ElemenGStreamer (p. 137).

Untuk informasi terbaru tentang plugin dan parameter GStreamer, lihatPlugin GStreamer, atau jalankanperintah berikut untuk daftar pilihan:

gst-inspect-1.0 kvssink

Jika build gagal atau GST_PLUGIN_PATH tidak diatur dengan benar, output Anda terlihat mirip dengan ini:

No such element or plugin 'kvssink'

Contoh Perintah Peluncuran GStreamerContoh ini menunjukkan cara menggunakan plugin GStreamer untuk melakukan streaming video dariberbagai jenis perangkat.

Contoh 1: Streaming Video dari Kamera RTSP di UbuntuPerintah berikut membuat pipa GStreamer di Ubuntu yang mengalir dari kamera RTSP jaringan,menggunakanrtspsrcplugin GStreamer:

$ gst-launch-1.0 rtspsrc location="rtsp://YourCameraRtspUrl" short-header=TRUE ! rtph264depay ! video/x-h264, format=avc,alignment=au ! kvssink stream-name="YourStreamName" storage-size=512 access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"

133

Amazon Kinesis Video Streams Panduan DeveloperPerintah Peluncuran

Contoh 2: Mengkodekan dan Streaming Video dari Kamera USBdi UbuntuPerintah berikut membuat pipa GStreamer di Ubuntu yang mengkodekan aliran dari kamera USB dalamformat H.264, dan mengalirkannya ke Kinesis Video Streams. Contoh ini menggunakanv4l2srcpluginGStreamer.

$ gst-launch-1.0 v4l2src do-timestamp=TRUE device=/dev/video0 ! videoconvert ! video/x-raw,format=I420,width=640,height=480,framerate=30/1 ! x264enc bframes=0 key-int-max=45 bitrate=500 ! video/x-h264,stream-format=avc,alignment=au,profile=baseline ! kvssink stream-name="YourStreamName" storage-size=512 access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"

Contoh 3: Streaming Video Pra-Encoded dari Kamera USB diUbuntuPerintah berikut membuat pipa GStreamer di Ubuntu yang mengalirkan video yang kamera telah dikodekandalam format H.264 ke Kinesis Video Streams. Contoh ini menggunakanv4l2srcplugin GStreamer.

$ gst-launch-1.0 v4l2src do-timestamp=TRUE device=/dev/video0 ! h264parse ! video/x-h264,stream-format=avc,alignment=au ! kvssink stream-name="plugin" storage-size=512 access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"

Contoh 4: Streaming Video dari Kamera Jaringan di macOSPerintah berikut membuat pipeline GStreamer di macOS yang mengalirkan video ke Kinesis Video Streamsdari kamera jaringan. Contoh ini menggunakanrtspsrcplugin GStreamer.

$ gst-launch-1.0 rtspsrc location="rtsp://YourCameraRtspUrl" short-header=TRUE ! rtph264depay ! video/x-h264, format=avc,alignment=au ! kvssink stream-name="YourStreamName" storage-size=512 access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"

Contoh 5: Streaming Video dari Kamera Jaringan di WindowsPerintah berikut membuat pipa GStreamer pada Windows yang mengalirkan video ke Kinesis VideoStreams dari kamera jaringan. Contoh ini menggunakanrtspsrcplugin GStreamer.

$ gst-launch-1.0 rtspsrc location="rtsp://YourCameraRtspUrl" short-header=TRUE ! rtph264depay ! video/x-h264, format=avc,alignment=au ! kvssink stream-name="YourStreamName" storage-size=512 access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"

Contoh 6: Streaming Video dari Kamera di Raspberry PiPerintah berikut membuat pipa GStreamer pada Raspberry Pi yang mengalirkan video ke Kinesis VideoStreams. Contoh ini menggunakanv4l2srcplugin GStreamer.

$ gst-launch-1.0 v4l2src do-timestamp=TRUE device=/dev/video0 ! videoconvert ! video/x-raw,format=I420,width=640,height=480,framerate=30/1 ! omxh264enc control-rate=1 target-bitrate=5120000 periodicity-idr=45 inline-header=FALSE ! h264parse ! video/x-h264,stream-format=avc,alignment=au,width=640,height=480,framerate=30/1,profile=baseline ! kvssink stream-name="YourStreamName" access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"

134

Amazon Kinesis Video Streams Panduan DeveloperJalankan Elemen GStreamer dalam Container Docker

Contoh 7: Streaming Video dari Kamera di Raspberry Pi danTentukan WilayahPerintah berikut membuat pipa GStreamer di Raspberry Pi yang mengalirkan video ke Kinesis VideoStreams di wilayah AS Timur (Virginia N.). Contoh ini menggunakanv4l2srcplugin GStreamer.

$ gst-launch-1.0 v4l2src do-timestamp=TRUE device=/dev/video0 ! videoconvert ! video/x-raw,format=I420,width=640,height=480,framerate=30/1 ! omxh264enc control-rate=1 target-bitrate=5120000 periodicity-idr=45 inline-header=FALSE ! h264parse ! video/x-h264,stream-format=avc,alignment=au,width=640,height=480,framerate=30/1,profile=baseline ! kvssink stream-name="YourStreamName" access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"

Contoh 8: Streaming audio dan video di Raspberry-PI dan UbuntuLihat bagaimanajalankan perintah gst-launch-1.0 untuk memulai streaming audio dan video di Raspberry-PI dan Ubuntu.

Contoh 9: Streaming audio dan video di macOSLihat bagaimanajalankan perintah gst-launch-1.0 untuk memulai streaming audio dan video di macOS.

Contoh 10: Upload file MKV yang berisi audio dan videoLihat bagaimanajalankan perintah gst-launch-1.0 untuk mengunggah file MKV yang berisi audio dan video.

Jalankan Elemen GStreamer dalam Container DockerDocker adalah platform untuk mengembangkan, menyebarkan, dan menjalankan aplikasi menggunakankontainer. Menggunakan Docker untuk membuat pipa GStreamer menstandarisasi lingkungan operasiuntuk Kinesis Video Streams, yang sangat menyederhanakan membangun dan mengeksekusi aplikasi.

Untuk menginstal dan mengkonfigurasi Docker, lihat berikut ini:

• Petunjuk download Docker• Memulai Docker

Setelah menginstal Docker, Anda dapat mengunduh Kinesis Video Streams C++ Producer SDK (dan pluginGStreamer) dari Amazon Elastic Container Registry menggunakandocker pullperintah.

Untuk menjalankan GStreamer dengan elemen Kinesis Video Streams Producer SDK sebagai wastafeldalam wadah Docker, lakukan hal berikut:

Topik• Mengotentikasi Klien Docker Anda (p. 135)• Unduh Docker Image untuk Ubuntu, macOS, Windows, atau Raspberry Pi (p. 136)• Jalankan Gambar Docker (p. 136)

Mengotentikasi Klien Docker AndaAutentikasi klien Docker Anda ke registrasi Amazon ECR di mana Anda berniat untuk menarik citra Anda.Anda harus mendapatkan token autentikasi untuk setiap registri yang digunakan, dan token berlaku selama

135

Amazon Kinesis Video Streams Panduan DeveloperJalankan Elemen GStreamer dalam Container Docker

12 jam. Untuk informasi selengkapnya, lihat Autentikasi Registri dalam Panduan Pengguna Amazon ElasticContainer Registry.

Example : Autentikasi Amazon ECR

aws ecr get-login-password --region us-west-2 | docker login -u AWS --password-stdin https://546150905175.dkr.ecr.us-west-2.amazonaws.com

Jika berhasil, output akan mencetak Login Succeeded.

Unduh Docker Image untuk Ubuntu, macOS, Windows, atauRaspberry PiDownload gambar Docker ke lingkungan Docker Anda menggunakan salah satu perintah berikut,tergantung pada sistem operasi Anda:

Unduh Docker Image untuk Ubuntu

sudo docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux:latest

Unduh Docker Image untuk macOS

sudo docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux:latest

Unduh Docker Image untuk Windows

docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-windows:latest

Unduh Docker Image untuk Raspberry Pi

sudo docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-raspberry-pi:latest

Untuk memverifikasi bahwa gambar berhasil ditambahkan, gunakan perintah berikut:

docker images

Jalankan Gambar DockerGunakan salah satu perintah berikut untuk menjalankan gambar Docker, tergantung pada sistem operasiAnda:

Jalankan Docker Image di Ubuntu

sudo docker run -it --network="host" --device=/dev/video0 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux /bin/bash

136

Amazon Kinesis Video Streams Panduan DeveloperReferensi Parameter

Menjalankan Gambar Docker di macOS

sudo docker run -it --network="host" 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux /bin/bash

Jalankan Docker Image pada Windows

docker run -it 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-windows <AWS_ACCESS_KEY_ID> <AWS_SECRET_ACCESS_KEY> <RTSP_URL> <STREAM_NAME>

Jalankan Docker Image pada Raspberry Pi

sudo docker run -it --device=/dev/video0 --device=/dev/vchiq -v /opt/vc:/opt/vc 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-raspberry-pi /bin/bash

Docker meluncurkan wadah, dan menyajikan Anda dengan command prompt untuk mengeksekusi perintahdalam wadah.

Di wadah, atur variabel lingkungan menggunakan perintah berikut:

export LD_LIBRARY_PATH=/opt/awssdk/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib:$LD_LIBRARY_PATHexport PATH=/opt/awssdk/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/bin:$PATHexport GST_PLUGIN_PATH=/opt/awssdk/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib:$GST_PLUGIN_PATH

Mulai streaming dari kamera menggunakangst-launch-1.0perintah yang sesuai untuk perangkat Anda.Note

Di macOS, Anda hanya dapat melakukan streaming video dari kamera jaringan saat menjalankanGStreamer dalam wadah Docker. Streaming video dari kamera USB di macOS dalam wadahDocker tidak didukung.

Untuk contoh penggunaangst-launch-1.0perintah untuk terhubung ke kamera web lokal atau kameraRTSP jaringan, lihatPerintah Peluncuran (p. 133).

Referensi Parameter Elemen GStreamerUntuk mengirim video ke SDK Produser Amazon Kinesis Video Streams, Andatentukankvssinksebagaitenggelam, atau tujuan akhir dari alur. Referensi ini memberikan informasitentangkvssinkparameter yang diperlukan dan opsional. Untuk informasi selengkapnya, lihat the sectioncalled “GStreamer” (p. 132).

Parameterkvssinkelemen memiliki parameter yang diperlukan berikut:

• stream-name: Nama aliran video Kinesis.Note

Saat menggunakan otorisasi IoT, nilaistream-nameharus identik dengan nilaiiot-thingname(dalam penyediaan IoT). Untuk informasi selengkapnya, lihat Galat “Nama hal tidakvalid berlalu” saat menggunakan otorisasi IoT (p. 183).

• storage-size: Ukuran penyimpanan perangkat dalam megabyte. Untuk informasi tentangmengonfigurasi penyimpanan perangkat, lihatStorageInfo (p. 106).

137

Amazon Kinesis Video Streams Panduan DeveloperReferensi Parameter

• access-key: Kunci akses AWS yang digunakan untuk mengakses Kinesis Video Streams. Anda harusmemberikan parameter ini ataucredential-path.

• secret-key: Kunci rahasia AWS yang digunakan untuk mengakses Kinesis Video Streams. Anda harusmemberikan parameter ini ataucredential-path.

• credential-path: Jalur ke file yang berisi kredensi Anda untuk mengakses Kinesis Video Streams.Anda harus memberikan parameter ini atauaccess-keydansecret-key.

Parameterkvssinkelemen memiliki parameter opsional berikut. Untuk informasi selengkapnya tentangparameter ini, lihat Struktur Arus Video Kinesis (p. 107).

Parameter Deskripsi Unit/Tipe Default

absolute-fragment-times

Apakah akanmenggunakan kalifragmen absolut.

Boolean benar

avg-bandwidth-bps Bandwidth rata-ratayang diharapkan untuksungai.

Byte per detik 4194304

aws-region Wilayah AWS yangakan digunakan.

String us-west-2

buffer-duration Durasi aliran buffer. Detik 180

codec-id ID codec sungai. String "V_MPEG4/ISO/AVC"

connection-staleness

Waktu setelah callbackaliran disebut.

Detik 60

content-type Jenis konten aliran. String "video/h264"

fragment-acks Apakah akanmenggunakan ACKfragmen.

Boolean benar

fragment-duration Durasi fragmen yangAnda inginkan.

Milidetik 2000

framerate Frame rate yangdiharapkan.

Frame per detik 25

frame-timecodes Apakah akanmenggunakan bingkaitimecodes ataumenghasilkan cap waktumenggunakan callbackwaktu saat ini.

Boolean benar

key-frame-fragmentation

Apakah akanmenghasilkan fragmenpada bingkai kunci.

Boolean benar

log-config Jalur konfigurasi log. String "./kvs_log_configuration"

max-latency Latensi maksimumuntuk sungai.

Detik 60

138

Amazon Kinesis Video Streams Panduan DeveloperReferensi Parameter

Parameter Deskripsi Unit/Tipe Default

recalculate-metrics

Apakah akanmenghitung ulangmetrik.

Boolean benar

replay-duration Durasi untuk memutarpembaca saat inimundur untuk memutarulang selama kesalahanjika restart diaktifkan.

Detik 40

restart-on-error Apakah akan memulaiulang saat terjadikesalahan.

Boolean benar

retention-period Lamanya waktu alirandiawetkan.

Jam 2

rotation-period Periode rotasi kunci.Untuk informasiselengkapnya,lihatKunci UtamaPelanggan.

Detik 2400

streaming-type Jenis streaming. Nilaiyang valid meliputi:

• 0: waktu nyata• 1: dekat real time

(saat ini tidakdidukung)

• 2: secara offline

EnumGstKvsSinkStreamingType0: waktu nyata

timecode-scale Skala timecode MKV. Milidetik 1

track-name Nama lagu MKV. String "kinesis_video"

iot-certificate Kredensi IoT yangakan digunakan dalamelemen kvssink.Menerima kunci dannilai berikut:

• titik akhir =iotcredentialsprovidertitikakhir

• cert-path=/localdirectorypath /ke/sertifikat

• key-path =/localdirectorypath /ke/private/key

• ca-path=/localdirectorypath/ke/ca-cert

• role-aliases=role-alias

String Tidak ada

139

Amazon Kinesis Video Streams Panduan DeveloperAPI PutMedia

Contoh: Mengirim Data ke Kinesis Video StreamsMenggunakanPutMediaAPI

Contoh ini menunjukkan cara menggunakanPutMediaAPI. Ini menunjukkan cara mengirim data yang sudahdalam format kontainer (MKV). Jika data Anda perlu dirakit ke dalam format kontainer sebelum dikirim(misalnya, jika Anda merakit data video kamera ke dalam bingkai), lihatPustaka Produsen Kinesis VideoStreams (p. 52).

Note

ParameterPutMediaoperasi hanya tersedia di C ++ dan Java SDK, karena manajemen full-duplexkoneksi, aliran data, dan pengakuan. Hal ini tidak didukung dalam bahasa lain.

Contoh ini mencakup langkah-langkah berikut:• Langkah 1: Unduh dan Konfigurasikan Kode (p. 140)• Langkah 2: Menulis dan Periksa Kode (p. 141)• Langkah 3: Jalankan dan Verifikasi Kode (p. 142)

Langkah 1: Unduh dan Konfigurasikan KodePada bagian ini, Anda mengunduh kode contoh Java, mengimpor proyek ke IDE Java Anda,mengonfigurasi lokasi perpustakaan, dan mengonfigurasi kode untuk menggunakan kredensi AWS Anda.

1. Buat direktori dan kloning kode sumber contoh dariGitHubrepositori. ParameterPutMediacontohadalah bagian dariPerpustakaan Produser Java (p. 53).

$ git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-java

2. Buka IDE Java yang Anda gunakan (misalnya,GerhanaatauIntelliJ), dan impor proyek Apache Mavenyang Anda download:

• Dalam Eclipse: PilihBerkas,Impor,Maven,Proyek Maven, dan arahkan ke akar paket yangdidownload. Pilihpom.xmlberkas.

• Dalam IntelliJ Ide: Pilih Import (Impor). Arahkan kepom.xmlfile di root paket download.

Untuk informasi lebih lanjut, lihat dokumentasi IDE terkait.3. Perbarui proyek sehingga IDE dapat menemukan perpustakaan yang Anda impor.

• Untuk IntelliJ IDEA, lakukan hal berikut ini:

a. Buka menu konteks (klik kanan) untuk proyeklibdirektori, dan pilihTambahkan sebagaipustaka.

b. PilihBerkas,Struktur Proyek.c. Di bawahPengaturan Proyek, pilihModul.d. DiSumbertab, setTingkat bahasakepada7atau lebih tinggi.

• Untuk Eclipse, lakukan hal berikut:

a. Buka menu konteks (klik kanan) untuk proyek, dan pilihProperti,Jalur Build Java,Sumber.Kemudian, lakukan hal berikut:

1. PadaSumbertab, klik dua kaliLokasi pustaka asli.2. DiKonfigurasi Folder Perpustakaan Asliwizard, pilihWorkspace.

140

Amazon Kinesis Video Streams Panduan DeveloperLangkah 2: Menulis dan Periksa Kode

3. DiFolder Pustaka Asliseleksi, pilihlibdirektori dalam proyek.b. Buka menu konteks (klik kanan) untuk proyek, dan pilihProperti. Kemudian, lakukan hal

berikut:

1. PadaPerpustakaantab, pilihTambahkan Jars.2. DiPemilihan JARwizard, pilih semua .jar dalam proyeklibdirektori.

Langkah 2: Menulis dan Periksa KodeParameterPutMediaContoh API (PutMediaDemo) menunjukkan pola coding berikut:

Topik• BuatPutMediaKlien (p. 141)• Streaming Media dan Jeda Thread (p. 142)

Contoh kode di bagian ini berasal dariPutMediaDemokelas.

BuatPutMediaKlienMembuatPutMediaClientmengambil parameter berikut:

• URI untukPutMediatitik akhir.• SesiInputStreammenunjuk ke file MKV untuk streaming.• Nama stream. Contoh ini menggunakan aliran yang dibuat diMenggunakan Perpustakaan Producer

Java (p. 53)(my-stream). Untuk menggunakan aliran yang berbeda, ubah parameter berikut:

private static final String STREAM_NAME="my-stream";

Note

ParameterPutMediaContoh API tidak membuat stream. Anda harus membuat aliran baikdengan menggunakan aplikasi uji untukMenggunakan Perpustakaan Producer Java (p. 53),dengan menggunakan konsol Kinesis Video Streams, atau dengan menggunakanAWS CLI.

• Stempel waktu saat ini.• Jenis kode waktu. Contoh menggunakanRELATIVE, menunjukkan bahwa timestamp relatif terhadap

awal wadah.• SesiAWSKinesisVideoV4Signerobjek yang memverifikasi bahwa paket yang diterima dikirim oleh

pengirim yang berwenang.• Bandwidth hulu maksimum di Kbps.• SesiAckConsumerkeberatan untuk menerima paket menerima pengakuan.

Kode berikut membuatPutMediaClientobjek:

/* actually URI to send PutMedia request */final URI uri = URI.create(KINESIS_VIDEO_DATA_ENDPOINT + PUT_MEDIA_API);

/* input stream for sample MKV file */final InputStream inputStream = new FileInputStream(MKV_FILE_PATH);

/* use a latch for main thread to wait for response to complete */final CountDownLatch latch = new CountDownLatch(1);

141

Amazon Kinesis Video Streams Panduan DeveloperLangkah 3: Jalankan dan Verifikasi Kode

/* a consumer for PutMedia ACK events */final AckConsumer ackConsumer = new AckConsumer(latch);

/* client configuration used for AWS SigV4 signer */final ClientConfiguration configuration = getClientConfiguration(uri);

/* PutMedia client */final PutMediaClient client = PutMediaClient.builder() .putMediaDestinationUri(uri) .mkvStream(inputStream) .streamName(STREAM_NAME) .timestamp(System.currentTimeMillis()) .fragmentTimeCodeType("RELATIVE") .signWith(getKinesisVideoSigner(configuration)) .upstreamKbps(MAX_BANDWIDTH_KBPS) .receiveAcks(ackConsumer) .build();

Streaming Media dan Jeda ThreadSetelah klien dibuat, sampel mulai streaming asinkron denganputMediaInBackground. Thread utamakemudian dijeda denganlatch.awaitsampaiAckConsumerkembali, di mana titik klien ditutup.

/* start streaming video in a background thread */ client.putMediaInBackground();

/* wait for request/response to complete */ latch.await();

/* close the client */ client.close();

Langkah 3: Jalankan dan Verifikasi KodeUntuk menjalankanPutMediaContoh API, lakukan hal berikut:

1. Membuat Pengaliranmy-streamdi konsol Kinesis Video Streams atau dengan menggunakanAWSCLI.

2. Ubah direktori kerja Anda ke direktori SDK produser Java:

$ cd /<YOUR_FOLDER_PATH_WHERE_SDK_IS_DOWNLOADED>/amazon-kinesis-video-streams-producer-sdk-java/

3. Kompilasi Java SDK dan aplikasi demo:

mvn package

4. Membuat nama file sementara di/tmpdirektori:

$ jar_files=$(mktemp)

5. Buat string classpath dependensi dari repositori lokal ke file:

$ mvn -Dmdep.outputFile=$jar_files dependency:build-classpath

6. Mengatur nilaiLD_LIBRARY_PATHvariabel lingkungan sebagai berikut:

142

Amazon Kinesis Video Streams Panduan DeveloperRTSP dan Docker

$ export LD_LIBRARY_PATH=/<YOUR_FOLDER_PATH_WHERE_SDK_IS_DOWNLOADED>/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib:$LD_LIBRARY_PATH$ classpath_values=$(cat $jar_files)

7. Jalankan demo dari baris perintah sebagai berikut, sediakan kredensyal AWS Anda:

$ java -classpath target/kinesisvideo-java-demo-1.0-SNAPSHOT.jar:$classpath_values -Daws.accessKeyId=${ACCESS_KEY} -Daws.secretKey=${SECRET_KEY} -Djava.library.path=/opt/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build com.amazonaws.kinesisvideo.demoapp.DemoAppMain

8. Buka konsol Kinesis Video Streams dihttps://console.aws.amazon.com/kinesisvideo/, dan pilih aliranAnda diMengelola aliranhalaman. Video diputar diPratinjau Videopanel.

Contoh: Streaming dari Sumber RTSPParameterPerpustakaan produsen C ++ (p. 62)berisi definisi untukDockerwadah yang terhubung kekamera jaringan RTSP (Real Time Streaming Protocol). Menggunakan Docker standarisasi lingkunganoperasi untuk Kinesis Video Streams, yang sangat menyederhanakan membangun dan mengeksekusiaplikasi.

Untuk menggunakan aplikasi demo RTSP, pertama menginstal dan membangunPerpustakaan produsen C++ (p. 62).

Prosedur berikut menunjukkan cara mengatur dan menggunakan aplikasi demo RTSP.

Topik• Prasyarat (p. 143)• Membuat Gambar Docker (p. 143)• Jalankan RTSP Contoh Aplikasi (p. 144)

PrasyaratUntuk menjalankan aplikasi contoh Kinesis Video Streams RTSP, Anda harus memiliki yang berikut:

• Docker: Untuk informasi tentang menginstal dan menggunakan Docker, lihat tautan berikut:• Petunjuk download Docker• Memulai Docker

• RTSP sumber kamera jaringan: Untuk informasi tentang kamera yang direkomendasikan,lihatPersyaratan Sistem (p. 3).

Membuat Gambar DockerPertama, Anda membangun gambar Docker bahwa aplikasi demo akan berjalan di dalam.

1. Buat direktori baru dan salin file berikut daridocker_native_scriptsdirektori ke direktori baru:

• Dockerfile

• start_rtsp_in_docker.sh

143

Amazon Kinesis Video Streams Panduan DeveloperJalankan RTSP Contoh Aplikasi

2. Ubah ke direktori yang Anda buat di langkah sebelumnya.3. membuat gambar Docker menggunakan perintah berikut. Perintah ini menciptakan gambar dan tag

sebagairtspdockertest.

docker build -t rtspdockertest .

4. Rekam ID gambar yang dikembalikan pada langkah sebelumnya (misalnya,54f0d65f69b2).

Jalankan RTSP Contoh AplikasiMulai kontainer Kinesis Video Streams Docker menggunakan perintah berikut. Berikan ID gambar darilangkah sebelumnya, kredensi AWS Anda, URL kamera jaringan RTSP Anda, dan nama aliran videoKinesis untuk mengirim data.

$ docker run -it <IMAGE_ID> <AWS_ACCESS_KEY_ID> <AWS_SECRET_ACCESS_KEY> <RTSP_URL> <STREAM_NAME>

Untuk menyesuaikan aplikasi, komentar atau menghapusENTRYPOINTperintah diDockerfile, danmeluncurkan wadah menggunakan perintah berikut:

docker run -it <IMAGE_ID> bash

Anda kemudian diminta di dalam wadah Docker untuk menyesuaikan aplikasi sampel dan mulai streaming.

Contoh: Parsing dan Rendering Kinesis VideoStreams Fragmen

ParameterPerpustakaan Stream Parser (p. 124)berisi aplikasi demobernamaKinesisVideoRendererExampleyang menunjukkan parsing dan rendering fragmenaliran video Amazon Kinesis. Contoh menggunakanJCodecuntuk memecahkan kode frame H.264dikodekan yang tertelan menggunakanContoh: Kinesis Video Streams Produser SDK GStreamerPlugin (p. 132)aplikasi. Setelah frame diterjemahkan menggunakan JCodec, gambar terlihat diberikanmenggunakanJFrame.

Contoh ini menunjukkan cara melakukan hal berikut:

• Mengambil frame dari aliran video Kinesis menggunakanGetMediaAPI dan membuat stream untukdilihat.

• Melihat konten video stream dalam aplikasi kustom alih-alih menggunakan konsol Kinesis VideoStreams.

Anda juga dapat menggunakan kelas dalam contoh ini untuk melihat konten aliran video Kinesis yang tidakdikodekan sebagai H.264, seperti aliran file JPEG yang tidak memerlukan decoding sebelum ditampilkan.

Prosedur berikut menunjukkan cara mengatur dan menggunakan aplikasi demo Renderer.

PrasyaratUntuk memeriksa dan menggunakan pustaka contoh Renderer, Anda harus memiliki hal-hal berikut:

144

Amazon Kinesis Video Streams Panduan DeveloperMenjalankan Contoh Renderer

• Akun (AWS) Amazon Web Services. Jika Anda belum memilikiAWSakun, lihatMemulai dengan KinesisVideo Streams.

• Lingkungan pengembangan terintegrasi Java (IDE), sepertiEclipse NeonatauJetBrainsIde IntelliJ.

Menjalankan Contoh Renderer1. Buat direktori, lalu kloning kode sumber contoh dariGitHubrepositori.

$ git clone https://github.com/aws/amazon-kinesis-video-streams-parser-library

2. Buka IDE Java yang Anda gunakan (misalnya,GerhanaatauIntelliJ), dan impor proyek Apache Mavenyang Anda download:

• Dalam Eclipse: PilihBerkas,Impor,Maven,Proyek Maven. Buka direktori kinesis-video-streams-parser-lib tersebut.

• Dalam IntelliJ Ide: Pilih Import (Impor). Arahkan kepom.xmlfile di root paket download.

Note

Jika IntelliJ tidak dapat menemukan dependensi Anda, Anda mungkin harus melakukan halberikut:• Membangun bersih: PilihBerkas,Pengaturan,Membangun, Eksekusi,

Deployment,Kompilasi. Pastikan bahwaHapus direktori output saat membangunkembalidipilih, lalu pilihMembangun,Proyek Build.

• Impor ulang proyek: Buka menu konteks (klik kanan) untuk proyek, danpilihMaven,Mengimpor ulang.

Untuk informasi lebih lanjut, lihat dokumentasi IDE terkait.3. Dari IDE Java Anda, bukasrc/test/java/com.amazonaws.kinesisvideo.parser/

examples/KinesisVideoRendererExampleTest.4. Hapus@Ignoredirektif dari file.5. Perbarui.streamparameter dengan nama aliran video Kinesis Anda.6. JalankanKinesisVideoRendererExampletes.

Cara KerjanyaContoh aplikasi menunjukkan berikut:

• Mengirim data MKV (p. 145)• Mengurai Fragmen MKV ke Frame (p. 146)• Decoding dan Menampilkan Frame (p. 146)

Mengirim data MKVContoh mengirimkan sampel data MKV darirendering_example_video.mkvfile,menggunakanPutMediauntuk mengirim data video ke aliran bernamarender-example-stream.

Aplikasi ini menciptakanPutMediaWorker:

PutMediaWorker putMediaWorker = PutMediaWorker.create(getRegion(), getCredentialsProvider(),

145

Amazon Kinesis Video Streams Panduan DeveloperSageMaker

getStreamName(), inputStream, streamOps.amazonKinesisVideo);executorService.submit(putMediaWorker);

Untuk informasi tentangPutMediaWorkerclass, lihatMemanggilPutMedia (p. 128)diPerpustakaan StreamParser (p. 124)dokumentasi.

Mengurai Fragmen MKV ke FrameContoh kemudian mengambil dan mem-parsing fragmen MKV dari sungaimenggunakanGetMediaWorker:

GetMediaWorker getMediaWorker = GetMediaWorker.create(getRegion(), getCredentialsProvider(), getStreamName(), new StartSelector().withStartSelectorType(StartSelectorType.EARLIEST), streamOps.amazonKinesisVideo, getMediaProcessingArgumentsLocal.getFrameVisitor());executorService.submit(getMediaWorker);

Untuk informasi lebih lanjut tentangGetMediaWorkerclass,lihatMemanggilGetMedia (p. 128)diPerpustakaan Stream Parser (p. 124)dokumentasi.

Decoding dan Menampilkan FrameContoh kemudian decodes dan menampilkan frame menggunakanJFrame.

Contoh kode berikut adalah dariKinesisVideoFrameViewerkelas, yang meluasJFrame:

public void setImage(BufferedImage bufferedImage) { image = bufferedImage; repaint();}

Gambar ditampilkan sebagai instance darijava.awt.image.BufferedImage. Contoh yang menunjukkan carabekerja denganBufferedImage, lihatMembaca/Memuat Gambar.

Contoh: Mengidentifikasi Objek dalam VideoStreams MenggunakanSageMaker

Contoh ini menunjukkan cara membuat solusi yang menggunakanSageMakeruntuk mengidentifikasi kapanobjek tertentu muncul dalam aliran video Amazon Kinesis. SageMakeradalah platform yang dikelola untukpengembang dan ilmuwan data untuk membangun, melatih, dan menyebarkan model pembelajaran mesindengan cepat dan mudah.

Contohnya terdiri dariDockerkontainer yang mencakup fungsionalitas aplikasi, danAWSCloudFormationtemplate yang mengotomatisasi penyebaran aplikasiAWSsumber daya.

ParameterAWS CloudFormationTemplate membuat sumber daya berikut:

• SesiLayanan Amazon Elastic Container (Amazon ECS)cluster yang menggunakanAWSJauhmesinkomputasi yang menjalankan perangkat lunak perpustakaan.

146

Amazon Kinesis Video Streams Panduan DeveloperPrasyarat

• SesiAmazon DynamoDBtabel yang mempertahankan pos pemeriksaan dan negara terkait di seluruhpekerja yang berjalan pada tugas-tugas Fargate.

• SEBUAHAliran data kinesisyang menangkap output inferensi yang dihasilkan dariSageMaker.• SesiAWS Lambdafungsiyang mem-parsing output dariSageMaker.• AWS Identity and Access Management(IAM)sumber daya untuk menyediakan akses di seluruh layanan.• AmazonCloudWatchsumber daya untuk memantau aplikasi.

Aplikasi ini kompatibel denganSageMakerendpoint yang memproses data. Contoh ini berisi petunjuk untukmembuatSageMakerendpoint yang menggunakan template algoritma identifikasi objek sampel. Anda dapatmemodifikasi atau mengganti algoritma berdasarkan kasus dan persyaratan penggunaan aplikasi Anda.

Topik• Prasyarat (p. 147)• Membuat Aplikasi (p. 148)• Memantau Aplikasi (p. 149)• Memperluas Aplikasi (p. 150)• Membersihkan Aplikasi (p. 151)

PrasyaratAplikasi contoh memiliki prasyarat berikut:

• SageMaker (p. 147)• Arus Video Kinesis (p. 147)• peran tertaut layanan (p. 147)

SageMakerContoh ini membutuhkanSageMakernotebook. Untuk informasi tentang membuat buku catatan,lihatMembuat Instans NotebookdiAmazonSageMakerPanduan Pengembang. Perhatikan hal berikut saatmembuat notebook Anda:

• Tambahkanobject_detection_image_json_format.ipynbcontoh (dariPengantar AlgoritmaAmazonbagian dalamSageMakerContohtabJupyterkonsol) ke notebook.

• Buat bucket Amazon Simple Storage Service (Amazon S3), dan berikan namanya diPrasyaratlangkahsaat menambahkan contoh.

• Setelah Anda membuat notebook, pilihKonfigurasi Titik AkhirpadaSageMakerkonsol, dan membuatcatatanNama titik akhir.

Arus Video KinesisContoh ini memerlukan satu atau lebih aliran video Kinesis yang memiliki data video langsung.Untuk informasi tentang membuat aliran video Kinesis dan mengirim data ke kamera dari kamera,lihatGStreamer (p. 132). Buat catatan tentang nama aliran video Kinesis Anda.

peran tertaut layananContoh ini mengharuskan akun Anda memiliki peran terkait layanan untuk operasi AWS Fargate. AkunAWS baru mengaktifkan peran ini secara default. Jika Anda melihat kesalahan berikut saat membuataplikasi, Anda harus mengaktifkan peran terkait layanan:

147

Amazon Kinesis Video Streams Panduan DeveloperMembuat Aplikasi

Unable to assume the service linked role. Please verify that the ECS service linked role exists

Untuk mengaktifkan peran terkait layanan, jalankan perintah berikut:

aws iam create-service-linked-role --aws-service-name ecs.amazonaws.com

Membuat AplikasiUntuk membuat aplikasi sampel, Anda menggunakanAWS CloudFormationdan template yang disediakan.

Untuk menggunakanAWS CloudFormationuntuk membuat aplikasi

1. Masuk keAWS Management Consoledan bukaAWS CloudFormationkonsol menggunakan salah satutautan berikut untukAWSWilayah. Tautan meluncurkan tumpukan yang benar untuk Wilayah Anda:

• Peluncuran di Asia Pacific (Sydney) Region (ap-southeast-2)• Peluncuran di Asia Pacific (Tokyo) Region (ap-northeast-1)• Peluncuran di Eropa (Frankfurt) Wilayah (eu-central-1)• Peluncuran di Eropa (Irlandia) Wilayah (eu-west-1)• Peluncuran di US East (N. Virginia) Wilayah (us-east-1)• Peluncuran di US West (Oregon) Wilayah (us-west-2)

2. PadaBuat tumpukanhalaman, memberikan nilai berikut:

• Beri nama unik (misalnya,nama pengguna-KVSSageMaker).• BerikanSageMakernama endpoint (bukan ARN endpoint) yang Anda buat di bagian sebelumnya.• Berikan nama aliran video Kinesis Anda. Jika Anda memiliki lebih dari satu aliran video Kinesis,

berikan nama stream dalam tanda kutip dan dipisahkan dengan koma.• Jaga pengaturan lainnya sebagaimana adanya.

Pilih Selanjutnya.3. PadaOpsiHalaman, jangan ubah pengaturan.4. PilihSaya mengakui bahwa AWSCloudFormationdapat membuat sumber daya IAMkotak centang. Pilih

Selanjutnya.

AWS CloudFormationmenciptakan aplikasi.

Tabel berikut mencantumkan beberapa parameter yang digunakan oleh kontainer Docker saat Andamembuat tumpukan menggunakan iniAWS CloudFormationtemplat. Nilai-nilai mereka yang telahditentukan dalamSSMsumber daya di template, tetapi Anda dapat menyesuaikan sesuai kebutuhan.

Nama sumber daya Nilai default Deskripsi

inferenceInterval 6 The sampling ratio for video frames that are sent to the SageMaker endpoint. Currently, we only support inferencing on I-Frames. The default value of 6 means that 1 outof every 6 I-Frames is sent to the SageMaker endpoint.

sageMakerTaskQueueSize 5000 The size of the queue that maintains the pending requests to the SageMaker endpoint. The size of the queue is affected by ‘inferenceInternval’ and‘sageMakerTaskTimeoutInMilli’. If SageMaker inference takes longer, requests are buffered in this queue.

sageMakerTaskThreadPoolSize 20 Number of threads that is used to concurrently execute SageMaker requests.

sageMakerTaskTimeoutInMilli 20000 The maximum duration allowed for a single request (or a retry request) that is sent to the SageMaker endpoint.

148

Amazon Kinesis Video Streams Panduan DeveloperMemantau Aplikasi

sageMakerTaskThreadPoolName SageMakerThreadPool-%d

The name of the threadpool that is sending requests to the SageMaker endpoint.

Untuk menyesuaikan nilai parameter ini, unduhAWS CloudFormationtemplate dengan memilih URLtemplate padaBuat tumpukanhalaman, dan kemudian menemukan parameter ini diParamsbagian daritemplate yang terlihat seperti ini:

Params: Type: AWS::SSM::Parameter Properties: Name: Ref: AppName Description: "Configuration for SageMaker app" Type: String Value: Fn::Sub: | {"streamNames":[${StreamNames}], "tagFilters":[${TagFilters}],"sageMakerEndpoint":"${SageMakerEndpoint}", "endPointAcceptContentType": "${EndPointAcceptContentType}", "kdsStreamName":"${Kds}","inferenceInterval":6,"sageMakerTaskQueueSize":5000, "sageMakerTaskThreadPoolSize":20,"sageMakerTaskTimeoutInMilli":20000, "sageMakerTaskThreadPoolName":"SageMakerThreadPool-%d"}

Memantau AplikasiAplikasi yang dibuat olehAWS CloudFormationtemplate termasuk AmazonCloudWatchdasbordanCloudWatchlog stream yang Anda gunakan untuk memantau metrik dan peristiwa aplikasi.

Dasbor AplikasiAplikasi ini mencakupCloudWatchdasbor untuk memantau metrik aplikasi. Untuk melihat dasbor aplikasi,bukaCloudWatchkonsol dihttps://console.aws.amazon.com/cloudwatch/dan pilihDasbordi bilah navigasisebelah kiri.

PilihKVSSageMaker-Driver-KvsSageMakerIntegration-aws-region dasbor. Dasbor menunjukkaninformasi berikut:

• Metrik bingkai: Metrik untuk memproses aliran video, mengirim frame keSageMakerendpoint, danmenulis ke aliran data Kinesis yang menghubungkanSageMakernotebook denganAWS Lambdafungsiyang memprosesSageMakerhasil output kesimpulan.

• IngestToProcessLatency: Perbedaan waktu antara saat bingkai video tertelan ke layanan Kinesis VideoStreams dan saat aplikasi menerima frame.

• Jumlah Sewa Saat Ini: Aplikasi ini diberikan izin untuk membaca dari aliran video Kinesis menggunakansewa. Metrik ini menunjukkan jumlah sewa aktif. Aplikasi ini menggunakan satu sewa per aliran videoKinesis, dan satu sewa untuk sinkronisasi antara aliran.

• Metrik Sinkronisasi Sewa: Frekuensi dan durasi sinkronisasi izin sewa.• LeaseCountper pekerja: Distribusi sewa di antaraSageMakerbenang pekerja.• Jumlah Pekerja: JumlahSageMakerpekerja memproses aliran. Setiap tugas dalam klaster Amazon ECS

memiliki satu pekerja yang berjalan. Satu pekerja dapat memproses lebih dari satu aliran.• Pemanfaatan Layanan ECS: Metrik penggunaan klaster Amazon ECS.• KinesisDataAliran: Metrik penggunaan aliran data Kinesis.• SageMaker: Operasi yang dilakukan olehSageMakernotebook.

149

Amazon Kinesis Video Streams Panduan DeveloperMemperluas Aplikasi

• Lambda: Jumlah dan durasi fungsi Lambda yang memproses output dariSageMakernotebook.

Jika salah satu informasi dalam grafik ini menunjukkan masalah operasional (seperti nilai terus meningkatdaripada menjadi stabil), lihat bagian berikut tentang cara membaca log aplikasi untuk menentukanmasalah.

CloudWatch LogAplikasi ini mencakup duaCloudWatchlog:

Topik• Log Aplikasi (p. 150)• Log Fungsi Lambda (p. 150)

Log Aplikasi

Anda dapat menggunakan log aplikasi untuk memantau peristiwa aplikasi dan kondisi kesalahan. Log inisangat membantu jika Anda perlu menghubungi dukungan produk dengan masalah.

Untuk membaca Log Aplikasi

1. Buka konsol Amazon ECS dihttps://console.aws.amazon.com/ecs.2. PilihKVS-Sagemaker Driverkluster.3. Pilihnama tumpukan-SageMakerDriverServicelayanan diLayanantab.4. Pilih tab Log.

Log aplikasi menunjukkan peristiwa seperti inisialisasi, konfigurasi, dan aktivitas sewa.

Log Fungsi Lambda

Anda dapat menggunakan log fungsi Lambda untuk melacak identifikasi objek yang berhasil.

Untuk membaca log Lambda

1. BukaAWS Lambdakonsol dihttps://console.aws.amazon.com/lambda.2. Pilih fungsi Lambda untuk aplikasi Anda. Nama fungsi Lambda dalam format berikut:

stack-name-LambdaFunction-A1B2C3D4E5F6G

3. PilihPemantauanpanel.4. Pilih Lihat log dalam CloudWatch.

ParameterCloudWatchlog untuk aplikasi menunjukkan identifikasi sukses objek dalam aliran video Kinesisdan acara aplikasi lainnya.

Memperluas AplikasiAnda dapat menambahkan fungsionalitas khusus ke aplikasi Anda dengan memodifikasi nilai yang Andaberikan diAWS CloudFormationjendela template sebagai berikut:

• EndPointAcceptContentJenis: Anda dapat mengubah nilai ini jikaSageMakerendpoint tidak menerimaframe dalam format JPG. Format berikut ini didukung:

150

Amazon Kinesis Video Streams Panduan DeveloperMembersihkan Aplikasi

• image/jpeg

• image/png

• image/bmp

• image/gif

• application/x-image

• LambdaFunctionember,LambdaFunctionKunci: Pengaturan yang disediakan menggunakanAWSLambdafungsi yang memprosesSageMakeroutput dan menulis keCloudWatchLog. Jika Anda inginmengirimSageMakeroutput di tempat lain, Anda dapat menyediakan fungsi Lambda Anda sendiri.

• Filter Tag: Jika Anda memiliki aliran yang ditandai menggunakanthe section called“TagStream” (p. 234)tindakan, Anda dapat menentukan tag aliran yang ingin Anda proses. Misalnya,jika Anda memiliki dua aliran yang memilikiLocationkunci dengan nilai-nilaiFrontdanParking, Andaakan menyaring untuk hanya menggunakan aliran tersebut menggunakan entri berikut:

{"key":"Location","values":["Front","Parking"]}

Membersihkan AplikasiSetelah Anda selesai dengan aplikasi yang Anda buat untuk tutorial ini, sebaiknya Anda menghapussumber daya apa pun yang tidak ingin Anda simpan, untuk menghindari biaya yang sedang berlangsung.

1. SageMakertitik akhir: Jika Anda membuatSageMakerendpoint untuk tutorial ini daripada menggunakanendpoint yang ada, hapus endpoint. DiSageMakerpanel kontrol, pilihKonfigurasi Titik Akhir. Pilih titikakhir yang Anda buat, dan pilihTindakan,Hapus. Konfirmasi penghapusan.

2. SageMakernotebook: PadaSageMakerkonsol, pilihInstans notebook. Pilih notebook yang Andabuat, dan pilihTindakan,Berhenti. Ketika notebook menunjukkan bahwaStatusadalahDihentikan,pilihTindakan,Hapus. Konfirmasi penghapusan.

Note

Untuk informasi lebih lanjut tentang pembersihanSageMakersumber daya,lihatMembersihkandiSageMakerpanduan pengembang.

3. SageMakerkebijakan eksekusi: Di konsol IAM, di panel navigasi, pilihKebijakan. Pilih kebijakan yangAnda buat untuk tutorial ini. Nama kebijakan serupa dengan yang berikut ini:AmazonSageMaker-ExecutionPolicy-timestamp

Pilih Tindakan kebijakan, Hapus. Konfirmasi penghapusan.4. SageMakerperan eksekusi: Di konsol IAM, di panel navigasi, pilihPeran. Pilih peran yang Anda

buat untuk tutorial ini. Nama perannya serupa dengan yang berikut ini:AmazonSageMaker-ExecutionRole-timestamp

Pilih Hapus peran. Konfirmasi penghapusan.5. AWS CloudFormationtumpukan: PadaAWS CloudFormationkonsol, pilih tumpukan yang Anda buat

untuk tutorial ini. PilihTindakan,Hapus tumpukan. Konfirmasi penghapusan.6. Bucket Amazon S3: Di konsol Amazon S3, pilih bucket yang Anda buat untuk

menyimpanSageMakeraset. Pilih Delete (Hapus). Masukkan nama bucket dan pilihKonfirmasiuntukmengkonfirmasi penghapusan

7. Arus video Kinesis: Pada konsol Kinesis Video Streams, pilih aliran video yang Anda buat untukaplikasi. Pilih Delete (Hapus). Konfirmasi penghapusan.

151

Amazon Kinesis Video Streams Panduan DeveloperPemantauan dengan CloudWatch

Pemantauan Kinesis Video StreamsPemantauan adalah bagian penting dari menjaga keandalan, ketersediaan, dan performa Kinesis VideoStreams serta solusi AWS Anda. Anda harus mengumpulkan data pemantauan dari semua bagian solusiAWS sehingga bila terjadi, Anda bisa melakukan debug kegagalan multititik secara lebih mudah. Namunsebelum Anda mulai memantau Kinesis Video Streams, Anda harus membuat rencana pemantauan yangmencakup jawaban atas pertanyaan berikut:

• Apa sasaran pemantauan Anda?• Sumber daya apa yang akan Anda pantau?• Seberapa sering Anda akan memantau sumber daya ini?• Alat pemantauan apa yang akan Anda gunakan?• Siapa yang akan melakukan tugas pemantauan?• Siapa yang harus diberi tahu saat terjadi kesalahan?

Setelah Anda menentukan tujuan pemantauan Anda dan membuat rencana pemantauan, langkahberikutnya adalah menetapkan dasar untuk performa Kinesis Video Streams normal di lingkunganAnda. Anda harus mengukur kinerja Kinesis Video Streams pada berbagai waktu dan di bawah tingkatkesesuaian beban yang berbeda. Saat Anda memantau Kinesis Video Streams, Anda harus menyimpanriwayat data pemantauan yang telah Anda kumpulkan. Anda dapat membandingkan performa KinesisVideo Streams saat ini dengan data historis ini untuk membantu Anda mengidentifikasi pola performanormal dan anomali performa, serta merancang metode untuk mengatasi masalah yang mungkin timbul.

Topik• Pemantauan Metrik Arus Video Kinesis dengan CloudWatch (p. 152)• Logging Kinesis Video Streams API Panggilan denganAWS CloudTrail (p. 163)

Pemantauan Metrik Arus Video Kinesis denganCloudWatch

Anda dapat memantau aliran video Kinesis menggunakan Amazon CloudWatch, yang mengumpulkandan memproses data mentah dari Kinesis Video Streams menjadi metrik hampir waktu nyata yang dapatdibaca. Statistik ini dicatat untuk jangka waktu 15 bulan, sehingga Anda dapat mengakses informasi historisdan mendapatkan perspektif yang lebih baik tentang bagaimana kinerja aplikasi atau layanan web Anda.

Di Konsol Manajemen Kinesis Video Streams, Anda dapat melihat CloudWatch metrik untuk aliran videoKinesis dengan dua cara:

• DiDasborhalaman, pilihArus videotab diMetrik tingkat akun untuk Wilayah Saat IniBagian.• PilihPemantauantab di halaman detail aliran video.

Kinesis Video Streams menyediakan metrik berikut:

Metrik Deskripsi

ArchivedFragmentsConsumed.Media Jumlah poin kuota media fragmen yang dikonsumsi olehsemua API. Untuk penjelasan konsep poin kuota, lihatthe

152

Amazon Kinesis Video Streams Panduan DeveloperPemantauan dengan CloudWatch

Metrik Deskripsisection called “Fragmen-metadata dan kuota fragmen-media” (p. 171).

Unit: Count

ArchivedFragmentsConsumed.Metadata Jumlah fragmen metadata kuota poin yang dikonsumsioleh semua API. Untuk penjelasan konsep poin kuota,lihatthe section called “Fragmen-metadata dan kuotafragmen-media” (p. 171).

Unit: Count

PutMedia.Requests NomorPutMediaPermintaan API untuk aliran tertentu.

Unit: Count

PutMedia.IncomingBytes Jumlah byte yang diterima sebagai bagiandariPutMediauntuk stream.

Unit: Byte

PutMedia.IncomingFragments Jumlah fragmen lengkap yang diterima sebagai bagiandariPutMediauntuk stream.

Unit: Count

PutMedia.IncomingFrames Jumlah frame lengkap yang diterima sebagai bagiandariPutMediauntuk stream.

Unit: Count

PutMedia.ActiveConnections Jumlah total koneksi ke host layanan.

Unit: Count

PutMedia.ConnectionErrors Kesalahan saat membangunPutMediakoneksi untukstream.

Unit: Count

PutMedia.FragmentIngestionLatency Perbedaan waktu antara saat byte pertama dan terakhirdari sebuah fragmen diterima oleh Kinesis VideoStreams.

Unit: Milidetik

PutMedia.FragmentPersistLatency Waktu yang diambil dari saat data fragmen lengkapditerima dan diarsipkan.

Unit: Count

PutMedia.Latency Perbedaan waktu antara permintaan dan respons HTTPdari InletService saat membangun koneksi.

Unit: Count

153

Amazon Kinesis Video Streams Panduan DeveloperPemantauan dengan CloudWatch

Metrik Deskripsi

PutMedia.BufferingAckLatency Perbedaan waktu antara kapan byte pertama darifragmen baru diterima oleh Kinesis Video Streams danketika Buffering ACK dikirim untuk fragmen.

Unit: Milidetik

PutMedia.ReceivedAckLatency Perbedaan waktu antara kapan byte terakhir darifragmen baru diterima oleh Kinesis Video Streams danketika ACK Diterima dikirim untuk fragmen.

Unit: Milidetik

PutMedia.PersistedAckLatency Perbedaan waktu antara kapan byte terakhir darifragmen baru diterima oleh Kinesis Video Streams danketika ACK Persisted dikirim untuk fragmen.

Unit: Milidetik

PutMedia.ErrorAckCount Jumlah Kesalahan ACK yang dikirim saatmelakukanPutMediauntuk stream.

Unit: Count

PutMedia.Success 1 untuk setiap fragmen berhasil ditulis; 0 untuk setiapfragmen gagal. Nilai rata-rata metrik ini menunjukkanberapa banyak fragmen yang lengkap dan valid yangdikirim.

Unit: Count

GetMedia.Requests NomorGetMediaPermintaan API untuk aliran tertentu.

Unit: Count

GetMedia.OutgoingBytes Jumlah total byte yang dikirim dari layanan sebagaibagian dariGetMediaAPI untuk aliran tertentu.

Unit: Byte

GetMedia.OutgoingFragments Jumlah fragmen yang dikirim saatmelakukanGetMediauntuk stream.

Unit: Count

GetMedia.OutgoingFrames Jumlah frame yang dikirim selamaGetMediapada aliranyang diberikan.

Unit: Count

GetMedia.MillisBehindNow Perbedaan waktu antara stempel waktu server saat inidan stempel waktu server dari fragmen terakhir yangdikirim.

Unit: Milidetik

GetMedia.ConnectionErrors Jumlah koneksi yang tidak berhasil dibuat.

Unit: Count

154

Amazon Kinesis Video Streams Panduan DeveloperPemantauan dengan CloudWatch

Metrik Deskripsi

GetMedia.Success 1 untuk setiap fragmen berhasil dikirim; 0 untuksetiap kegagalan. Nilai rata-rata menunjukkan tingkatkeberhasilan.

Note

Kegagalan mencakup 400 (pengguna)kesalahan dan 500 (sistem) kesalahan. Untukinformasi selengkapnya tentang mengaktifkanringkasan permintaan dan tanggapan, termasukID permintaan AWS, lihatPermintaan/ResponRingkasan Logging.

Unit: Count

GetMediaForFragmentList.OutgoingBytesJumlah total byte yang dikirim dari layanan sebagaibagian dariGetMediaForFragmentListAPI untukaliran tertentu.

Unit: Byte

GetMediaForFragmentList.OutgoingFragmentsTotal jumlah fragmen yang dikirim dari layanan sebagaibagian dariGetMediaForFragmentListAPI untukaliran tertentu.

Unit: Count

GetMediaForFragmentList.OutgoingFramesJumlah total frame yang dikirim dari layanan sebagaibagian dariGetMediaForFragmentListAPI untukaliran tertentu.

Unit: Count

GetMediaForFragmentList.Requests NomorGetMediaForFragmentListPermintaan APIuntuk aliran tertentu.

Unit: Count

GetMediaForFragmentList.Success 1 untuk setiap fragmen berhasil dikirim; 0 untuksetiap kegagalan. Nilai rata-rata menunjukkan tingkatkeberhasilan.

Note

Kegagalan mencakup 400 (pengguna)kesalahan dan 500 (sistem) kesalahan. Untukinformasi selengkapnya tentang mengaktifkanringkasan permintaan dan tanggapan, termasukID permintaan AWS, lihatPermintaan/ResponRingkasan Logging.

Unit: Count

ListFragments.Latency LatensiListFragmentsAPI panggilan untuk nama aliranyang diberikan.

Unit: Milidetik

155

Amazon Kinesis Video Streams Panduan DeveloperPemantauan dengan CloudWatch

Metrik Deskripsi

ListFragments.Requests NomorListFragmentsPermintaan API untuk alirantertentu.

Unit: Count

ListFragments.Success 1 untuk setiap permintaan yang berhasil; 0 untuksetiap kegagalan. Nilai rata-rata menunjukkan tingkatkeberhasilan.

Note

Kegagalan mencakup 400 (pengguna)kesalahan dan 500 (sistem) kesalahan. Untukinformasi selengkapnya tentang mengaktifkanringkasan permintaan dan tanggapan, termasukID permintaan AWS, lihatPermintaan/ResponRingkasan Logging.

Unit: Count

GetHLSStreamingSessionURL.Latency LatensiGetHLSStreamingSessionURLAPI panggilanuntuk nama aliran yang diberikan.

Unit: Milidetik

GetHLSStreamingSessionURL.Requests NomorGetHLSStreamingSessionURLPermintaan APIuntuk aliran tertentu.

Unit: Count

GetHLSStreamingSessionURL.Success 1 untuk setiap permintaan yang berhasil; 0 untuksetiap kegagalan. Nilai rata-rata menunjukkan tingkatkeberhasilan.

Note

Kegagalan mencakup 400 (pengguna)kesalahan dan 500 (sistem) kesalahan. Untukinformasi selengkapnya tentang mengaktifkanringkasan permintaan dan tanggapan, termasukID permintaan AWS, lihatPermintaan/ResponRingkasan Logging.

Unit: Count

GetHLSMasterPlaylist.Latency LatensiGetHLSMasterPlaylistAPI panggilan untuknama aliran yang diberikan.

Unit: Milidetik

GetHLSMasterPlaylist.Requests NomorGetHLSMasterPlaylistPermintaan API untukaliran tertentu.

Unit: Count

156

Amazon Kinesis Video Streams Panduan DeveloperPemantauan dengan CloudWatch

Metrik Deskripsi

GetHLSMasterPlaylist.Success 1 untuk setiap permintaan yang berhasil; 0 untuksetiap kegagalan. Nilai rata-rata menunjukkan tingkatkeberhasilan.

Note

Kegagalan mencakup 400 (pengguna)kesalahan dan 500 (sistem) kesalahan. Untukinformasi selengkapnya tentang mengaktifkanringkasan permintaan dan tanggapan, termasukID permintaan AWS, lihatPermintaan/ResponRingkasan Logging.

Unit: Count

GetHLSMediaPlaylist.Latency LatensiGetHLSMediaPlaylistAPI panggilan untuknama aliran yang diberikan.

Unit: Milidetik

GetHLSMediaPlaylist.Requests NomorGetHLSMediaPlaylistPermintaan API untukaliran tertentu.

Unit: Count

GetHLSMediaPlaylist.Success 1 untuk setiap permintaan yang berhasil; 0 untuksetiap kegagalan. Nilai rata-rata menunjukkan tingkatkeberhasilan.

Note

Kegagalan mencakup 400 (pengguna)kesalahan dan 500 (sistem) kesalahan. Untukinformasi selengkapnya tentang mengaktifkanringkasan permintaan dan tanggapan, termasukID permintaan AWS, lihatPermintaan/ResponRingkasan Logging.

Unit: Count

GetMP4InitFragment.Latency LatensiGetMP4InitFragmentAPI panggilan untuknama aliran yang diberikan.

Unit: Milidetik

GetMP4InitFragment.Requests NomorGetMP4InitFragmentPermintaan API untukaliran tertentu.

Unit: Count

157

Amazon Kinesis Video Streams Panduan DeveloperPemantauan dengan CloudWatch

Metrik Deskripsi

GetMP4InitFragment.Success 1 untuk setiap permintaan yang berhasil; 0 untuksetiap kegagalan. Nilai rata-rata menunjukkan tingkatkeberhasilan.

Note

Kegagalan mencakup 400 (pengguna)kesalahan dan 500 (sistem) kesalahan. Untukinformasi selengkapnya tentang mengaktifkanringkasan permintaan dan tanggapan, termasukID permintaan AWS, lihatPermintaan/ResponRingkasan Logging.

Unit: Count

GetMP4MediaFragment.Latency LatensiGetMP4MediaFragmentAPI panggilan untuknama aliran yang diberikan.

Unit: Milidetik

GetMP4MediaFragment.Requests NomorGetMP4MediaFragmentPermintaan API untukaliran tertentu.

Unit: Count

GetMP4MediaFragment.Success 1 untuk setiap permintaan yang berhasil; 0 untuksetiap kegagalan. Nilai rata-rata menunjukkan tingkatkeberhasilan.

Note

Kegagalan mencakup 400 (pengguna)kesalahan dan 500 (sistem) kesalahan. Untukinformasi selengkapnya tentang mengaktifkanringkasan permintaan dan tanggapan, termasukID permintaan AWS, lihatPermintaan/ResponRingkasan Logging.

Unit: Count

GetMP4MediaFragment.OutgoingBytes Jumlah total byte yang dikirim dari layanan sebagaibagian dariGetMP4MediaFragmentAPI untuk alirantertentu.

Unit: Byte

GetTSFragment.Latency LatensiGetTSFragmentAPI panggilan untuk nama aliranyang diberikan.

Unit: Milidetik

GetTSFragment.Requests NomorGetTSFragmentPermintaan API untuk alirantertentu.

Unit: Count

158

Amazon Kinesis Video Streams Panduan DeveloperPemantauan dengan CloudWatch

Metrik Deskripsi

GetTSFragment.Success 1 untuk setiap permintaan yang berhasil; 0 untuksetiap kegagalan. Nilai rata-rata menunjukkan tingkatkeberhasilan.

Note

Kegagalan mencakup 400 (pengguna)kesalahan dan 500 (sistem) kesalahan. Untukinformasi selengkapnya tentang mengaktifkanringkasan permintaan dan tanggapan, termasukID permintaan AWS, lihatPermintaan/ResponRingkasan Logging.

Unit: Count

GetTSFragment.OutgoingBytes Jumlah total byte yang dikirim dari layanan sebagaibagian dariGetTSFragmentAPI untuk aliran tertentu.

Unit: Byte

GetDASHStreamingSessionURL.Latency LatensiGetDASHStreamingSessionURLAPI panggilanuntuk nama aliran yang diberikan.

Unit: Milidetik

GetDASHStreamingSessionURL.RequestsNomorGetDASHStreamingSessionURLPermintaanAPI untuk aliran tertentu.

Unit: Count

GetDASHStreamingSessionURL.Success 1 untuk setiap permintaan yang berhasil; 0 untuksetiap kegagalan. Nilai rata-rata menunjukkan tingkatkeberhasilan.

Note

Kegagalan mencakup 400 (pengguna)kesalahan dan 500 (sistem) kesalahan. Untukinformasi selengkapnya tentang mengaktifkanringkasan permintaan dan tanggapan, termasukID permintaan AWS, lihatPermintaan/ResponRingkasan Logging.

Unit: Count

GetDASHManifest.Latency LatensiGetDASHManifestAPI panggilan untuk namaaliran yang diberikan.

Unit: Milidetik

GetDASHManifest.Requests NomorGetDASHManifestPermintaan API untuk alirantertentu.

Unit: Count

159

Amazon Kinesis Video Streams Panduan DeveloperCloudWatch Panduan Metrik

Metrik Deskripsi

GetDASHManifest.Success 1 untuk setiap permintaan yang berhasil; 0 untuksetiap kegagalan. Nilai rata-rata menunjukkan tingkatkeberhasilan.

Note

Kegagalan mencakup 400 (pengguna)kesalahan dan 500 (sistem) kesalahan. Untukinformasi selengkapnya tentang mengaktifkanringkasan permintaan dan tanggapan, termasukID permintaan AWS, lihatPermintaan/ResponRingkasan Logging.

Unit: Count

GetClip.Latency Latensi GetClip API panggilan untuk nama aliran videoyang diberikan.

Unit: Milidetik

GetClip.Requests Nomor GetClip Permintaan API untuk aliran videotertentu.

Unit: Count

GetClip.Success 1 untuk setiap permintaan yang berhasil; 0 untuksetiap kegagalan. Nilai rata-rata menunjukkan tingkatkeberhasilan.

Note

Kegagalan mencakup 400 (pengguna)kesalahan dan 500 (sistem) kesalahan. Untukinformasi selengkapnya tentang mengaktifkanringkasan permintaan dan tanggapan, termasukID permintaan AWS, lihatPermintaan/ResponRingkasan Logging.

Unit: Count

GetClip.OutgoingBytes Jumlah total byte yang dikirim dari layanan sebagaibagian dari GetClip API untuk aliran video tertentu.

Unit: Byte

CloudWatch Panduan MetrikCloudWatch metrik dapat berguna untuk menemukan jawaban atas pertanyaan-pertanyaan berikut:

Topik• Apakah data mencapai layanan Kinesis Video Streams? (p. 161)• Mengapa data tidak berhasil dicerna oleh layanan Kinesis Video Streams? (p. 161)• Mengapa data tidak dapat dibaca dari layanan Kinesis Video Streams dengan kecepatan yang sama

seperti yang dikirim dari produser? (p. 161)• Mengapa tidak ada video di konsol, atau mengapa video diputar dengan penundaan? (p. 162)

160

Amazon Kinesis Video Streams Panduan DeveloperCloudWatch Panduan Metrik

• Apa keterlambatan dalam membaca data real-time, dan mengapa klien tertinggal di belakang kepalasungai? (p. 162)

• Apakah klien membaca data dari aliran video Kinesis, dan pada tingkat berapa? (p. 162)• Mengapa klien tidak dapat membaca data dari aliran video Kinesis? (p. 163)

Apakah data mencapai layanan Kinesis Video Streams?Metrik:

• PutMedia.IncomingBytes

• PutMedia.IncomingFragments

• PutMedia.IncomingFrames

Item tindakan:

• Jika ada penurunan metrik ini, periksa apakah aplikasi Anda masih mengirim data ke layanan.• Periksa bandwidth jaringan. Jika bandwidth jaringan Anda tidak mencukupi, itu bisa memperlambat

tingkat layanan menerima data.

Mengapa data tidak berhasil dicerna oleh layanan Kinesis VideoStreams?Metrik:

• PutMedia.Requests

• PutMedia.ConnectionErrors

• PutMedia.Success

• PutMedia.ErrorAckCount

Item tindakan:

• Jika ada peningkatanPutMedia.ConnectionErrors, lihat kode respon/kesalahan HTTP yang diterimaoleh klien produser untuk melihat kesalahan apa yang terjadi saat membuat koneksi.

• Jika ada penurunanPutMedia.Successatau peningkatanPutMedia.ErrorAckCount, lihat kodekesalahan ack dalam tanggapan ack yang dikirim oleh layanan untuk melihat mengapa konsumsi datagagal. Untuk informasi selengkapnya, lihatAckErrorCode.Values.

Mengapa data tidak dapat dibaca dari layanan Kinesis VideoStreams dengan kecepatan yang sama seperti yang dikirim dariproduser?Metrik:

• PutMedia.FragmentIngestionLatency

• PutMedia.IncomingBytes

Item tindakan:

161

Amazon Kinesis Video Streams Panduan DeveloperCloudWatch Panduan Metrik

• Jika ada penurunan dalam metrik ini, periksa bandwidth jaringan koneksi Anda. Koneksi bandwidthrendah dapat menyebabkan data mencapai layanan pada tingkat yang lebih rendah.

Mengapa tidak ada video di konsol, atau mengapa video diputardengan penundaan?Metrik:

• PutMedia.FragmentIngestionLatency

• PutMedia.FragmentPersistLatency

• PutMedia.Success

• ListFragments.Latency

• PutMedia.IncomingFragments

Item tindakan:

• Jika ada peningkatanPutMedia.FragmentIngestionLatencyatausetetesPutMedia.IncomingFragments, periksa bandwidth jaringan dan apakah data masih dikirim.

• Jika ada penurunanPutMedia.Success, periksa kode kesalahan ack. Untuk informasi selengkapnya,lihatAckErrorCode.Values.

• Jika ada peningkatanPutMedia.FragmentPersistLatencyatauListFragments.Latency, Andakemungkinan besar mengalami masalah layanan. Jika kondisi berlanjut untuk jangka waktu yang lama,tanyakan kepada kontak layanan pelanggan Anda untuk melihat apakah ada masalah dengan layananAnda.

Apa keterlambatan dalam membaca data real-time, dan mengapaklien tertinggal di belakang kepala sungai?Metrik:

• GetMedia.MillisBehindNow

• GetMedia.ConnectionErrors

• GetMedia.Success

Item tindakan:

• Jika ada peningkatanGetMedia.ConnectionErrors, maka konsumen mungkin tertinggal dalammembaca sungai, karena sering mencoba untuk terhubung kembali ke sungai. Lihatlah kode respon/error HTTP yang dikembalikan untukGetMediarequest

• Jika ada penurunanGetMedia.Success, maka kemungkinan karena layanan tidak dapat mengirim datake konsumen, yang akan mengakibatkan koneksi terputus, dan menghubungkan kembali dari konsumen,yang akan mengakibatkan konsumen tertinggal di belakang kepala sungai.

• Jika ada peningkatanGetMedia.MillisBehindNow, lihat batas bandwidth Anda untuk melihat apakahAnda menerima data pada tingkat yang lebih lambat karena bandwidth yang lebih rendah.

Apakah klien membaca data dari aliran video Kinesis, dan padatingkat berapa?Metrik:

162

Amazon Kinesis Video Streams Panduan DeveloperMencatat Panggilan API dengan CloudTrail

• GetMedia.OutgoingBytes

• GetMedia.OutgoingFragments

• GetMedia.OutgoingFrames

• GetMediaForFragmentList.OutgoingBytes

• GetMediaForFragmentList.OutgoingFragments

• GetMediaForFragmentList.OutgoingFrames

Item tindakan:

• Metrik ini menunjukkan tingkat data real-time dan arsip yang sedang dibaca.

Mengapa klien tidak dapat membaca data dari aliran videoKinesis?Metrik:

• GetMedia.ConnectionErrors

• GetMedia.Success

• GetMediaForFragmentList.Success

• PutMedia.IncomingBytes

Item tindakan:

• Jika ada peningkatanGetMedia.ConnectionErrors, lihat kode respon/error HTTP yang dikembalikanolehGetMediarequest Untuk informasi selengkapnya, lihatAckErrorCode.Values.

• Jika Anda mencoba membaca data terbaru/langsung, periksaPutMedia.IncomingBytesuntuk melihatapakah ada data yang masuk ke aliran untuk layanan untuk mengirim ke konsumen.

• Jika ada penurunanGetMedia.SuccessatauGetMediaForFragmentList.Success, kemungkinankarena layanan tidak dapat mengirim data ke konsumen. Jika kondisi berlanjut untuk jangka waktu yanglama, tanyakan kepada kontak layanan pelanggan Anda untuk melihat apakah ada masalah denganlayanan Anda.

Logging Kinesis Video Streams API PanggilandenganAWS CloudTrail

Arus Video Streesis Video Streesis AmazonAWS CloudTrail, layanan yang menyediakan catatan tindakanyang diambil oleh pengguna, peran, atauAWSlayanan di Amazon Kinesis Video Streams. CloudTrailmenangkap semua panggilan API untuk Amazon Kinesis Video Streams sebagai kejadian. Panggilanyang direkam mencakup panggilan dari konsol Amazon Kinesis Video Streams dan panggilan kodeke operasi API Amazon Kinesis Video Streams. Jika Anda membuat jejak, Anda dapat mengaktifkanpengiriman berkelanjutan CloudTrail peristiwa ke bucket Amazon S3, termasuk peristiwa untuk AmazonKinesis Video Streams. Jika tidak mengonfigurasi jejak, Anda masih dapat melihat kejadian terbaru diCloudTrail konsolRiwayat peristiwa. Menggunakan informasi yang dikumpulkan oleh CloudTrail, Andadapat menentukan permintaan yang dibuat ke Amazon Kinesis Video Streams, alamat IP asal permintaantersebut dibuat, dan detail tambahan.

Untuk mempelajari lebih lanjut tentang CloudTrail, termasuk cara mengonfigurasi dan mengaktifkannya,lihatAWS CloudTrailPanduan Pengguna.

163

Amazon Kinesis Video Streams Panduan DeveloperArus Kinesis Video Streams CloudTrail

Arus Kinesis Video Streams CloudTrailCloudTrail diaktifkan padaAWSakun saat Anda membuat akun. Saat aktivitas peristiwa yang didukungterjadi di Amazon Kinesis Video Streams, aktivitas tersebut dicatat di CloudTrail acara bersama denganlainnyaAWSPeristiwa layanan diRiwayat peristiwa. Anda dapat melihat, mencari, dan mengunduh peristiwaterbaru di akun AWS Anda. Untuk informasi selengkapnya, lihatMelihat Peristiwa dengan CloudTrailRiwayat Peristiwa.

Untuk catatan peristiwa yang sedang berlangsung diAWSakun, termasuk peristiwa untuk Amazon KinesisVideo Streams, membuat jejak. SEBUAHjejakmenyalakan CloudTrail untuk mengirimkan file log ke bucketAmazon S3. Secara default, ketika Anda membuat jejak di konsol tersebut, jejak diterapkan ke semuaWilayah AWS. Jejak mencatat kejadian dari semua Wilayah di partisi AWS dan mengirimkan berkas log kebucket Amazon S3 yang Anda tentukan. Selain itu, Anda dapat mengonfigurasi lainnyaAWSlayanan untukmenganalisis lebih lanjut dan menindaklanjuti data kejadian yang dikumpulkan di CloudTrail log. Untukinformasi selengkapnya, lihat yang berikut:

• Ikhtisar untuk Membuat Jejak• CloudTrail Layanan dan Integrasi yang Didukung• Mengonfigurasi Notifikasi Amazon SNS untuk CloudTrail• Menerima CloudTrail Mencatat Berkas dari Beberapa WilayahdanMenerima CloudTrail Mencatat Berkas

dari Beberapa Akun

Amazon Kinesis Video Streams mendukung pencatatan tindakan berikut sebagai kejadian di CloudTrailberkas log:

• CreateStream• DeleteStream• DescribeStream• GetDataEndpoint• ListStreams• ListTagsForStream• TagStream• UntagStream• UpdateDataRetention• UpdateStream

Setiap entri peristiwa atau log berisi informasi tentang siapa yang membuat permintaan tersebut. Informasiidentitas membantu Anda menentukan hal berikut:

• Bahwa permintaan dibuat dengan kredensial pengguna root atau pengguna AWS Identity and AccessManagement (IAM).

• Bahwa permintaan tersebut dibuat dengan kredensial keamanan sementara untuk peran atau penggunagabungan.

• Bahwa permintaan dibuat oleh layanan AWS lain.

Untuk informasi lain, lihat Elemen userIdentity CloudTrail.

164

Amazon Kinesis Video Streams Panduan DeveloperContoh: Entri Berkas Berkas Amazon Kinesis Video Streams

Contoh: Entri Berkas Berkas Amazon Kinesis VideoStreamsJejak adalah konfigurasi yang memungkinkan pengiriman peristiwa sebagai berkas log ke bucket AmazonS3 yang Anda tentukan. CloudTrail berkas log berisi satu atau lebih entri log. Peristuwa mewakili satupermintaan dari sumber apa pun dan mencakup informasi tentang tindakan yang diminta, tanggal danwaktu tindakan, parameter permintaan, dan sebagainya. CloudTrail Berkas log bukan merupakan jejaktumpukan terurut dari panggilan API publik, sehingga berkas tersebut tidak muncul dalam urutan tertentu.

Contoh berikut menunjukkan CloudTrail entri log yang menunjukkanCreateStreamtindakan.

{ "Records": [ { "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2018-05-25T00:16:31Z", "eventSource": " kinesisvideo.amazonaws.com", "eventName": "CreateStream", "awsRegion": "us-east-1", "sourceIPAddress": "127.0.0.1", "userAgent": "aws-sdk-java/unknown-version Linux/x.xx", "requestParameters": { "streamName": "VideoStream", "dataRetentionInHours": 2, "mediaType": "mediaType", "kmsKeyId": "arn:aws:kms::us-east-1:123456789012:alias", "deviceName": "my-device" }, "responseElements": { "streamARN":arn:aws:kinesisvideo:us-east-1:123456789012:stream/VideoStream/12345" }, "requestID": "db6c59f8-c757-11e3-bc3b-57923b443c1c", "eventID": "b7acfcd0-6ca9-4ee1-a3d7-c4e8d420d99b" }, { "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2018-05-25:17:06Z", "eventSource": " kinesisvideo.amazonaws.com", "eventName": "DeleteStream", "awsRegion": "us-east-1", "sourceIPAddress": "127.0.0.1", "userAgent": "aws-sdk-java/unknown-version Linux/x.xx", "requestParameters": { "streamARN": "arn:aws:kinesisvideo:us-east-1:012345678910:stream/VideoStream/12345", "currentVersion": "keqrjeqkj9"

165

Amazon Kinesis Video Streams Panduan DeveloperContoh: Entri Berkas Berkas Amazon Kinesis Video Streams

}, "responseElements": null, "requestID": "f0944d86-c757-11e3-b4ae-25654b1d3136", "eventID": "0b2f1396-88af-4561-b16f-398f8eaea596" }, { "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2014-04-19T00:15:02Z", "eventSource": " kinesisvideo.amazonaws.com", "eventName": "DescribeStream", "awsRegion": "us-east-1", "sourceIPAddress": "127.0.0.1", "userAgent": "aws-sdk-java/unknown-version Linux/x.xx", "requestParameters": { "streamName": "VideoStream" }, "responseElements": null, "requestID": "a68541ca-c757-11e3-901b-cbcfe5b3677a", "eventID": "22a5fb8f-4e61-4bee-a8ad-3b72046b4c4d" }, { "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2014-04-19T00:15:03Z", "eventSource": "kinesisvideo.amazonaws.com", "eventName": "GetDataEndpoint", "awsRegion": "us-east-1", "sourceIPAddress": "127.0.0.1", "userAgent": "aws-sdk-java/unknown-version Linux/x.xx", "requestParameters": { "streamName": "VideoStream", "aPIName": "LIST_FRAGMENTS"" }, "responseElements": null, "requestID": "a6e6e9cd-c757-11e3-901b-cbcfe5b3677a", "eventID": "dcd2126f-c8d2-4186-b32a-192dd48d7e33" }, { "eventVersion": "1.05", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::123456789012:user/Alice", "accountId": "123456789012", "accessKeyId": "EXAMPLE_KEY_ID", "userName": "Alice" }, "eventTime": "2018-05-25T00:16:56Z", "eventSource": "kinesisvideo.amazonaws.com", "eventName": "ListStreams",

166

Amazon Kinesis Video Streams Panduan DeveloperContoh: Entri Berkas Berkas Amazon Kinesis Video Streams

"awsRegion": "us-east-1", "sourceIPAddress": "127.0.0.1", "userAgent": "aws-sdk-java/unknown-version Linux/x.xx", "requestParameters": { "maxResults": 100, "streamNameCondition": {"comparisonValue":"MyVideoStream" comparisonOperator":"BEGINS_WITH"}} }, "responseElements": null, "requestID": "e9f9c8eb-c757-11e3-bf1d-6948db3cd570", "eventID": "77cf0d06-ce90-42da-9576-71986fec411f" } ]}

167

Amazon Kinesis Video Streams Panduan DeveloperBatas API kontrol-pesawat

Batas Arus Kinesis Video StreamsKinesis Video Streams memiliki batas sebagai berikut:

Batas di bawah ini adalah soft [s], yang dapat ditingkatkan dengan mengirimkan tiket dukungan, atau keras[h], yang tidak dapat ditingkatkan.

Batas API kontrol-pesawatBagian berikut menjelaskan batas untuk Control Plane API. TPS adalah singkatantransaksi per detik.

Ketika batas permintaan tingkat akun atau tingkat sumber daya tercapai,aClientLimitExceededExceptiondilemparkan.

Batas API Bidang Kendali

API Batasan Akun:Permintaan

Batasan Akun:Pengaliran

Batas tingkataliran

Pengecualian dan catatan yangrelevan

CreateStream 50 TPS 10000 aliranper akun diwilayah ASTimur (VirginiaN.) dan ASBarat (Oregon).5000 aliranper akun [s] disemua wilayahyang didukunglainnya.

Note

Batasinidapatditingkatkanhingga100.000(ataulebih)streamperakun[s].MasukkeAWSManagementConsolepadahttps://console.aws.amazon.com/

  Perangkat, CLI, akses SDK-driven, dan konsol semua dapatmemanggil API ini. Hanya satupanggilan API berhasil jikastream belum ada.

168

Amazon Kinesis Video Streams Panduan DeveloperBatas API media dan arsip media

API Batasan Akun:Permintaan

Batasan Akun:Pengaliran

Batas tingkataliran

Pengecualian dan catatan yangrelevan

danmenyerahkanKasuspeningkatanbataslayananuntukKinesisVideoStreamsuntukmemintapeningkatanbatasini.

DescribeStream 300 TPS [h] N/A 5 TPS [h]  

UpdateStream 50 TPS [h] N/A 5 TPS [h]  

ListStreams 50 TPS [h] N/A    

DeleteStream 50 TPS [h] N/A 5 TPS [h]  

GetDataEndPoint 300 TPS [h] N/A 5 TPS [h] Dipanggil setiap 45 menituntuk menyegarkan tokenstreaming untuk sebagianbesarPutMedia/GetMediakasus penggunaan.Caching data endpoint aman jikaaplikasi memuat ulang merekapada kegagalan.

UpdateDataRetention50 TPS [h] N/A 5 TPS [h]  

TagStream 50 TPS [h] N/A 5 TPS [h]  

UntagStream 50 TPS [h] N/A 5 TPS [h]  

ListTagsForStream50 TPS [h] N/A 5 TPS [h]  

DescriptionImageGenerationConfiguration50 TPS [h] N/A 5 TPS [h]  

UpdateImageGenerationConfiguration50 TPS [h] N/A 5 TPS [h]  

DescriptionNotificationConfiguration50 TPS [h] N/A 5 TPS [h]  

UpdateNotificationConfiguration50 TPS [h] N/A 5 TPS [h]  

Batas API media dan arsip mediaBagian berikut menjelaskan batasan untuk Media dan API Media Arsip.

Ketika batas permintaan tingkat akun atau tingkat sumber daya tercapai,aClientLimitExceededExceptiondilemparkan.

Ketika batas tingkat koneksi tercapai, aConnectionLimitExceededExceptiondilemparkan.

169

Amazon Kinesis Video Streams Panduan DeveloperBatas API media dan arsip media

Kesalahan atau acks berikut dilemparkan ketika batas tingkat fragmen tercapai:

• SEBUAHMIN_FRAGMENT_DURATION_REACHEDack dikembalikan untuk fragmen di bawah durasiminimum.

• SEBUAHMAX_FRAGMENT_DURATION_REACHEDack dikembalikan untuk fragmen di atas durasimaksimum.

• SEBUAHMAX_FRAGMENT_SIZEack dikembalikan untuk fragmen di atas ukuran data maksimum.• SEBUAHFragmentLimitExceededpengecualian dilemparkan jika batas fragmen tercapai

dalamGetMediaForFragmentListoperasi.

Batas API Bidang Data

API Batas tingkataliran

Batas tingkatkoneksi

Batasbandwidth

Batas tingkatfragmen

Pengecualian dan catatanyang relevan

PutMedia 5 TPS [h] 1 [s] 12,5 MB/detik, atau100 Mbps [s]

• Durasifragmenminimum:1 detik [h]

• Durasifragmenmaksimum:20 detik[h]

• Ukuranfragmenmaksimum:50 MB [h]

• Jumlahmaksimumtrek: 3 [s]

KhasPutMediapermintaanberisi data selama beberapadetik, menghasilkan TPSyang lebih rendah per aliran.Dalam kasus beberapakoneksi bersamaan yangmelebihi batas, koneksiterakhir diterima.

GetHLSStreamingSessionURL25 TPS [h] N/A N/A N/A  

GetDASHStreamingSessionURL25 TPS [h] N/A N/A N/A  

GetMedia 5 TPS [h] 3 [s] 25 MB/satau 200Mbps [s]

N/A Hanya tiga klien secarabersamaan dapat menerimakonten dari media streamsetiap saat. Koneksi klienlebih lanjut ditolak. Klienmengkonsumsi unik tidakperlu lebih dari 2 atau 3TPS karena setelah koneksidibuat, kami mengantisipasibahwa aplikasi akanmembaca terus menerus.

Jika fragmen khas sekitar5 MB, batas ini berarti ~ 75MB/detik per aliran videoKinesis. Aliran semacam ituakan memiliki bitrate keluar2x bitrate masuk maksimumaliran.

170

Amazon Kinesis Video Streams Panduan DeveloperFragmen-metadata dan kuota fragmen-media

API Batas tingkataliran

Batas tingkatkoneksi

Batasbandwidth

Batas tingkatfragmen

Pengecualian dan catatanyang relevan

GetMediaForFragmentListN/A 5 [s] 25 MB/satau 200Mbps [s]

Jumlahmaksimumfragmen:1000 [h]

Lima aplikasimengkonsumsi berbasisfragmen secara bersamaandapat mendapatkan media.Koneksi lebih lanjut ditolak.

GetClip N/A N/A Batasukuran 100MB [h]

Jumlahfragmenmaksimum:200 [h]

 

getImages N/A N/A 100 MB [h] N/A Jumlah maksimum Gambarper permintaan adalah 100[h]

Batas API Protokol Pemutaran Video

API Batas tingkat sesi Batas tingkat fragmen

GetDASHManifestPlaylist 5 TPS [h] Jumlah fragmen maksimum perdaftar putar: 5000 [h]

GetHLSMasterPlaylist 5 TPS [h] N/A

Daftar GetHLSMediaPlaylist 5 TPS [h] Jumlah fragmen maksimum perdaftar putar: 5000 [h]

GetMP4initFragment 5 TPS [h] N/A

GetMP4MediaFragment 20 TPS [h] N/A

GettsFragment 20 TPS [h] N/A

Fragmen-metadata dan kuota fragmen-mediaArus Video KinesisAPI untuk mengakses media yang diarsipkanthrottled berdasarkan jumlah fragmenyang diminta daripada jumlah panggilan API. API dibatasi oleh jumlah metadata fragmen dan jumlahmedia fragmen yang diminta. Metadata fragmen dan kuota media fragmen diterapkan per aliran. Dengankata lain, permintaan untuk metadata fragmen atau media dalam satu aliran tidak berlaku untuk kuotastream lain. Namun, dalam aliran tertentu, setiap kuota dibagi di beberapa API. Ini berarti bahwa,untuk aliran tertentu, meminta fragmen di seluruh API yang berbeda mengkonsumsi dari kuota yangsama. Ketika salah satu metadata fragmen atau kuota media fragmen untuk stream terlampaui, APImengembalikanClientLimitExceededException. Tabel berikut menunjukkan cara penggunaan APIdari masing-masing dua jenis kuota. Untuk kolom kedua dalam tabel ini, asumsikan bahwa jika streammemiliki kuota N, itu berarti API memiliki N poin untuk mengkonsumsi dari jenis kuota untuk aliran itu.ParameterGetClipAPI muncul di kedua tabel.

Konsumsi kuota metadata fragmen

API Jumlah titik kuota yang dikonsumsi per permintaan

ListFragments Nilai dariMaxResultsparameter

171

Amazon Kinesis Video Streams Panduan DeveloperFragmen-metadata dan kuota fragmen-media

API Jumlah titik kuota yang dikonsumsi per permintaan

GetClip Jumlah fragmen dalam klip yang dihasilkan

GetHLSMediaPlaylist NilaidariMaxMediaPlaylistFragmentResultsparameter

GetDASHManifest NilaidariMaxManifestFragmentResultsparameter

GetImages Nilai 400 + Max Jumlah Gambar yang diminta

Konsumsi kuota media fragmen

API Jumlah titik kuota yang dikonsumsi per permintaan

GetMediaForFragmentList Jumlah fragmen dalam parameter Fragmen

GetClip Jumlah fragmen dalam klip yang dihasilkan

GetMP4MediaFragment 1

GetTSFragment 1

GetImages Jumlah Gambar Maks Diminta

Misalnya, dengan kuota 500 media fragmen per detik, pola panggilan berikut untuk stream tertentudidukung:

• 5 permintaan per detik untukGetClipdengan 100 fragmen di setiap klip.• 100 permintaan per detik untukGetClipdengan 5 fragmen di setiap klip.• 2 permintaan per detik untukGetClipdengan 100 fragmen di setiap klip dan 3 permintaan per detik

untukGetMediaForFragmentListdi setiap klip.• 400 permintaan per detik untukGetMP4MediaFragmentdan 100 permintaan per detik

untukGetTSFragment.

Kuota ini memiliki implikasi penting mengenai jumlah sesi HLS dan MPEG-DASH yang dapat didukungper stream. Tidak ada batasan jumlah sesi HLS dan DASH yang dapat digunakan oleh pemutar mediapada waktu tertentu. Oleh karena itu, penting bahwa aplikasi pemutaran tidak mengizinkan terlalu banyaksesi untuk digunakan secara bersamaan. Berikut ini adalah dua contoh cara menentukan jumlah sesipemutaran bersamaan yang dapat didukung:

Contoh 1: Streaming Langsung

Dalam skenario streaming langsung dengan HLS dengan fragmen durasi 1 detik, trek audio dan video,danMaxMediaPlaylistFragmentResultsdiatur ke 5, pemutar media biasanya membuat 2 panggilanke GetHLSMediaPlaylist per detik: satu panggilan untuk metadata video terbaru dan lainnya untukmetadata audio yang sesuai. Kedua panggilan mengkonsumsi 5 fragmen metadata kuota poin masing-masing. Ini juga membuat 2 panggilan ke GetMP4MediaFragment per detik: satu panggilan untuk videoterbaru dan satu lagi untuk audio yang sesuai. Kedua panggilan ini mengkonsumsi total 2 titik kuota mediafragmen. Dalam skenario ini, hingga 125 sesi pemutaran bersamaan dapat didukung. Dengan 250 sesi,skenario ini menghabiskan 2.500 titik kuota metadata fragmen per detik (jauh di bawah kuota 10.000) dan500 titik kuota media fragmen per detik.

Contoh 2: Pemutaran Sesuai Permintaan

172

Amazon Kinesis Video Streams Panduan DeveloperFragmen-metadata dan kuota fragmen-media

Dalam skenario pemutaran sesuai permintaan dari peristiwa masa lalu dengan MPEG-DASH, trekaudio dan video danMaxManifestFragmentResultsdiatur ke 1.000, media player biasanyapanggilanGetDASHManifestsekali di awal sesi (mengkonsumsi 1.000 fragmen metadata titik kuota) danpanggilanGetMP4MediaFragmentdengan kecepatan hingga 5 kali per detik (mengkonsumsi 5 titik kuotamedia fragmen) sampai semua fragmen dimuat. Dalam skenario ini, hingga 10 sesi baru dapat dimulaiper detik (tepat pada 10.000 fragmen metadata per detik kuota), dan hingga 100 sesi dapat secara aktifmemuat media fragmen dengan kecepatan 5 per detik (tepat di 500 media fragmen per kuota detik).

Anda dapatmenggunakanArchivedFragmentsConsumed.MetadatadanArchivedFragmentsConsumed.Mediauntukmemantau konsumsi metadata fragmen dan fragmen titik kuota media, masing-masing. Untuk informasitentang pemantauan, lihatMemantau (p. 152).

173

Amazon Kinesis Video Streams Panduan DeveloperMemecahkan Masalah Umum

Memecahkan Kinesis Video StreamsGunakan informasi berikut untuk memecahkan masalah umum yang dihadapi dengan Amazon KinesisVideo Streams.

Topik• Memecahkan Masalah Umum (p. 174)• Memecahkan Masalah API (p. 174)• Memecahkan Masalah HLS (p. 176)• Memecahkan Masalah Java (p. 177)• Pemecahan Masalah Pustaka Produser (p. 178)• Pemecahan masalah Stream Parser Library Masalah (p. 183)

Memecahkan Masalah UmumBagian ini menjelaskan masalah umum yang mungkin Anda hadapi saat bekerja dengan Kinesis VideoStreams.

Masalah• Latency terlalu tinggi (p. 174)

Latency terlalu tinggiLatensi mungkin disebabkan oleh durasi fragmen yang dikirim ke layanan Kinesis Video Streams. Salahsatu cara untuk mengurangi latensi antara produsen dan layanan adalah dengan mengkonfigurasi pipamedia untuk menghasilkan durasi fragmen yang lebih pendek.

Untuk mengurangi jumlah frame yang dikirim di setiap fragmen, dan dengan demikian mengurangi jumlahwaktu untuk setiap fragmen, kurangi nilai berikutkinesis_video_gstreamer_sample_app.cpp:

g_object_set(G_OBJECT (data.encoder), "bframes", 0, "key-int-max", 45, "bitrate", 512, NULL);

Note

Latensi lebih tinggi di browser Mozilla Firefox karena implementasi internal rendering video.

Memecahkan Masalah APIBagian ini menjelaskan masalah API yang mungkin Anda hadapi saat bekerja dengan Kinesis VideoStreams.

Masalah• Kesalahan: “Pilihan tidak dikenal” (p. 175)• Kesalahan: “Tidak dapat menentukan nama layanan/operasi yang akan diotorisasi” (p. 175)

174

Amazon Kinesis Video Streams Panduan DeveloperKesalahan: “Pilihan tidak dikenal”

• Kesalahan: “Gagal menempatkan bingkai di sungai” (p. 175)• Kesalahan: “Layanan ditutup koneksi sebelum finalAckEventditerima” (p. 175)• Kesalahan: “STATUS_STORE_OUT_OF_MEMORY” (p. 176)

Kesalahan: “Pilihan tidak dikenal”GetMediadanGetMediaForFragmentListbisa gagal dengan galat berikut:

Unknown options: <filename>.mkv

Kesalahan ini terjadi jika Anda mengkonfigurasiAWS CLIdenganoutputjenisjson. MengkonfigurasiulangAWS CLIdengan tipe output default (none). Untuk informasi tentang mengkonfigurasiAWS CLI,lihatmengkonfigurasidiAWS CLIReferensi Perintah.

Kesalahan: “Tidak dapat menentukan nama layanan/operasi yang akan diotorisasi”GetMediabisa gagal dengan galat berikut:

Unable to determine service/operation name to be authorized

Kesalahan ini mungkin terjadi jika titik akhir tidak ditentukan dengan benar. Saat Anda mendapatkan titikakhir, pastikan untuk menyertakan parameter berikut diGetDataEndpointpanggilan, tergantung pada APIyang akan dipanggil:

--api-name GET_MEDIA--api-name PUT_MEDIA--api-name GET_MEDIA_FOR_FRAGMENT_LIST--api-name LIST_FRAGMENTS

Kesalahan: “Gagal menempatkan bingkai di sungai”PutMediabisa gagal dengan galat berikut:

Failed to put a frame in the stream

Kesalahan ini mungkin terjadi jika konektivitas atau izin tidak tersedia untuk layanan. Jalankan hal berikutdiAWS CLI, dan memverifikasi bahwa informasi aliran dapat diambil:

aws kinesisvideo describe-stream --stream-name StreamName --endpoint https://ServiceEndpoint.kinesisvideo.region.amazonaws.com

Jika panggilan gagal, lihatMemecahkan Masalah Kesalahan AWS CLIuntuk informasi lebih lanjut.

Kesalahan: “Layanan ditutup koneksi sebelumfinalAckEventditerima”PutMediabisa gagal dengan galat berikut:

175

Amazon Kinesis Video Streams Panduan DeveloperKesalahan: “STATUS_STORE_OUT_OF_MEMORY”

com.amazonaws.SdkClientException: Service closed connection before final AckEvent was received

Kesalahan ini mungkin terjadi jikaPushbackInputStreamdiimplementasikan dengan tidak benar.Pastikan bahwaunread()diimplementasikan dengan benar.

Kesalahan: “STATUS_STORE_OUT_OF_MEMORY”PutMediabisa gagal dengan galat berikut:

The content store is out of memory.

Kesalahan ini terjadi ketika toko konten tidak dialokasikan dengan ukuran yang cukup. Untuk meningkatkanukuran toko konten, tingkatkan nilaiStorageInfo.storageSize. Untuk informasi selengkapnya, lihatStorageInfo (p. 106).

Memecahkan Masalah HLSBagian ini menjelaskan masalah yang mungkin Anda hadapi saat menggunakan HTTP Live Streaming(HLS) dengan Kinesis Video Streams.

Masalah• Mengambil URL sesi streaming HLS berhasil, tetapi pemutaran gagal dalam pemutar video (p. 176)• Latensi terlalu tinggi antara produser dan pemain (p. 177)

Mengambil URL sesi streaming HLS berhasil, tetapipemutaran gagal dalam pemutar videoSituasi ini terjadi ketika Anda berhasil mengambil URL sesi streaming HLSmenggunakanGetHLSStreamingSessionURL, tetapi video gagal untuk memutar kembali ketika URLdisediakan untuk pemutar video.

Untuk memecahkan masalah ini, coba hal berikut:

• Tentukan apakah aliran video diputar kembali di konsol Kinesis Video Streams. Pertimbangkankesalahan yang ditunjukkan oleh konsol.

• Jika durasi fragmen kurang dari satu detik, tingkatkan ke satu detik. Jika durasi fragmen terlalu pendek,layanan mungkin throttle pemain karena membuat permintaan untuk fragmen video terlalu sering.

• Verifikasi bahwa setiap URL sesi streaming HLS sedang digunakan oleh hanya satu pemain. Jika lebihdari satu pemain menggunakan URL sesi streaming HLS tunggal, layanan mungkin menerima terlalubanyak permintaan dan memotongnya.

• Verifikasi bahwa pemutar Anda mendukung semua opsi yang Anda tentukan untuk sesi streaming HLS.Coba kombinasi nilai yang berbeda untuk parameter berikut:• ContainerFormat

• PlaybackMode

• FragmentSelectorType

• DiscontinuityMode

• MaxMediaPlaylistFragmentResults

176

Amazon Kinesis Video Streams Panduan DeveloperLatensi terlalu tinggi antara produser dan pemain

Beberapa media player (seperti HTML5 dan mobile player) biasanya hanya mendukung HLS denganformat wadah fMP4. Pemutar media lainnya (seperti Flash dan pemutar khusus) hanya dapatmendukung HLS dengan format kontainer MPEG TS. Bereksperimen denganContainerFormatadalahtempat yang baik untuk memulai pemecahan masalah.

• Verifikasi bahwa setiap fragmen memiliki jumlah trek yang konsisten. Verifikasi bahwa fragmen dalamaliran tidak berubah antara memiliki trek audio dan video dan hanya trek video. Juga memverifikasibahwa pengaturan encoder (resolusi, frame rate, dll) tidak berubah antara fragmen di setiap trek.

Latensi terlalu tinggi antara produser dan pemainSituasi ini terjadi ketika latensi terlalu tinggi dari saat video ditangkap saat diputar di pemutar video.

Video diputar kembali melalui HLS berdasarkan per-fragmen. Oleh karena itu, latensi tidak bisa kurangdari durasi fragmen. Latensi juga mencakup waktu yang dibutuhkan untuk buffering dan transfer data. Jikasolusi Anda memerlukan latensi kurang dari satu detik, pertimbangkan untuk menggunakanGetMediaAPIsebagai gantinya.

Anda dapat menyesuaikan parameter berikut untuk mengurangi latensi keseluruhan, tetapi menyesuaikanparameter ini juga dapat mengurangi kualitas video atau meningkatkan tingkat rebuffering.

• Durasi fragmen: Durasi fragmen adalah jumlah video antara divisi dalam aliran yang dikendalikan olehfrekuensi keyframes yang dihasilkan oleh encoder video. Nilai yang disarankan adalah satu detik.Memiliki durasi fragmen yang lebih pendek berarti bahwa lebih sedikit waktu yang dihabiskan menunggufragmen selesai sebelum mentransmisikan data video ke layanan. Fragmen yang lebih pendek juga lebihcepat bagi layanan untuk diproses. Namun, jika durasi fragmen terlalu pendek, probabilitas meningkatbahwa pemain akan kehabisan konten dan harus berhenti dan menyangga konten. Jika durasi fragmenkurang dari 500 milidetik, produsen mungkin membuat terlalu banyak permintaan, menyebabkan layananuntuk throttle mereka.

• Bitrate: Aliran video dengan bitrate yang lebih rendah membutuhkan waktu lebih sedikit untuk membaca,menulis, dan mengirimkan. Namun, aliran video dengan bitrate yang lebih rendah biasanya memilikikualitas video yang lebih rendah.

• Jumlah fragmen dalam daftar putar media: Pemain latensi sensitif hanya harus memuat fragmen terbarudalam daftar putar media. Sebagian besar pemain mulai dari fragmen tertua sebagai gantinya. Denganmengurangi jumlah fragmen dalam daftar putar, Anda mengurangi pemisahan waktu antara fragmenlama dan baru. Dengan ukuran daftar putar yang lebih kecil, mungkin fragmen dilewati saat pemutaran,jika ada penundaan dalam menambahkan fragmen baru ke daftar putar, atau jika ada penundaanpemain mendapatkan daftar putar yang diperbarui. Sebaiknya gunakan 3-5 fragmen, dan menggunakanpemain yang dikonfigurasi untuk memuat hanya fragmen terbaru dari daftar putar.

• Ukuran penyangga pemain: Sebagian besar pemutar video memiliki durasi buffer minimum yang dapatdikonfigurasi, biasanya dengan default 10 detik. Untuk latensi terendah, Anda dapat mengatur nilai ini ke0 detik. Namun, melakukannya berarti bahwa pemain rebuffer jika ada penundaan memproduksi fragmenkarena pemain tidak akan memiliki buffer untuk menyerap penundaan.

• Pemain “mengejar”: Pemutar video biasanya tidak secara otomatis menangkap pemutaran kebagian depan buffer video jika buffer terisi, seperti ketika fragmen tertunda menyebabkan backlogfragmen diputar. Seorang pemain kustom dapat menghindari hal ini dengan menjatuhkan frame,atau meningkatkan kecepatan pemutaran (misalnya, ke 1.1x) untuk mengejar ke depan buffer. Hal inimenyebabkan pemutaran menjadi berombak atau meningkat dalam kecepatan saat pemain menangkap,dan rebuffering mungkin lebih sering karena ukuran buffer tetap pendek.

Memecahkan Masalah JavaBagian ini menjelaskan cara memecahkan masalah Java umum yang dihadapi saat bekerja denganKinesis Video Streams.

177

Amazon Kinesis Video Streams Panduan DeveloperMengaktifkan log Java

Masalah• Mengaktifkan log Java (p. 178)

Mengaktifkan log JavaUntuk memecahkan masalah dengan sampel Java dan library, sangat membantu untuk mengaktifkan danmemeriksa log debug. Untuk mengaktifkan log debug, lakukan hal berikut:

1. Tambahkanlog4jkepom.xmlfile, didependenciessimpul:

<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version></dependency>

2. Ditarget/classesdirektori, membuat file bernamalog4j.propertiesdengan isi sebagai berikut:

# Root logger optionlog4j.rootLogger=DEBUG, stdout

# Redirect log messages to consolelog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

log4j.logger.org.apache.http.wire=DEBUG

Log debug kemudian mencetak ke konsol IDE.

Pemecahan Masalah Pustaka ProduserBagian ini menjelaskan masalah yang mungkin Anda hadapi saat menggunakanPustaka Produsen (p. 52).

Masalah• Tidak dapat mengkompilasi Producer SDK (p. 179)• Aliran video tidak muncul di konsol (p. 179)• Kesalahan: “Token keamanan yang disertakan dalam permintaan tidak valid” saat streaming data

menggunakan aplikasi demo GStreamer (p. 179)• Kesalahan: “Gagal mengirimkan frame ke klien Video Kinesis” (p. 180)• Aplikasi GStreamer berhenti dengan pesan “streaming berhenti, alasan tidak dinegosiasikan” di OS

X (p. 180)• Kesalahan: “Gagal mengalokasikan tumpukan” saat membuat Klien Video Kinesis di demo GStreamer

di Raspberry Pi (p. 180)• Kesalahan: “Instruksi Ilegal” saat menjalankan demo GStreamer di Raspberry Pi (p. 180)• Kamera gagal dimuat pada Raspberry Pi (p. 181)• Kamera tidak dapat ditemukan di macOS High Sierra (p. 181)• berkas jni.h tidak ditemukan saat mengkompilasi di macOS High Sierra (p. 181)

178

Amazon Kinesis Video Streams Panduan DeveloperTidak dapat mengkompilasi Producer SDK

• Kesalahan Curl saat menjalankan aplikasi demo GStreamer (p. 181)• Timestamp/Range pernyataan saat runtime pada Raspberry Pi (p. 182)• Pernyataan tentang gst_value_set_fraction_range_full pada Raspberry Pi (p. 182)• Kesalahan STATUS_MKV_INVALID_ANNEXB_NALU_IN_FRAME_DATA (0x3200000d) di

Android (p. 182)• Durasi Fragmen Maksimum Tercapai Kesalahan (p. 182)• Galat “Nama hal tidak valid berlalu” saat menggunakan otorisasi IoT (p. 183)

Tidak dapat mengkompilasi Producer SDKVerifikasi bahwa pustaka yang diperlukan ada di jalur Anda. Untuk memverifikasi hal ini, gunakan perintahberikut:

$ env | grep LD_LIBRARY_PATHLD_LIBRARY_PATH=/home/local/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib

Aliran video tidak muncul di konsolUntuk menampilkan aliran video Anda di konsol, video tersebut harus dikodekan menggunakan H.264dalam format AVCC. Jika aliran Anda tidak ditampilkan, verifikasi hal berikut:

• KlasterBendera Adaptasi NAL (p. 104)diatur untukNAL_ADAPTATION_ANNEXB_NALS |NAL_ADAPTATION_ANNEXB_CPD_NALSjika aliran asli dalam format Annex-B. Ini adalah nilai defaultdiStreamDefinitionkonstruktor.

• Anda menyediakan data pribadi codec dengan benar. Untuk H.264, ini adalah urutan parameter set(SPS) dan gambar parameter set (PPS). Tergantung pada sumber media Anda, data ini dapat diambildari sumber media secara terpisah atau dikodekan ke dalam bingkai.

Banyak aliran dasar dalam format berikut, di manaAbadalah kode awal Annex-B (001 atau 0001):

Ab(Sps)Ab(Pps)Ab(I-frame)Ab(P/B-frame) Ab(P/B-frame)…. Ab(Sps)Ab(Pps)Ab(I-frame)Ab(P/B-frame) Ab(P/B-frame)

CPD (Codec Private Data) yang dalam kasus H.264 berada dalam aliran sebagai SPS dan PPS, dapatdisesuaikan dengan format AVCC. Kecuali jika pipa media memberikan CPD secara terpisah, aplikasidapat mengekstrak CPD dari frame dengan mencari frame Ir pertama (yang harus berisi SPS/PPS),ekstrak dua NALus [yaitu Ab (Sps) Ab (Pps)] dan mengaturnya di CPD diStreamDefinition.

Kesalahan: “Token keamanan yang disertakandalam permintaan tidak valid” saat streaming datamenggunakan aplikasi demo GStreamerJika kesalahan ini terjadi, ada masalah dengan kredensyal Anda. Verifikasi hal berikut:

• Jika Anda menggunakan kredensyal sementara, Anda harus menentukan token sesinya.• Verifikasi bahwa kredensyal sementara Anda tidak kedaluwarsa.• Verifikasi bahwa Anda memiliki hak yang tepat.

179

Amazon Kinesis Video Streams Panduan DeveloperKesalahan: “Gagal mengirimkan

frame ke klien Video Kinesis”

• Di macOS, pastikan bahwa Anda tidak memiliki kredensia yang di-cache di Keychain.

Kesalahan: “Gagal mengirimkan frame ke klien VideoKinesis”Jika kesalahan ini terjadi, cap waktu tidak diatur dengan benar dalam aliran sumber. Coba hal berikut:

• Gunakan contoh SDK terbaru, yang mungkin memiliki pembaruan yang memperbaiki masalah Anda.• Atur aliran berkualitas tinggi ke bit rate yang lebih tinggi, dan perbaiki jitter apa pun dalam aliran sumber

jika kamera mendukung melakukannya.

Aplikasi GStreamer berhenti dengan pesan “streamingberhenti, alasan tidak dinegosiasikan” di OS XStreaming dapat berhenti di OS X dengan pesan berikut:

Debugging information: gstbasesrc.c(2939): void gst_base_src_loop(GstPad *) (): /GstPipeline:test-pipeline/GstAutoVideoSrc:source/GstAVFVideoSrc:source-actual-src-avfvide:streaming stopped, reason not-negotiated (-4)

Solusi yang mungkin untuk ini adalah menghapus parameter frameratedarigst_caps_new_simplepanggilankinesis_video_gstreamer_sample_app.cpp:

GstCaps *h264_caps = gst_caps_new_simple("video/x-h264", "profile", G_TYPE_STRING, "baseline", "stream-format", G_TYPE_STRING, "avc", "alignment", G_TYPE_STRING, "au", "width", GST_TYPE_INT_RANGE, 320, 1920, "height", GST_TYPE_INT_RANGE, 240, 1080, "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, 30, 1, NULL);

Kesalahan: “Gagal mengalokasikan tumpukan” saatmembuat Klien Video Kinesis di demo GStreamer diRaspberry PiAplikasi sampel GStreamer mencoba mengalokasikan RAM 512 MB, yang mungkin tidak tersedia di sistemAnda. Anda dapat mengurangi alokasi ini dengan mengurangi nilai berikutKinesisVideoProducer.cpp:

device_info.storageInfo.storageSize = 512 * 1024 * 1024;

Kesalahan: “Instruksi Ilegal” saat menjalankan demoGStreamer di Raspberry PiJika Anda mengalami galat berikut saat menjalankan demo GStreamer, pastikan bahwa Anda telahmengumpulkan aplikasi untuk versi perangkat yang benar. (Misalnya, pastikan bahwa Anda tidakmengkompilasi untuk Raspberry Pi 3 saat Anda berjalan di Raspberry Pi 2.)

180

Amazon Kinesis Video Streams Panduan DeveloperKamera gagal dimuat pada Raspberry Pi

INFO - Initializing curl.Illegal instruction

Kamera gagal dimuat pada Raspberry PiUntuk memeriksa apakah kamera dimuat, jalankan yang berikut ini:

$ ls /dev/video*

Jika tidak ada yang ditemukan, jalankan yang berikut ini:

$ vcgencmd get_camera

Outputnya akan serupa dengan yang berikut ini:

supported=1 detected=1

Jika pengemudi tidak mendeteksi kamera, lakukan hal berikut:

1. Periksa pengaturan kamera fisik dan verifikasi bahwa itu terhubung dengan benar.2. Jalankan yang berikut ini untuk meng-upgrade firmware:

$ sudo rpi-update

3. Memulai ulang perangkat.4. Jalankan hal berikut untuk memuat driver:

$ sudo modprobe bcm2835-v4l2

5. Verifikasi bahwa kamera terdeteksi:

$ ls /dev/video*

Kamera tidak dapat ditemukan di macOS High SierraDi macOS High Sierra, aplikasi demo tidak dapat menemukan kamera jika lebih dari satu kamera tersedia.

berkas jni.h tidak ditemukan saat mengkompilasi dimacOS High SierraUntuk mengatasi kesalahan ini, perbarui penginstalan Xcode ke versi terbaru.

Kesalahan Curl saat menjalankan aplikasi demoGStreamerUntuk mengatasi kesalahan curl saat Anda menjalankan aplikasi demo GStreamer, salinberkas sertifikatinikepada/etc/ssl/cert.pem.

181

Amazon Kinesis Video Streams Panduan DeveloperTimestamp/Range pernyataan

saat runtime pada Raspberry Pi

Timestamp/Range pernyataan saat runtime padaRaspberry PiJika pernyataan rentang timestamp terjadi saat runtime, perbarui firmware dan nyalakan ulang perangkat:

$ sudo rpi-update $ sudo reboot

Pernyataan tentang gst_value_set_fraction_range_fullpada Raspberry PiPernyataan berikut muncul jikauv4llayanan sedang berjalan:

gst_util_fraction_compare (numerator_start, denominator_start, numerator_end, denominator_end) < 0' failed

Jika ini terjadi, hentikanuv4llayanan dan restart aplikasi.

KesalahanSTATUS_MKV_INVALID_ANNEXB_NALU_IN_FRAME_DATA(0x3200000d) di AndroidKesalahan berikut muncul jikaBendera Adaptasi NAL (p. 104)tidak benar untuk media stream:

putKinesisVideoFrame(): Failed to put a frame with status code 0x3200000d

Jika kesalahan ini terjadi, berikan yang benar.withNalAdaptationFlagsbendera untuk media Anda(misalnya,NAL_ADAPTATION_ANNEXB_CPD_NALS). Berikan bendera ini di baris berikutPustaka ProduserAndroid (p. 57):

https://github.com/awslabs/aws-sdk-android-sampel/gumpal/master/AmazonKinesisVideoDemoapp/src/main/java/com/amazonaws/kinesisvideo/demoapp/Fragmen/StreamConfigurationFragment.java #L169

Durasi Fragmen Maksimum Tercapai KesalahanKesalahan ini terjadi ketika fragmen media dalam aliran melebihi batas durasi fragmen maksimum. Secaradefault, Kinesis Video Streams menetapkan durasi fragmen maksimum stream menjadi 10 detik.

Untuk mengatasi masalah ini, coba hal berikut:

• Jika Anda menggunakan kamera Webcam/USB, lakukan salah satu hal berikut:• Jika Anda menggunakan key frame-based fragmentasi, kemudian mengatur encoder untuk

menyediakan frame kunci dalam waktu 10 detik.• Jika Anda tidak menggunakan fragmentasi berbasis bingkai kunci, maka ketika mendefinisikan aliran

diLangkah 2: Menulis dan Periksa Kode (p. 65), atur batas durasi fragmen maksimum ke nilai yangkurang dari 10 detik.

• Jika Anda menggunakan encoder perangkat lunak (seperti x264) di pipeline GStreamer, Anda dapatmengaturkey-int-maxatribut ke nilai dalam waktu 10 detik (misalnya, setkey-int-maxke 60, dengan fpsdiatur ke 30, untuk mengaktifkan frame kunci setiap 2 detik).

182

Amazon Kinesis Video Streams Panduan DeveloperGalat “Nama hal tidak valid berlalu”

saat menggunakan otorisasi IoT

• Jika Anda menggunakan kamera RPI, atur atribut interval keyframe-menjadi kurang dari 10 detik.• Jika Anda menggunakan kamera IP (RTSP), atur ukuran GOP ke 60.

Galat “Nama hal tidak valid berlalu” saatmenggunakan otorisasi IoTUntuk menghindari galat ini (HTTP Error 403: Response: {"message":"Invalid thing namepassed"}) ketika Anda menggunakan kredensi IoT untuk otorisasi, pastikan bahwa nilaistream-name(parameter yang diperlukan darikvssinkelement) adalah identitas dengan nilaiiot-thingname.Untuk informasi selengkapnya, lihat Referensi Parameter Elemen GStreamer (p. 137).

Pemecahan masalah Stream Parser LibraryMasalah

Bagian ini menjelaskan masalah yang mungkin Anda hadapi saat menggunakanPerpustakaan StreamParser (p. 124).

Masalah• Tidak dapat mengakses satu frame dari stream (p. 183)• Kesalahan decoding (p. 183)

Tidak dapat mengakses satu frame dari streamUntuk mengakses satu frame dari sumber streaming di aplikasi konsumen Anda, pastikan bahwa streamAnda berisi data pribadi codec yang benar. Untuk informasi lebih lanjut tentang format data dalam aliran,lihatModel Data (p. 17).

Untuk mempelajari cara menggunakan data pribadi codec untuk mengakses frame, lihat file pengujianberikut diGitHubsitus web: KinesisVideoRendererExampleTest.java

Kesalahan decodingJika fragmen Anda tidak dikodekan dengan benar dalam format H.264 dan level yang didukung browser,Anda mungkin akan melihat galat berikut saat memutar stream di konsol:

Fragment Decoding ErrorThere was an error decoding the video data. Verify that the stream contains valid H.264 content

Jika hal ini terjadi, verifikasi hal berikut:

• Resolusi frame cocok dengan resolusi yang ditentukan dalam Data Pribadi Codec.• Profil H.264 dan tingkat frame yang dikodekan sesuai dengan profil dan tingkat yang ditentukan dalam

Data Pribadi Codec.• Browser mendukung kombinasi profil/level. Sebagian besar browser saat ini mendukung semua

kombinasi profil dan level.• Cap waktu akurat dan dalam urutan yang benar, dan tidak ada cap waktu duplikat sedang dibuat.• Aplikasi Anda mengkodekan data bingkai menggunakan format H.264.

183

Amazon Kinesis Video Streams Panduan Developer

Riwayat Dokumen untuk ArusAmazon Kinesis Video Streams

Tabel berikut menjelaskan perubahan penting pada dokumentasi sejak rilis terakhir Amazon Kinesis VideoStreams.

• Versi API terbaru: 2017-11-29• Pembaruan dokumentasi terbaru: 21 Januari 2019

Perubahan Deskripsi Tanggal

Memulai: Mengirim Data keAliran video Kinesis

Tutorial dasar untuk mengirimdata media dari kamera ke aliranvideo Kinesis. Untuk informasiselengkapnya, lihat Langkah 3:Mengirim Data ke Arus VideoKinesis (p. 25).

21 Januari 2019

Template perpustakaan untukintegrasi denganSageMaker

Contoh aplikasi untukKinesis Video Streams yangmenggunakanSageMakeruntukmengidentifikasi kapan objektertentu muncul dalam aliranvideo Amazon Kinesis. Untukinformasi selengkapnya, lihatSageMaker (p. 146).

19 November 2018

Metadata streaming Anda dapat menggunakanProducer SDK untukmenyematkan metadata dalamaliran video Kinesis. Untukinformasi selengkapnya, lihatMenggunakan MetadataStreaming dengan Kinesis VideoStreams (p. 14).

28 September 2018

C++ Produser SDK Anda dapat mengkonfigurasipencatatan untuk aplikasiC++ Producer SDK. Untukinformasi selengkapnya, lihatMenggunakan Logging dengan C++ Producer SDK (p. 70).

18 Juli 2018

Streaming video HLS Anda sekarang dapatmelihat aliran video Kinesismenggunakan HTTP LiveStreaming. Untuk informasiselengkapnya, lihat PemutaranKinesis Video Streams (p. 7) .

13 Juli 2018

Streaming dari sumber RTSP Contoh aplikasi untuk KinesisVideo Streams yang berjalan

20 Juni 2018

184

Amazon Kinesis Video Streams Panduan Developer

Perubahan Deskripsi Tanggaldalam wadah Docker danstreaming video dari sumberRTSP. Untuk informasiselengkapnya, lihat RTSP danDocker (p. 143).

Plugin SDK GStreamer ProdusenC ++

Menunjukkan bagaimanamembangunPerpustakaanprodusen C ++ (p. 62)untukdigunakan sebagai tujuanGStreamer. Untuk informasiselengkapnya, lihatGStreamer (p. 132).

15 Juni 2018

Dokumentasi referensi callbackproduser SDK

Dokumentasi referensi untukcallback yang digunakanolehPustaka Produsen KinesisVideo Streams (p. 52). Untukinformasi selengkapnya, lihatCallback Produsen (p. 118).

12 Juni 2018

Persyaratan sistem Dokumentasi untuk persyaratanmemori dan penyimpanan untukperangkat produser dan SDK.Untuk informasi selengkapnya,lihat Persyaratan Sistem KinesisVideo Streams (p. 3).

30 Mei 2018

Dukungan CloudTrail Dokumentasi untukmenggunakanCloudTrailuntukmemantau penggunaan API.Untuk informasi selengkapnya,lihat Logging Kinesis VideoStreams API PanggilandenganAWS CloudTrail (p. 163).

24 Mei 2018

Dokumentasi referensi strukturSDK Produser

Dokumentasi referensi untukstruktur yang digunakanolehPustaka Produsen KinesisVideo Streams (p. 52). Untukinformasi selengkapnya, lihatStruktur SDK Produsen (p. 105)dan Struktur Arus VideoKinesis (p. 107).

7 Mei 2018

Renderer contoh dokumentasi Dokumentasi untuk aplikasicontoh Renderer, yangmenunjukkan bagaimanauntuk memecahkan kode danmenampilkan frame dari aliranvideo Kinesis. Untuk informasiselengkapnya, lihat Contoh:Parsing dan Rendering KinesisVideo Streams Fragmen (p. 144).

15 Maret 2018

185

Amazon Kinesis Video Streams Panduan Developer

Perubahan Deskripsi Tanggal

Dokumentasi referensi BatasSDK Produser

Informasi tentang batas operasidiPerpustakaan produsen C++ (p. 62). Untuk informasiselengkapnya, lihat Batas SDKProdusen (p. 78).

13 Maret 2018

Memantau Informasi tentang pemantauanmetrik Kinesis Video Streamsdan panggilan API menggunakanAmazonCloudWatchdanAWSCloudTrail. Untuk informasiselengkapnya, lihat PemantauanKinesis Video Streams (p. 152).

5 Februari 2018

Referensi bendera adaptasiLapisan Abstraksi Jaringan (NAL)

Informasi tentang pengaturanbendera adaptasi NAL saatmengkonsumsi video streaming.Untuk informasi selengkapnya,lihat Bendera AdaptasiNAL (p. 104).

15 Januari 2018

Dukungan Android untukstreaming video

Kinesis Video Streams sekarangmendukung streaming videodari perangkat Android. Untukinformasi selengkapnya,lihat Pustaka ProduserAndroid (p. 57).

12 Januari 2018

Contoh dokumentasi KinesisVideo

Dokumentasi untuk aplikasicontoh Kinesis Video, yangmenunjukkan bagaimanamenggunakanPerpustakaanParser Streaming VideoKinesis (p. 124)dalamsebuah aplikasi. Untukinformasi selengkapnya, lihatKinesisVideoContoh (p. 128).

9 Januari 2018

Dokumentasi Kinesis VideoStreams dirilis

Ini adalah rilis awal dariPanduanPengembang Amazon KinesisVideo Streams.

29 November 2017

186

Amazon Kinesis Video Streams Panduan DeveloperTindakan

Referensi APIBagian di bawah node ini berisi dokumentasi API Reference. Gunakan daftar isi di panel kiri untuk pergi kebagian referensi API yang berbeda.

TindakanTindakan berikut didukung oleh Amazon Kinesis Video Streams:

• CreateSignalingChannel (p. 189)• CreateStream (p. 192)• DeleteSignalingChannel (p. 196)• DeleteStream (p. 199)• DescribeImageGenerationConfiguration (p. 202)• DescribeNotificationConfiguration (p. 205)• DescribeSignalingChannel (p. 208)• DescribeStream (p. 211)• GetDataEndpoint (p. 214)• GetSignalingChannelEndpoint (p. 217)• ListSignalingChannels (p. 220)• ListStreams (p. 223)• ListTagsForResource (p. 226)• ListTagsForStream (p. 229)• TagResource (p. 232)• TagStream (p. 234)• UntagResource (p. 237)• UntagStream (p. 239)• UpdateDataRetention (p. 242)• UpdateImageGenerationConfiguration (p. 245)• UpdateNotificationConfiguration (p. 248)• UpdateSignalingChannel (p. 251)• UpdateStream (p. 254)

Tindakan berikut didukung oleh Amazon Kinesis Video Streams Media:

• GetMedia (p. 258)• PutMedia (p. 262)

Tindakan berikut didukung oleh Amazon Kinesis Video Streams Archived Media:

• GetClip (p. 269)• GetDASHStreamingSessionURL (p. 273)• GetHLSStreamingSessionURL (p. 280)• GetImages (p. 288)

187

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

• GetMediaForFragmentList (p. 293)• ListFragments (p. 297)

Tindakan berikut didukung oleh Amazon Kinesis Video Signaling Channels:

• GetIceServerConfig (p. 301)• SendAlexaOfferToMaster (p. 304)

Amazon Kinesis Video StreamsTindakan berikut didukung oleh Amazon Kinesis Video Streams:

• CreateSignalingChannel (p. 189)• CreateStream (p. 192)• DeleteSignalingChannel (p. 196)• DeleteStream (p. 199)• DescribeImageGenerationConfiguration (p. 202)• DescribeNotificationConfiguration (p. 205)• DescribeSignalingChannel (p. 208)• DescribeStream (p. 211)• GetDataEndpoint (p. 214)• GetSignalingChannelEndpoint (p. 217)• ListSignalingChannels (p. 220)• ListStreams (p. 223)• ListTagsForResource (p. 226)• ListTagsForStream (p. 229)• TagResource (p. 232)• TagStream (p. 234)• UntagResource (p. 237)• UntagStream (p. 239)• UpdateDataRetention (p. 242)• UpdateImageGenerationConfiguration (p. 245)• UpdateNotificationConfiguration (p. 248)• UpdateSignalingChannel (p. 251)• UpdateStream (p. 254)

188

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

CreateSignalingChannelLayanan:Amazon Kinesis Video Streams

Menciptakan saluran sinyal.

CreateSignalingChanneladalah operasi asinkron.

Minta Sintaks

POST /createSignalingChannel HTTP/1.1Content-type: application/json

{ "ChannelName": "string", "ChannelType": "string", "SingleMasterConfiguration": { "MessageTtlSeconds": number }, "Tags": [ { "Key": "string", "Value": "string" } ]}

Parameter Permintaan URI

Permintaan tidak menggunakan parameter URI apa pun.

Isi Permintaan

Permintaan menerima data berikut dalam format JSON.

ChannelName (p. 189)

Nama untuk saluran sinyal yang Anda buat. Ini harus unik untuk masing-masingAkun AWSdanWilayahAWS.

Jenis: String

Aturan Panjang: Panjang minimum 1. Panjang maksimum 256.

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

Diperlukan: YaChannelType (p. 189)

Jenis saluran sinyal yang Anda buat. Saat ini,SINGLE_MASTERadalah satu-satunya jenis saluran yangdidukung.

Jenis: Rangkaian

Nilai Valid: SINGLE_MASTER | FULL_MESH

Diperlukan: TidakSingleMasterConfiguration (p. 189)

Sebuah struktur yang berisi konfigurasi untukSINGLE_MASTERjenis saluran.

189

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

Tipe: Objek SingleMasterConfiguration (p. 318)

Diperlukan: TidakTags (p. 189)

Seperangkat tanda (pasangan nilai-kunci) yang ingin Anda kaitkan dengan saluran ini.

Jenis: Array dariTag (p. 322)objek

Anggota Array: Jumlah minimum 0 item. Jumlah maksimum 50 item.

Diperlukan: Tidak

Sintaksis Respons

HTTP/1.1 200Content-type: application/json

{ "ChannelARN": "string"}

Elemen Respons

Jika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200.

Layanan mengembalikan data berikut dalam format JSON.

ChannelARN (p. 190)

Amazon Resource Name (ARN) dari saluran yang dibuat.

Jenis: String

Aturan 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]+

Kesalahan

Untuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

AccessDeniedException

Anda tidak memiliki izin yang diperlukan untuk melakukan operasi ini.

Kode Status HTTP: 401AccountChannelLimitExceededException

Anda telah mencapai batas maksimum saluran sinyal aktif untuk iniAkun AWSdi wilayah ini.

Kode Status HTTP: 400ClientLimitExceededException

Kinesis Video Streams telah mencekik permintaan karena Anda telah melampaui batas panggilan klienyang diizinkan. Coba buat panggilan nanti.

190

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

Kode Status HTTP: 400InvalidArgumentException

Nilai untuk parameter input ini tidak valid.

Kode Status HTTP: 400ResourceInUseException

Sumber daya saat ini tidak tersedia untuk operasi ini. Sumber daya baru tidak dapat dibuat dengannama yang sama dengan sumber daya yang ada. Selain itu, sumber daya tidak dapat diperbarui ataudihapus kecuali mereka berada dalamACTIVEnegara.

Jika pengecualian ini dikembalikan, jangan menggunakannya untuk menentukan apakah sumber dayayang diminta sudah ada. Sebagai gantinya, disarankan Anda menggunakan API deskripsikan sumberdaya spesifik, misalnya,DescribeStreamuntuk streaming video.

Kode Status HTTP: 400TagsPerResourceExceededLimitException

Anda telah melampaui batas tag yang dapat Anda kaitkan dengan sumber daya. Streaming videoKinesis dapat mendukung hingga 50 tanda.

Kode Status HTTP: 400

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API di salah satu bahasaAWSSDK, lihat berikut ini:

• AWSAntarmuka Baris Perintah• AWSSDK for .NET• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK untukJavaScript• AWSSDK for PHP V3• AWSSDK for Python• AWSSDK for Ruby V3

191

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

CreateStreamLayanan:Amazon Kinesis Video Streams

Menciptakan aliran video Kinesis baru.

Saat Anda membuat streaming baru, Kinesis Video Streams menugaskan nomor versi. Ketika Andamengubah metadata stream, Kinesis Video Streams memperbarui versi.

CreateStreamadalah operasi asinkron.

Untuk informasi tentang cara kerja layanan, lihatCara Kerjanya.

Anda harus memiliki izin untukKinesisVideo:CreateStreamtindakan.

Minta Sintaks

POST /createStream HTTP/1.1Content-type: application/json

{ "DataRetentionInHours": number, "DeviceName": "string", "KmsKeyId": "string", "MediaType": "string", "StreamName": "string", "Tags": { "string" : "string" }}

Parameter Permintaan URIPermintaan tidak menggunakan parameter URI apa pun.

Isi PermintaanPermintaan menerima data berikut dalam format JSON.

DataRetentionInHours (p. 192)

Jumlah jam yang Anda ingin menyimpan data dalam aliran. Kinesis Video Streams menyimpan datadalam penyimpanan data yang terkait dengan aliran.

Nilai default-nya adalah 0, menunjukkan bahwa aliran tidak bertahan data.

SaatDataRetentionInHoursnilai adalah 0, konsumen masih dapat mengkonsumsi fragmen yangtetap dalam penyangga layanan host, yang memiliki batas waktu retensi 5 menit dan batas memoriretensi 200 MB. Fragmen dihapus dari buffer ketika salah satu batas tercapai.

Jenis: Bulat

Rentang yang Valid: Nilai minimum 0.

Diperlukan: TidakDeviceName (p. 192)

Nama perangkat yang menulis ke aliran.Note

Dalam implementasi saat ini, Kinesis Video Streams tidak menggunakan nama ini.

192

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 128.

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

Diperlukan: TidakKmsKeyId (p. 192)

ID dariAWS Key Management Service(AWS KMS) kunci yang ingin Anda gunakan Kinesis VideoStreams untuk mengenkripsi data stream.

Jika tidak ada ID kunci yang ditentukan, kunci yang dikelola video Kinesis (aws/kinesisvideo)digunakan.

Untuk informasi selengkapnya, lihatDescribeKey.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 2048.

Pola: .+

Diperlukan: TidakMediaType (p. 192)

Jenis media dari sungai. Konsumen sungai dapat menggunakan informasi ini saat memprosesaliran. Untuk informasi selengkapnya tentang jenis media, lihatTipe media. Jika Anda memilih untukmenentukanMediaType, lihatPersyaratan Penamaanuntuk pedoman.

Contoh nilai yang valid termasuk “video/h264" dan “video/h264, audio/aac”.

Parameter ini opsional; nilai defaultnyanull(atau kosong di JSON).

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 128.

Pola: [\w\-\.\+]+/[\w\-\.\+]+(,[\w\-\.\+]+/[\w\-\.\+]+)*

Diperlukan: TidakStreamName (p. 192)

Nama untuk aliran yang Anda buat.

Nama stream adalah pengenal untuk stream, dan harus unik untuk setiap akun dan wilayah.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 256.

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

Diperlukan: YaTags (p. 192)

Daftar tag untuk diasosiasikan dengan aliran yang ditentukan. Setiap tag adalah pasangan nilai kunci(nilai opsional).

Jenis: Peta string

193

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

Entri Peta: Jumlah maksimum 50 item.

Batasan Panjang Kunci: Panjang minimum 1. Panjang maksimum 128.

Pola Kunci: ^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$

Batasan Panjang Nilai: Panjang minimum 0. Panjang maksimum 256.

Pola nilai: [\p{L}\p{Z}\p{N}_.:/=+\-@]*

Diperlukan: Tidak

Sintaksis Respons

HTTP/1.1 200Content-type: application/json

{ "StreamARN": "string"}

Elemen Respons

Jika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200.

Layanan mengembalikan data berikut dalam format JSON.

StreamARN (p. 194)

Amazon Resource Name (ARN) dari aliran.

Jenis: String

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]+

Kesalahan

Untuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

AccountStreamLimitExceededException

Jumlah aliran yang dibuat untuk akun terlalu tinggi.

Kode Status HTTP: 400ClientLimitExceededException

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

Kode Status HTTP: 400DeviceStreamLimitExceededException

Tidak Diterapkan.

Kode Status HTTP: 400

194

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

InvalidArgumentException

Nilai untuk parameter input ini tidak valid.

Kode Status HTTP: 400InvalidDeviceException

Tidak Diterapkan.

Kode Status HTTP: 400ResourceInUseException

Sumber daya saat ini tidak tersedia untuk operasi ini. Sumber daya baru tidak dapat dibuat dengannama yang sama dengan sumber daya yang ada. Selain itu, sumber daya tidak dapat diperbarui ataudihapus kecuali mereka berada dalamACTIVEnegara.

Jika pengecualian ini dikembalikan, jangan menggunakannya untuk menentukan apakah sumber dayayang diminta sudah ada. Sebagai gantinya, disarankan Anda menggunakan API deskripsikan sumberdaya spesifik, misalnya,DescribeStreamuntuk streaming video.

Kode Status HTTP: 400TagsPerResourceExceededLimitException

Anda telah melampaui batas tag yang dapat Anda kaitkan dengan sumber daya. Aliran video Kinesisdapat mendukung hingga 50 tanda.

Kode Status HTTP: 400

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API di salah satu spesifik bahasaAWSSDK, lihat yangberikut ini:

• AWSAntarmuka Baris Perintah• AWSSDK for .NET• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK untukJavaScript• AWSSDK for PHP V3• AWSSDK for Python• AWSSDK for Ruby V3

195

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

DeleteSignalingChannelLayanan:Amazon Kinesis Video Streams

Menghapus saluran sinyal tertentu.DeleteSignalingChanneladalah operasi asinkron. Jika Anda tidakmenentukan versi saluran saat ini, versi terbaru akan dihapus.

Minta Sintaks

POST /deleteSignalingChannel HTTP/1.1Content-type: application/json

{ "ChannelARN": "string", "CurrentVersion": "string"}

Parameter Permintaan URI

Permintaan tidak menggunakan parameter URI apa pun.

Isi Permintaan

Permintaan menerima data berikut dalam format JSON.

ChannelARN (p. 196)

Amazon Resource Name (ARN) dari saluran sinyal yang ingin Anda hapus.

Jenis: String

Batasan: 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]+

Diperlukan: YaCurrentVersion (p. 196)

Versi saluran sinyal yang ingin Anda hapus. Anda dapat memperoleh versi saat ini denganmenerapkanDescribeSignalingChannelatauListSignalingChannelsOperasi API.

Jenis: String

Batasan: Panjang minimum 1. Panjang maksimum adalah 64.

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

Diperlukan: Tidak

Sintaksis Respons

HTTP/1.1 200

Elemen Respons

Jika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200 dengan isi HTTP kosong.

196

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

Kesalahan

Untuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

AccessDeniedException

Anda tidak memiliki izin yang diperlukan untuk melakukan operasi ini.

Kode Status HTTP: 401ClientLimitExceededException

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

Kode Status HTTP: 400InvalidArgumentException

Nilai untuk parameter input ini tidak valid.

Kode Status HTTP: 400ResourceInUseException

Saat ini sumber daya tidak tersedia untuk operasi ini. Sumber daya baru tidak dapat dibuat dengannama yang sama dengan sumber daya yang ada. Selain itu, sumber daya tidak dapat diperbarui ataudihapus kecuali mereka berada dalamACTIVEnegara.

Jika pengecualian ini dikembalikan, jangan menggunakannya untuk menentukan apakah sumber dayayang diminta sudah ada. Sebagai gantinya, disarankan Anda menggunakan API deskripsikan sumberdaya spesifik, misalnya,DescribeStreamuntuk streaming video

Kode Status HTTP: 400ResourceNotFoundException

Amazon Kinesis Video Streams tidak dapat menemukan aliran yang Anda tentukan.

Kode Status HTTP: 404VersionMismatchException

Versi stream yang Anda tentukan bukan versi terbaru. Untuk mendapatkan versi terbaru,gunakanDescribeStreamAPI

Kode Status HTTP: 400

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API di salah satu spesifik bahasaAWSSDK, lihat yangberikut ini:

• AWSAntarmuka Baris Perintah• AWSSDK for .NET• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDKJavaScript• AWSSDK for PHP V3• AWSSDK for Python

197

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

• AWSSDK for Ruby V3

198

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

DeleteStreamLayanan:Amazon Kinesis Video Streams

Menghapus aliran video Kinesis dan data yang terkandung dalam aliran.

Metode ini menandai aliran untuk penghapusan, dan membuat data dalam aliran tidak dapat diaksessegera.

Untuk memastikan bahwa Anda memiliki versi terbaru dari stream sebelum menghapusnya, Anda dapatmenentukan versi stream. Kinesis Video Streams memberikan versi untuk setiap aliran. Saat Andamemperbarui stream, Kinesis Video Streams memberikan nomor versi baru. Untuk mendapatkan versistreaming terbaru, gunakanDescribeStreamAPI

Operasi ini memerlukan izin untuk tindakan KinesisVideo:DeleteStream.

Minta Sintaks

POST /deleteStream HTTP/1.1Content-type: application/json

{ "CurrentVersion": "string", "StreamARN": "string"}

Parameter Permintaan URIPermintaan tidak menggunakan parameter URI apa pun.

Isi PermintaanPermintaan menerima data berikut dalam format JSON.

CurrentVersion (p. 199)

Opsional: Versi stream yang ingin Anda hapus.

Tentukan versi sebagai pengamanan untuk memastikan bahwa Anda menghapus aliran yang benar.Untuk mendapatkan versi stream, gunakanDescribeStreamAPI

Jika tidak ditentukan, hanyaCreationTimediperiksa sebelum menghapus stream.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum adalah 64.

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

Diperlukan: TidakStreamARN (p. 199)

Amazon Resource Name (ARN) stream yang ingin Anda hapus.

Jenis: String

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]+

199

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

Diperlukan: Ya

Sintaksis Respons

HTTP/1.1 200

Elemen ResponsJika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200 dengan isi HTTP kosong.

KesalahanUntuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

ClientLimitExceededException

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

Kode Status HTTP: 400InvalidArgumentException

Nilai untuk parameter input ini tidak valid.

Kode Status HTTP: 400NotAuthorizedException

Penelepon tidak diotorisasi untuk melakukan operasi ini.

Kode Status HTTP: 401ResourceInUseException

Sumber daya saat ini tidak tersedia untuk operasi ini. Sumber daya baru tidak dapat dibuat dengannama yang sama dengan sumber daya yang ada. Selain itu, sumber daya tidak dapat diperbarui ataudihapus kecuali mereka berada dalamACTIVEnegara.

Jika pengecualian ini dikembalikan, jangan menggunakannya untuk menentukan apakah sumber dayayang diminta sudah ada. Sebagai gantinya, disarankan Anda menggunakan API deskripsikan sumberdaya spesifik, misalnya,DescribeStreamuntuk streaming video.

Kode Status HTTP: 400ResourceNotFoundException

Amazon Kinesis Video Streams tidak dapat menemukan aliran yang Anda tentukan.

Kode Status HTTP: 404VersionMismatchException

Versi stream yang Anda tentukan bukan versi terbaru. Untuk mendapatkan versi terbaru,gunakanDescribeStreamAPI

Kode Status HTTP: 400

Lihat JugaUntuk informasi selengkapnya tentang penggunaan API di salah satu spesifik bahasaAWSSDK, lihatberikut ini:

200

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

DescribeImageGenerationConfigurationLayanan:Amazon Kinesis Video Streams

MendapatImageGenerationConfigurationuntuk aliran video Kinesis diberikan.

Minta Sintaks

POST /describeImageGenerationConfiguration HTTP/1.1Content-type: application/json

{ "StreamARN": "string", "StreamName": "string"}

Parameter Permintaan URI

Permintaan tidak menggunakan parameter URI apa pun.

Isi Permintaan

Permintaan menerima data berikut dalam format JSON.

StreamARN (p. 202)

Amazon Resource Name (ARN) dari aliran video Kinesis yang akan diambil konfigurasi pembuatangambar. Anda harus menentukan salah satuStreamNameatauStreamARN.

Jenis: String

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]+

Diperlukan: TidakStreamName (p. 202)

Nama aliran yang untuknya konfigurasi pembuatan gambar. Anda harus menentukan salahsatuStreamNameatauStreamARN.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 256.

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

Diperlukan: Tidak

Sintaksis Respons

HTTP/1.1 200Content-type: application/json

{ "ImageGenerationConfiguration": { "DestinationConfig": { "DestinationRegion": "string",

202

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

"Uri": "string" }, "Format": "string", "FormatConfig": { "string" : "string" }, "HeightPixels": number, "ImageSelectorType": "string", "SamplingInterval": number, "Status": "string", "WidthPixels": number }}

Elemen ResponsJika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200.

Layanan mengembalikan data berikut dalam format JSON.

ImageGenerationConfiguration (p. 202)

Struktur yang berisi informasi yang diperlukan untuk pengiriman gambar aliran video Kinesis (KVS).Jika struktur ini adalah null, konfigurasi akan dihapus dari sungai.

Tipe: Objek ImageGenerationConfiguration (p. 311)

KesalahanUntuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

AccessDeniedException

Anda tidak memiliki izin yang diperlukan untuk melakukan operasi ini.

Kode Status HTTP: 401ClientLimitExceededException

Kinesis Video Streams telah mencekik permintaan karena Anda telah melampaui batas panggilan klienyang diizinkan. Coba buat panggilan nanti.

Kode Status HTTP: 400InvalidArgumentException

Nilai untuk parameter input ini tidak valid.

Kode Status HTTP: 400ResourceNotFoundException

Amazon Kinesis Video Streams tidak dapat menemukan aliran yang Anda tentukan.

Kode Status HTTP: 404

Lihat JugaUntuk informasi selengkapnya tentang penggunaan API di salah satu bahasa khusus bahasaAWSSDK,lihat yang berikut ini:

• AWSAntarmuka Baris Perintah

203

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

DescribeNotificationConfigurationLayanan:Amazon Kinesis Video Streams

MendapatNotificationConfigurationuntuk aliran video Kinesis diberikan.

Minta Sintaks

POST /describeNotificationConfiguration HTTP/1.1Content-type: application/json

{ "StreamARN": "string", "StreamName": "string"}

Parameter Permintaan URI

Permintaan tidak menggunakan parameter URI apa pun.

Isi Permintaan

Permintaan menerima data berikut dalam format JSON.

StreamARN (p. 205)

Amazon Resource Name (ARN) Kinesis video stream tempat Anda ingin mengambil konfigurasinotifikasi. Anda harus menentukan salah satuStreamNameatau StreaMarn.

Jenis: String

Batasan: 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]+

Diperlukan: TidakStreamName (p. 205)

Nama stream yang untuknya konfigurasi notifikasi akan diambil. Anda harus menentukan salahsatuStreamNameatauStreamARN.

Jenis: String

Batasan: Panjang minimum 1. Panjang maksimum 256.

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

Diperlukan: Tidak

Sintaksis Respons

HTTP/1.1 200Content-type: application/json

{ "NotificationConfiguration": { "DestinationConfig": { "Uri": "string"

205

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

}, "Status": "string" }}

Elemen ResponsJika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200.

Layanan mengembalikan data berikut dalam format JSON.

NotificationConfiguration (p. 205)

Struktur yang berisi informasi yang diperlukan untuk pemberitahuan. Jika struktur null, konfigurasi akandihapus dari sungai.

Tipe: Objek NotificationConfiguration (p. 314)

KesalahanUntuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

AccessDeniedException

Anda tidak memiliki izin yang diperlukan untuk melakukan operasi ini.

Kode Status HTTP: 401ClientLimitExceededException

Kinesis Video Streams telah mencekik permintaan karena Anda telah melampaui batas panggilan klienyang diizinkan. Coba buat panggilan nanti.

Kode Status HTTP: 400InvalidArgumentException

Nilai untuk parameter input ini tidak valid.

Kode Status HTTP: 400ResourceNotFoundException

Amazon Kinesis Video Streams tidak dapat menemukan aliran yang Anda tentukan.

Kode Status HTTP: 404

Lihat JugaUntuk informasi selengkapnya tentang penggunaan API di salah satu bahasa khususAWSSDK, lihat yangberikut ini:

• AWSAntarmuka Baris Perintah• AWSSDK for .NET• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK for JavaScript• AWSSDK for PHP V3

206

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

DescribeSignalingChannelLayanan:Amazon Kinesis Video Streams

Mengembalikan informasi terbaru tentang saluran sinyal. Anda harus menentukan nama atau AmazonResource Name (ARN) dari saluran yang ingin Anda deskripsikan.

Minta Sintaks

POST /describeSignalingChannel HTTP/1.1Content-type: application/json

{ "ChannelARN": "string", "ChannelName": "string"}

Parameter Permintaan URI

Permintaan tidak menggunakan parameter URI apa pun.

Isi Permintaan

Permintaan menerima data berikut dalam format JSON.

ChannelARN (p. 208)

ARN dari saluran sinyal yang ingin Anda deskripsikan.

Jenis: String

Aturan 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]+

Diperlukan: TidakChannelName (p. 208)

Nama saluran sinyal yang ingin Anda deskripsikan.

Jenis: String

Aturan Panjang: Panjang minimum 1. Panjang maksimum 256.

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

Diperlukan: Tidak

Sintaksis Respons

HTTP/1.1 200Content-type: application/json

{ "ChannelInfo": { "ChannelARN": "string", "ChannelName": "string", "ChannelStatus": "string",

208

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

"ChannelType": "string", "CreationTime": number, "SingleMasterConfiguration": { "MessageTtlSeconds": number }, "Version": "string" }}

Elemen ResponsJika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200.

Layanan mengembalikan data berikut dalam format JSON.

ChannelInfo (p. 208)

Struktur yang merangkum metadata dan properti saluran sinyal yang ditentukan.

Tipe: Objek ChannelInfo (p. 308)

KesalahanUntuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

AccessDeniedException

Anda tidak memiliki izin yang diperlukan untuk melakukan operasi ini.

Kode Status HTTP: 401ClientLimitExceededException

Kinesis Video Streams telah mencekik permintaan karena Anda telah melampaui batas panggilan klienyang diizinkan. Coba buat panggilan nanti.

Kode Status HTTP: 400InvalidArgumentException

Nilai untuk parameter input ini tidak valid.

Kode Status HTTP: 400ResourceNotFoundException

Amazon Kinesis Video Streams tidak dapat menemukan aliran yang Anda tentukan.

Kode Status HTTP: 404

Lihat JugaUntuk informasi selengkapnya tentang penggunaan API di salah satu bahasaAWSSDK, lihat berikut ini:

• AWSAntarmuka Baris Perintah• AWSSDK for .NET• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDKJavaScript

209

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

DescribeStreamLayanan:Amazon Kinesis Video Streams

Mengembalikan informasi terbaru tentang aliran tertentu. Anda harus menentukan salahsatuStreamNameatauStreamARN.

Minta Sintaks

POST /describeStream HTTP/1.1Content-type: application/json

{ "StreamARN": "string", "StreamName": "string"}

Parameter Permintaan URI

Permintaan tidak menggunakan parameter URI apa pun.

Isi Permintaan

Permintaan menerima data berikut dalam format JSON.

StreamARN (p. 211)

Amazon Resource Name (ARN) pengaliran.

Jenis: String

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]+

Diperlukan: TidakStreamName (p. 211)

Nama pengaliran.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 256.

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

Diperlukan: Tidak

Sintaksis Respons

HTTP/1.1 200Content-type: application/json

{ "StreamInfo": { "CreationTime": number, "DataRetentionInHours": number, "DeviceName": "string",

211

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

"KmsKeyId": "string", "MediaType": "string", "Status": "string", "StreamARN": "string", "StreamName": "string", "Version": "string" }}

Elemen ResponsJika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200.

Layanan mengembalikan data berikut dalam format JSON.

StreamInfo (p. 211)

Sebuah objek yang menggambarkan sungai.

Tipe: Objek StreamInfo (p. 319)

KesalahanUntuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

ClientLimitExceededException

Kinesis Video Streams telah mencekik permintaan karena Anda telah melampaui batas panggilan klienyang diizinkan. Coba buat panggilan nanti.

Kode Status HTTP: 400InvalidArgumentException

Nilai untuk parameter input ini tidak valid.

Kode Status HTTP: 400NotAuthorizedException

Penelepon tidak diotorisasi untuk melakukan operasi ini.

Kode Status HTTP: 401ResourceNotFoundException

Amazon Kinesis Video Streams tidak dapat menemukan aliran yang Anda tentukan.

Kode Status HTTP: 404

Lihat JugaUntuk informasi selengkapnya tentang penggunaan API di salah satu bahasa khusus bahasaAWSSDK,lihat berikut ini:

• AWSAntarmuka Baris Perintah• AWSSDK for .NET• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2

212

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

GetDataEndpointLayanan:Amazon Kinesis Video Streams

Mendapat endpoint untuk aliran tertentu baik untuk membaca atau menulis. Gunakanendpoint ini dalam aplikasi Anda untuk membaca dari aliran yang ditentukan(menggunakanGetMediaatauGetMediaForFragmentListoperasi) atau menulis untuk itu(menggunakanPutMediaoperasi).

Note

Endpoint yang dikembalikan tidak memiliki nama API yang ditambahkan. Klien perlumenambahkan nama API ke endpoint yang dikembalikan.

Dalam permintaan, tentukan stream baik olehStreamNameatauStreamARN.

Minta Sintaks

POST /getDataEndpoint HTTP/1.1Content-type: application/json

{ "APIName": "string", "StreamARN": "string", "StreamName": "string"}

Parameter Permintaan URI

Permintaan tidak menggunakan parameter URI apa pun.

Isi Permintaan

Permintaan menerima data berikut dalam format JSON.

APIName (p. 214)

Nama aksi API untuk mendapatkan titik akhir.

Jenis: Rangkaian

Nilai Valid: PUT_MEDIA | GET_MEDIA | LIST_FRAGMENTS |GET_MEDIA_FOR_FRAGMENT_LIST | GET_HLS_STREAMING_SESSION_URL |GET_DASH_STREAMING_SESSION_URL | GET_CLIP | GET_IMAGES

Diperlukan: YaStreamARN (p. 214)

Amazon Resource Name (ARN) dari stream yang ingin Anda dapatkan titik akhir. Anda harusmenentukan parameter ini atauStreamNamedalam permintaan.

Jenis: String

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]+

Diperlukan: Tidak

214

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

StreamName (p. 214)

Nama stream yang ingin Anda dapatkan titik akhir. Anda harus menentukan parameter iniatauStreamARNdalam permintaan.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 256.

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

Diperlukan: Tidak

Sintaksis Respons

HTTP/1.1 200Content-type: application/json

{ "DataEndpoint": "string"}

Elemen ResponsJika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200.

Layanan mengembalikan data berikut dalam format JSON.

DataEndpoint (p. 215)

Nilai titik akhir. Untuk membaca data dari aliran atau menulis data ke dalamnya, tentukan titik akhir inidi aplikasi Anda.

Jenis: String

KesalahanUntuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

ClientLimitExceededException

Kinesis Video Streams telah mencekik permintaan karena Anda telah melampaui batas panggilan klienyang diizinkan. Coba buat panggilan nanti.

Kode Status HTTP: 400InvalidArgumentException

Nilai untuk parameter input ini tidak valid.

Kode Status HTTP: 400NotAuthorizedException

Penelepon tidak diotorisasi untuk melakukan operasi ini.

Kode Status HTTP: 401ResourceNotFoundException

Amazon Kinesis Video Streams tidak dapat menemukan aliran yang Anda tentukan.

215

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

GetSignalingChannelEndpointLayanan:Amazon Kinesis Video Streams

Menyediakan endpoint untuk saluran sinyal yang ditentukan untuk mengirim dan menerima pesan. APIini menggunakanSingleMasterChannelEndpointConfigurationparameter masukan, yang terdiridariProtocolsdanRoleproperti.

Protocolsdigunakan untuk menentukan mekanisme komunikasi. Misalnya, jika AndamenentukanWSSsebagai protokol, API ini menghasilkan endpoint websocket aman. Jika AndamenentukanHTTPSsebagai protokol, API ini menghasilkan endpoint HTTPS.

Rolemenentukan izin pesan. SEBUAHMASTERhasil peran dalam API ini menghasilkan titik akhir yangdapat digunakan klien untuk berkomunikasi dengan salah satu pemirsa di saluran. SEBUAHVIEWERhasilperan dalam API ini menghasilkan endpoint yang dapat digunakan klien untuk berkomunikasi hanyadenganMASTER.

Minta Sintaks

POST /getSignalingChannelEndpoint HTTP/1.1Content-type: application/json

{ "ChannelARN": "string", "SingleMasterChannelEndpointConfiguration": { "Protocols": [ "string" ], "Role": "string" }}

Parameter Permintaan URIPermintaan tidak menggunakan parameter URI apa pun.

Isi PermintaanPermintaan menerima data berikut dalam format JSON.

ChannelARN (p. 217)

Amazon Resource Name (ARN) dari saluran sinyal yang ingin Anda dapatkan endpoint.

Jenis: String

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]+

Diperlukan: YaSingleMasterChannelEndpointConfiguration (p. 217)

Sebuah struktur yang berisi konfigurasi endpoint untukSINGLE_MASTERjenis saluran.

Tipe: Objek SingleMasterChannelEndpointConfiguration (p. 317)

Diperlukan: Tidak

Sintaksis Respons

HTTP/1.1 200

217

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

Content-type: application/json

{ "ResourceEndpointList": [ { "Protocol": "string", "ResourceEndpoint": "string" } ]}

Elemen Respons

Jika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200.

Layanan mengembalikan data berikut dalam format JSON.

ResourceEndpointList (p. 217)

Daftar endpoint untuk saluran sinyal yang ditentukan.

Jenis: ArrayResourceEndpointListItem (p. 316)objek

Kesalahan

Untuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

AccessDeniedException

Anda tidak memiliki izin yang diperlukan untuk melakukan operasi ini.

Kode Status HTTP: 401ClientLimitExceededException

Kinesis Video Streams telah mencekik permintaan karena Anda telah melampaui batas panggilan klienyang diizinkan. Coba buat panggilan nanti.

Kode Status HTTP: 400InvalidArgumentException

Nilai untuk parameter input ini tidak valid.

Kode Status HTTP: 400ResourceInUseException

Sumber daya saat ini tidak tersedia untuk operasi ini. Sumber daya baru tidak dapat dibuat dengannama yang sama dengan sumber daya yang ada. Selain itu, sumber daya tidak dapat diperbarui ataudihapus kecuali mereka berada dalamACTIVEnegara.

Jika pengecualian ini dikembalikan, jangan menggunakannya untuk menentukan apakah sumber dayayang diminta sudah ada. Sebagai gantinya, disarankan Anda menggunakan API deskripsikan sumberdaya spesifik, misalnya,DescribeStreamuntuk streaming video.

Kode Status HTTP: 400ResourceNotFoundException

Amazon Kinesis Video Streams tidak dapat menemukan aliran yang Anda tentukan.

Kode Status HTTP: 404

218

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

ListSignalingChannelsLayanan:Amazon Kinesis Video Streams

Mengembalikan arrayChannelInfobenda. Setiap objek menggambarkan saluran sinyal. Untuk mengambilhanya saluran yang memenuhi kondisi tertentu, Anda dapat menentukanChannelNameCondition.

Minta Sintaks

POST /listSignalingChannels HTTP/1.1Content-type: application/json

{ "ChannelNameCondition": { "ComparisonOperator": "string", "ComparisonValue": "string" }, "MaxResults": number, "NextToken": "string"}

Parameter Permintaan URI

Permintaan tidak menggunakan parameter URI apa pun.

Isi Permintaan

Permintaan menerima data berikut dalam format JSON.

ChannelNameCondition (p. 220)

Opsional: Mengembalikan hanya saluran yang memenuhi kondisi tertentu.

Tipe: Objek ChannelNameCondition (p. 310)

Diperlukan: TidakMaxResults (p. 220)

Jumlah maksimum saluran yang akan dikembalikan dalam respons. Default adalah 500.

Jenis: Bulat

Rentang yang Valid: Nilai minimum 1. Nilai maksimum 10000.

Diperlukan: TidakNextToken (p. 220)

Jika Anda menentukan parameter ini, ketika hasil dariListSignalingChannelsoperasi terpotong,panggilan mengembalikanNextTokendalam respons. Untuk mendapatkan batch saluran lain, berikantoken ini dalam permintaan Anda berikutnya.

Jenis: String

Batasan Panjang: Panjang minimum 0. Panjang maksimum 512.

Pola: [a-zA-Z0-9+/=]*

Diperlukan: Tidak

220

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

Sintaksis Respons

HTTP/1.1 200Content-type: application/json

{ "ChannelInfoList": [ { "ChannelARN": "string", "ChannelName": "string", "ChannelStatus": "string", "ChannelType": "string", "CreationTime": number, "SingleMasterConfiguration": { "MessageTtlSeconds": number }, "Version": "string" } ], "NextToken": "string"}

Elemen Respons

Jika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200.

Layanan mengembalikan data berikut dalam format JSON.

ChannelInfoList (p. 221)

Susunan objek ChannelInfo.

Jenis: ArrayChannelInfo (p. 308)objekNextToken (p. 221)

Jika respon terpotong, panggilan mengembalikan elemen ini dengan token. Untuk mendapatkan batchaliran berikutnya, gunakan token ini di permintaan Anda berikutnya.

Jenis: String

Batasan Panjang: Panjang minimum 0. Panjang maksimum 512.

Pola: [a-zA-Z0-9+/=]*

Kesalahan

Untuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

AccessDeniedException

Anda tidak memiliki izin yang diperlukan untuk melakukan operasi ini.

Kode Status HTTP: 401ClientLimitExceededException

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

Kode Status HTTP: 400

221

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

ListStreamsLayanan:Amazon Kinesis Video Streams

Mengembalikan arrayStreamInfoobjek. Setiap objek menggambarkan aliran. Untuk mengambil hanyaaliran yang memenuhi kondisi tertentu, Anda dapat menentukanStreamNameCondition.

Minta Sintaks

POST /listStreams HTTP/1.1Content-type: application/json

{ "MaxResults": number, "NextToken": "string", "StreamNameCondition": { "ComparisonOperator": "string", "ComparisonValue": "string" }}

Parameter Permintaan URI

Permintaan tidak menggunakan parameter URI apa pun.

Isi Permintaan

Permintaan menerima data berikut dalam format JSON.

MaxResults (p. 223)

Jumlah maksimum aliran yang akan dikembalikan dalam respons. Default adalah 10.000.

Jenis: Bulat

Rentang yang Valid: Nilai minimum 1. Nilai maksimum 10000.

Diperlukan: TidakNextToken (p. 223)

Jika Anda menentukan parameter ini, ketika hasil dariListStreamsoperasi dipotong, panggilanmengembalikanNextTokendalam respons. Untuk mendapatkan batch aliran lain, berikan token inidalam permintaan Anda berikutnya.

Jenis: String

Batasan Panjang: Panjang minimum 0. Panjang maksimum 512.

Pola: [a-zA-Z0-9+/=]*

Diperlukan: TidakStreamNameCondition (p. 223)

Opsional: Mengembalikan hanya aliran yang memenuhi kondisi tertentu. Saat ini, Anda dapatmenentukan hanya awalan nama stream sebagai kondisi.

Tipe: Objek StreamNameCondition (p. 321)

Diperlukan: Tidak

223

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

Sintaksis Respons

HTTP/1.1 200Content-type: application/json

{ "NextToken": "string", "StreamInfoList": [ { "CreationTime": number, "DataRetentionInHours": number, "DeviceName": "string", "KmsKeyId": "string", "MediaType": "string", "Status": "string", "StreamARN": "string", "StreamName": "string", "Version": "string" } ]}

Elemen Respons

Jika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200.

Layanan mengembalikan data berikut dalam format JSON.

NextToken (p. 224)

Jika respon dipotong, panggilan mengembalikan elemen ini dengan token. Untuk mendapatkan batchaliran berikutnya, gunakan token ini di permintaan Anda berikutnya.

Jenis: String

Batasan Panjang: Panjang minimum 0. Panjang maksimum 512.

Pola: [a-zA-Z0-9+/=]*StreamInfoList (p. 224)

Susunan objek StreamInfo.

Jenis: ArrayStreamInfo (p. 319)objek

Kesalahan

Untuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

ClientLimitExceededException

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

Kode Status HTTP: 400InvalidArgumentException

Nilai untuk parameter input ini tidak valid.

Kode Status HTTP: 400

224

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

ListTagsForResourceLayanan:Amazon Kinesis Video Streams

Mengembalikan daftar tag yang terkait dengan saluran sinyal tertentu.

Minta Sintaks

POST /ListTagsForResource HTTP/1.1Content-type: application/json

{ "NextToken": "string", "ResourceARN": "string"}

Parameter Permintaan URI

Permintaan tidak menggunakan parameter URI apa pun.

Isi Permintaan

Permintaan menerima data berikut dalam format JSON.

NextToken (p. 226)

Jika Anda menentukan parameter ini dan hasil dariListTagsForResourceterpotong, responstermasuk token yang dapat Anda gunakan dalam permintaan berikutnya untuk mengambil batchberikutnya dari tag.

Jenis: String

Batasan Panjang: Panjang minimum 0. Panjang maksimum 512.

Pola: [a-zA-Z0-9+/=]*

Diperlukan: TidakResourceARN (p. 226)

Amazon Resource Name (ARN) dari saluran pensinyalan yang ingin Anda daftarkan.

Jenis: String

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]+

Diperlukan: Ya

Sintaksis Respons

HTTP/1.1 200Content-type: application/json

{ "NextToken": "string", "Tags": { "string" : "string"

226

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

}}

Elemen ResponsJika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200.

Layanan mengembalikan data berikut dalam format JSON.

NextToken (p. 226)

Jika Anda menentukan parameter ini dan hasil dariListTagsForResourceterpotong, responstermasuk token yang dapat Anda gunakan dalam permintaan berikutnya untuk mengambil seperangkattag berikutnya.

Jenis: String

Batasan Panjang: Panjang minimum 0. Panjang maksimum 512.

Pola: [a-zA-Z0-9+/=]*Tags (p. 226)

Peta kunci dan nilai-nilai tanda yang terkait dengan saluran sinyal tertentu.

Jenis: Peta string ke string

Entri Peta: Jumlah maksimum 50 item.

Batasan Panjang Kunci: Panjang minimum 1. Panjang maksimum 128.

Pola Kunci: ^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$

Batasan Panjang Nilai: Panjang minimum 0. Panjang maksimum 256.

Pola nilai: [\p{L}\p{Z}\p{N}_.:/=+\-@]*

KesalahanUntuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

AccessDeniedException

Anda tidak memiliki izin yang diperlukan untuk melakukan operasi ini.

Kode Status HTTP: 401ClientLimitExceededException

Kinesis Video Streams telah mencekik permintaan karena Anda telah melampaui batas panggilan klienyang diizinkan. Coba buat panggilan nanti.

Kode Status HTTP: 400InvalidArgumentException

Nilai untuk parameter input ini tidak valid.

Kode Status HTTP: 400ResourceNotFoundException

Amazon Kinesis Video Streams tidak dapat menemukan aliran yang Anda tentukan.

227

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

ListTagsForStreamLayanan:Amazon Kinesis Video Streams

Mengembalikan daftar tag yang terkait dengan aliran tertentu.

Dalam permintaan, Anda harus menentukan salah satuStreamNameatauStreamARN.

Minta Sintaks

POST /listTagsForStream HTTP/1.1Content-type: application/json

{ "NextToken": "string", "StreamARN": "string", "StreamName": "string"}

Parameter Permintaan URI

Permintaan tidak menggunakan parameter URI apa pun.

Isi Permintaan

Permintaan menerima data berikut dalam format JSON.

NextToken (p. 229)

Jika Anda menentukan parameter ini dan hasil dariListTagsForStreamPemanggilan terpotong,respons termasuk token yang dapat Anda gunakan dalam permintaan berikutnya untuk mengambilbatch tanda berikutnya.

Jenis: String

Batasan Panjang: Panjang minimum 0. Panjang maksimum 512.

Pola: [a-zA-Z0-9+/=]*

Diperlukan: TidakStreamARN (p. 229)

Amazon Resource Name (ARN) dari aliran yang ingin Anda cantumkan tanda.

Jenis: String

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]+

Diperlukan: TidakStreamName (p. 229)

Nama aliran yang ingin Anda cantumkan tanda.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 256.

229

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

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

Diperlukan: Tidak

Sintaksis Respons

HTTP/1.1 200Content-type: application/json

{ "NextToken": "string", "Tags": { "string" : "string" }}

Elemen ResponsJika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200.

Layanan mengembalikan data berikut dalam format JSON.

NextToken (p. 230)

Jika Anda menentukan parameter ini dan hasil dariListTagsPemanggilan terpotong, responstermasuk token yang dapat Anda gunakan dalam permintaan berikutnya untuk mengambil seperangkattanda berikutnya.

Jenis: String

Batasan Panjang: Panjang minimum 0. Panjang maksimum 512.

Pola: [a-zA-Z0-9+/=]*Tags (p. 230)

Peta kunci tanda dan nilai-nilai yang terkait dengan aliran tertentu.

Jenis: Peta string

Entri Peta: Jumlah maksimum 50 item.

Batasan Panjang Kunci: Panjang minimum 1. Panjang maksimum 128.

Pola Kunci: ^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$

Batasan Panjang Nilai: Panjang minimum 0. Panjang maksimum 256.

Pola nilai: [\p{L}\p{Z}\p{N}_.:/=+\-@]*

KesalahanUntuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

ClientLimitExceededException

Kinesis Video Streams telah mencekik permintaan karena Anda telah melampaui batas panggilan klienyang diizinkan. Coba buat panggilan nanti.

Kode Status HTTP: 400

230

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

InvalidArgumentException

Nilai untuk parameter input ini tidak valid.

Kode Status HTTP: 400InvalidResourceFormatException

FormatStreamARNtidak valid.

Kode Status HTTP: 400NotAuthorizedException

Penelepon tidak diotorisasi untuk melakukan operasi ini.

Kode Status HTTP: 401ResourceNotFoundException

Amazon Kinesis Video Streams tidak dapat menemukan aliran yang Anda tentukan.

Kode Status HTTP: 404

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API di salah satu bahasa tertentuAWSSDK, lihatberikut ini:

• AWSAntarmuka Baris Perintah• AWSSDK for .NET• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK untukJavaScript• AWSSDK for PHP V3• AWSSDK for Python• AWSSDK for Ruby V3

231

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

TagResourceLayanan:Amazon Kinesis Video Streams

Menambahkan satu tanda atau lebih ke saluran sinyal. SEBUAHmenandaiadalah pasangan nilaikunci (nilai bersifat opsional) yang dapat Anda tentukan dan tetapkanAWSsumber daya. Jika Andamenentukan tanda yang sudah ada, nilai tanda diganti dengan nilai yang Anda tentukan dalampermintaan. Untuk informasi selengkapnya, lihatMenggunakan Tag Alokasi Biayadi AWS Billing and CostManagementPanduan Pengguna Manajemen Biaya.

Minta Sintaks

POST /TagResource HTTP/1.1Content-type: application/json

{ "ResourceARN": "string", "Tags": [ { "Key": "string", "Value": "string" } ]}

Parameter Permintaan URIPermintaan tidak menggunakan parameter URI apa pun.

Isi PermintaanPermintaan menerima data berikut dalam format JSON.

ResourceARN (p. 232)

Amazon Resource Name (ARN) dari saluran sinyal yang ingin Anda tambahkan tanda.

Jenis: String

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]+

Diperlukan: YaTags (p. 232)

Daftar tag untuk diasosiasikan dengan saluran sinyal yang ditentukan. Setiap tanda adalah pasangannilai kunci.

Jenis: ArrayTag (p. 322)objek

Anggota Array: Jumlah minimum 1 item. Jumlah maksimum 50 item.

Diperlukan: Ya

Sintaksis Respons

HTTP/1.1 200

232

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

Elemen Respons

Jika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200 dengan isi HTTP kosong.

Kesalahan

Untuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

AccessDeniedException

Anda tidak memiliki izin yang diperlukan untuk melakukan operasi ini.

Kode Status HTTP: 401ClientLimitExceededException

Kinesis Video Streams telah mencekik permintaan karena Anda telah melampaui batas panggilan klienyang diizinkan. Coba buat panggilan nanti.

Kode Status HTTP: 400InvalidArgumentException

Nilai untuk parameter input ini tidak valid.

Kode Status HTTP: 400ResourceNotFoundException

Amazon Kinesis Video Streams tidak dapat menemukan aliran yang Anda tentukan.

Kode Status HTTP: 404TagsPerResourceExceededLimitException

Anda telah melampaui batas tag yang dapat Anda kaitkan dengan sumber daya. Aliran video Kinesisdapat mendukung hingga 50 tanda.

Kode Status HTTP: 400

Lihat Juga

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

• AWSAntarmuka Baris Perintah• AWSSDK for .NET• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK untukJavaScript• AWSSDK for PHP V3• AWSSDK for Python• AWSSDK for Ruby V3

233

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

TagStreamLayanan:Amazon Kinesis Video Streams

Menambahkan satu tag atau lebih ke stream. SEBUAHmenandaiadalah pasangan nilai kunci(nilainya bersifat opsional) yang dapat Anda tentukan dan tetapkan keAWSsumber daya. Jika Andamenentukan tanda yang sudah ada, nilai tanda diganti dengan nilai yang Anda tentukan dalampermintaan. Untuk informasi selengkapnya, lihatMenggunakan Tag Alokasi Biayadi AWS Billing and CostManagementPanduan Pengguna Manajemen Biaya.

Anda harus memberikan baikStreamNameatauStreamARN.

Operasi ini memerlukan izin untuk tindakan KinesisVideo:TagStream.

Aliran video Kinesis dapat mendukung hingga 50 tanda.

Minta Sintaks

POST /tagStream HTTP/1.1Content-type: application/json

{ "StreamARN": "string", "StreamName": "string", "Tags": { "string" : "string" }}

Parameter Permintaan URI

Permintaan tidak menggunakan parameter URI apa pun.

Isi Permintaan

Permintaan menerima data berikut dalam format JSON.

StreamARN (p. 234)

Amazon Resource Name (ARN) dari sumber daya yang ingin Anda tambahkan tanda atau tanda.

Jenis: String

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]+

Diperlukan: TidakStreamName (p. 234)

Nama stream yang ingin Anda tambahkan tanda atau tag.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 256.

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

Diperlukan: Tidak

234

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

Tags (p. 234)

Daftar tag untuk diasosiasikan dengan aliran yang ditentukan. Setiap tag adalah pasangan nilai kunci(nilainya bersifat opsional).

Jenis: Peta string

Entri Peta: Jumlah maksimum 50 item.

Batasan Panjang Kunci: Panjang minimum 1. Panjang maksimum 128.

Pola Kunci: ^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$

Batasan Panjang Nilai: Panjang minimum 0. Panjang maksimum 256.

Pola nilai: [\p{L}\p{Z}\p{N}_.:/=+\-@]*

Diperlukan: Ya

Sintaksis Respons

HTTP/1.1 200

Elemen Respons

Jika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200 dengan isi HTTP kosong.

Kesalahan

Untuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

ClientLimitExceededException

Kinesis Video Streams telah mencekik permintaan karena Anda telah melampaui batas panggilan klienyang diizinkan. Coba buat panggilan nanti.

Kode Status HTTP: 400InvalidArgumentException

Nilai untuk parameter input ini tidak valid.

Kode Status HTTP: 400InvalidResourceFormatException

Format dariStreamARNtidak valid.

Kode Status HTTP: 400NotAuthorizedException

Penelepon tidak diotorisasi untuk melakukan operasi ini.

Kode Status HTTP: 401ResourceNotFoundException

Amazon Kinesis Video Streams tidak dapat menemukan aliran yang Anda tentukan.

Kode Status HTTP: 404

235

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

TagsPerResourceExceededLimitException

Anda telah melampaui batas tag yang dapat Anda kaitkan dengan sumber daya. Aliran video Kinesisdapat mendukung hingga 50 tanda.

Kode Status HTTP: 400

Lihat Juga

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

• AWSAntarmuka Baris Perintah• AWSSDK for .NET• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK untukJavaScript• AWSSDK for PHP V3• AWSSDK for Python• AWSSDK for Ruby V3

236

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

UntagResourceLayanan:Amazon Kinesis Video Streams

Menghapus satu atau beberapa tanda dari saluran sinyal. Dalam permintaan, tentukan hanya kunci ataukunci tag; jangan tentukan nilainya. Jika Anda menentukan kunci tag yang tidak ada, itu diabaikan.

Minta Sintaks

POST /UntagResource HTTP/1.1Content-type: application/json

{ "ResourceARN": "string", "TagKeyList": [ "string" ]}

Parameter Permintaan URI

Permintaan tidak menggunakan parameter URI apa pun.

Isi Permintaan

Permintaan menerima data berikut dalam format JSON.

ResourceARN (p. 237)

Amazon Resource Name (ARN) dari saluran sinyal yang ingin Anda hapus tag-nya.

Jenis: String

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]+

Diperlukan: YaTagKeyList (p. 237)

Daftar kunci yang ingin Anda hapus.

Jenis: Array string

Anggota Array: Jumlah minimum 1 item. Jumlah maksimum 50 item.

Batasan Panjang: Panjang minimum 1. Panjang maksimum 128.

Pola: ^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$

Diperlukan: Ya

Sintaksis Respons

HTTP/1.1 200

Elemen Respons

Jika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200 dengan isi HTTP kosong.

237

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

Kesalahan

Untuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

AccessDeniedException

Anda tidak memiliki izin yang diperlukan untuk melakukan operasi ini.

Kode Status HTTP: 401ClientLimitExceededException

Kinesis Video Streams telah mencekik permintaan karena Anda telah melampaui batas panggilan klienyang diizinkan. Coba buat panggilan nanti.

Kode Status HTTP: 400InvalidArgumentException

Nilai untuk parameter input ini tidak valid.

Kode Status HTTP: 400ResourceNotFoundException

Amazon Kinesis Video Streams tidak dapat menemukan aliran yang Anda tentukan.

Kode Status HTTP: 404

Lihat Juga

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

• AWSAntarmuka Baris Perintah• AWSSDK for .NET• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK untukJavaScript• AWSSDK for PHP V3• AWSSDK for Python• AWSSDK for Ruby V3

238

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

UntagStreamLayanan:Amazon Kinesis Video Streams

Menghapus satu atau beberapa tanda dari aliran. Dalam permintaan, tentukan hanya kunci atau kunci tag;jangan tentukan nilainya. Jika Anda menentukan kunci tag yang tidak ada, itu diabaikan.

Dalam permintaan, Anda harus memberikanStreamNameatauStreamARN.

Minta Sintaks

POST /untagStream HTTP/1.1Content-type: application/json

{ "StreamARN": "string", "StreamName": "string", "TagKeyList": [ "string" ]}

Parameter Permintaan URI

Permintaan tidak menggunakan parameter URI apa pun.

Isi Permintaan

Permintaan menerima data berikut dalam format JSON.

StreamARN (p. 239)

Amazon Resource Name (ARN) dari aliran yang ingin Anda hapus tanda.

Jenis: String

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]+

Diperlukan: TidakStreamName (p. 239)

Nama aliran yang ingin Anda hapus tanda.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 256.

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

Diperlukan: TidakTagKeyList (p. 239)

Daftar kunci tanda yang ingin Anda hapus.

Jenis: Array string

Anggota Array: Jumlah minimum 1 item. Jumlah maksimum 50 item.

Batasan Panjang: Panjang minimum 1. Panjang maksimum 128.

239

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

Pola: ^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$

Diperlukan: Ya

Sintaksis Respons

HTTP/1.1 200

Elemen ResponsJika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200 dengan isi HTTP kosong.

KesalahanUntuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

ClientLimitExceededException

Kinesis Video Streams telah mencekik permintaan karena Anda telah melampaui batas panggilan klienyang diizinkan. Coba buat panggilan nanti.

Kode Status HTTP: 400InvalidArgumentException

Nilai untuk parameter input ini tidak valid.

Kode Status HTTP: 400InvalidResourceFormatException

Format dariStreamARNtidak valid.

Kode Status HTTP: 400NotAuthorizedException

Penelepon tidak diotorisasi untuk melakukan operasi ini.

Kode Status HTTP: 401ResourceNotFoundException

Amazon Kinesis Video Streams tidak dapat menemukan aliran yang Anda tentukan.

Kode Status HTTP: 404

Lihat JugaUntuk informasi selengkapnya tentang penggunaan API di salah satu bahasa khusus bahasaAWSSDK,lihat yang berikut ini:

• AWSAntarmuka Baris Perintah• AWSSDK for .NET• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK untukJavaScript• AWSSDK for PHP V3

240

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

• AWSSDK for Python• AWSSDK for Ruby V3

241

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

UpdateDataRetentionLayanan:Amazon Kinesis Video Streams

Meningkatkan atau mengurangi periode retensi data stream berdasarkan nilai yang Anda tentukan.Untuk menunjukkan apakah Anda ingin menambah atau mengurangi periode penyimpanan data,tentukanOperationparameter di bodi permintaan. Dalam permintaan tersebut, Anda harusmenentukanStreamNameatauStreamARN.

Note

Periode retensi yang Anda tetapkan menggantikan nilai saat ini.

Operasi ini memerlukan izin untuk tindakan KinesisVideo:UpdateDataRetention.

Mengubah periode retensi data memengaruhi data dalam aliran sebagai berikut:

• Jika periode penyimpanan data ditingkatkan, data yang ada akan disimpan untuk periode retensi baru.Misalnya, jika periode retensi data meningkat dari satu jam menjadi tujuh jam, semua data yang adadisimpan selama tujuh jam.

• Jika periode retensi data menurun, data yang ada akan disimpan untuk periode retensi baru. Misalnya,jika periode retensi data menurun dari tujuh jam menjadi satu jam, semua data yang ada disimpanselama satu jam, dan data apa pun yang lebih tua dari satu jam akan segera dihapus.

Minta Sintaks

POST /updateDataRetention HTTP/1.1Content-type: application/json

{ "CurrentVersion": "string", "DataRetentionChangeInHours": number, "Operation": "string", "StreamARN": "string", "StreamName": "string"}

Parameter Permintaan URIPermintaan tidak menggunakan parameter URI apa pun.

Isi PermintaanPermintaan menerima data berikut dalam format JSON.

CurrentVersion (p. 242)

Versi streaming yang periode retensinya ingin Anda ubah. Untuk mendapatkan versi, panggil salahsatuDescribeStreamatauListStreamsAPI

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum adalah 64.

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

Diperlukan: YaDataRetentionChangeInHours (p. 242)

Periode retensi, dalam jam. Nilai yang Anda tentukan menggantikan nilai saat ini. Nilai maksimumuntuk parameter ini adalah 87600 (sepuluh tahun).

242

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

Jenis: Bulat

Rentang yang Valid: Nilai minimum 1.

Diperlukan: YaOperation (p. 242)

Menunjukkan apakah Anda ingin menambah atau mengurangi periode retensi.

Jenis: Rangkaian

Nilai Valid: INCREASE_DATA_RETENTION | DECREASE_DATA_RETENTION

Diperlukan: YaStreamARN (p. 242)

Amazon Resource Name (ARN) dari streaming yang periode retensinya ingin Anda ubah.

Jenis: String

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]+

Diperlukan: TidakStreamName (p. 242)

Nama aliran yang periode retensinya ingin Anda ubah.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 256.

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

Diperlukan: Tidak

Sintaksis Respons

HTTP/1.1 200

Elemen ResponsJika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200 dengan isi HTTP kosong.

KesalahanUntuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

ClientLimitExceededException

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

Kode Status HTTP: 400InvalidArgumentException

Nilai untuk parameter input ini tidak valid.

243

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

Kode Status HTTP: 400NotAuthorizedException

Penelepon tidak diotorisasi untuk melakukan operasi ini.

Kode Status HTTP: 401ResourceInUseException

Sumber daya saat ini tidak tersedia untuk operasi ini. Sumber daya baru tidak dapat dibuat dengannama yang sama dengan sumber daya yang ada. Selain itu, sumber daya tidak dapat diperbarui ataudihapus kecuali mereka berada dalamACTIVEnegara.

Jika pengecualian ini dikembalikan, jangan menggunakannya untuk menentukan apakah sumber dayayang diminta sudah ada. Sebagai gantinya, disarankan Anda menggunakan API deskripsikan sumberdaya spesifik, misalnya,DescribeStreamuntuk streaming video.

Kode Status HTTP: 400ResourceNotFoundException

Amazon Kinesis Video Streams tidak dapat menemukan aliran yang Anda tentukan.

Kode Status HTTP: 404VersionMismatchException

Versi stream yang Anda tentukan bukan versi terbaru. Untuk mendapatkan versi terbaru,gunakanDescribeStreamAPI

Kode Status HTTP: 400

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API di salah satu bahasaAWSSDK, lihat berikut ini:

• AWSAntarmuka Baris Perintah• AWSSDK for .NET• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK untukJavaScript• AWSSDK for PHP V3• AWSSDK for Python• AWSSDK for Ruby V3

244

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

UpdateImageGenerationConfigurationLayanan:Amazon Kinesis Video Streams

PembaruanStreamInfodanImageProcessingConfigurationbidang.

Minta Sintaks

POST /updateImageGenerationConfiguration HTTP/1.1Content-type: application/json

{ "ImageGenerationConfiguration": { "DestinationConfig": { "DestinationRegion": "string", "Uri": "string" }, "Format": "string", "FormatConfig": { "string" : "string" }, "HeightPixels": number, "ImageSelectorType": "string", "SamplingInterval": number, "Status": "string", "WidthPixels": number }, "StreamARN": "string", "StreamName": "string"}

Parameter Permintaan URI

Permintaan tidak menggunakan parameter URI apa pun.

Isi Permintaan

Permintaan menerima data berikut dalam format JSON.

ImageGenerationConfiguration (p. 245)

Struktur yang berisi informasi yang diperlukan untuk pengiriman gambar KVS. Jika struktur null,konfigurasi akan dihapus dari sungai.

Tipe: Objek ImageGenerationConfiguration (p. 311)

Diperlukan: TidakStreamARN (p. 245)

Amazon Resource Name (ARN) Kinesis dari tempat Anda ingin memperbarui konfigurasi pembuatangambar. Anda harus menentukan salah satuStreamNameatauStreamARN.

Jenis: String

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]+

Diperlukan: Tidak

245

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

StreamName (p. 245)

Nama stream yang digunakan untuk memperbarui konfigurasi pembuatan gambar. Anda harusmenentukan salah satuStreamNameatauStreamARN.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 256.

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

Diperlukan: Tidak

Sintaksis Respons

HTTP/1.1 200

Elemen Respons

Jika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200 dengan isi HTTP kosong.

Kesalahan

Untuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

AccessDeniedException

Anda tidak memiliki izin yang diperlukan untuk melakukan operasi ini.

Kode Status HTTP: 401ClientLimitExceededException

Kinesis Video Streams telah mencekik permintaan karena Anda telah melampaui batas panggilan klienyang diizinkan. Coba buat panggilan nanti.

Kode Status HTTP: 400InvalidArgumentException

Nilai untuk parameter input ini tidak valid.

Kode Status HTTP: 400NoDataRetentionException

Retensi data Stream dalam jam sama dengan nol.

Kode Status HTTP: 400ResourceInUseException

Sumber daya saat ini tidak tersedia untuk operasi ini. Sumber daya baru tidak dapat dibuat dengannama yang sama dengan sumber daya yang ada. Selain itu, sumber daya tidak dapat diperbarui ataudihapus kecuali mereka berada dalamACTIVEnegara.

Jika pengecualian ini dikembalikan, jangan menggunakannya untuk menentukan apakah sumber dayayang diminta sudah ada. Sebagai gantinya, disarankan Anda menggunakan API deskripsikan sumberdaya spesifik, misalnya,DescribeStreamuntuk aliran video.

Kode Status HTTP: 400

246

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

UpdateNotificationConfigurationLayanan:Amazon Kinesis Video Streams

Memperbarui informasi notifikasi untuk streaming.

Minta Sintaks

POST /updateNotificationConfiguration HTTP/1.1Content-type: application/json

{ "NotificationConfiguration": { "DestinationConfig": { "Uri": "string" }, "Status": "string" }, "StreamARN": "string", "StreamName": "string"}

Parameter Permintaan URIPermintaan tidak menggunakan parameter URI apa pun.

Isi PermintaanPermintaan menerima data berikut dalam format JSON.

NotificationConfiguration (p. 248)

Struktur yang berisi informasi yang diperlukan untuk pemberitahuan. Jika struktur null, konfigurasi akandihapus dari sungai.

Tipe: Objek NotificationConfiguration (p. 314)

Diperlukan: TidakStreamARN (p. 248)

Amazon Resource Name (ARN) Kinesis video stream tempat Anda ingin memperbarui konfigurasinotifikasi. Anda harus menentukan salah satuStreamNameatauStreamARN.

Jenis: String

Batasan: 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]+

Diperlukan: TidakStreamName (p. 248)

Nama stream tempat memperbarui konfigurasi notifikasi. Anda harus menentukan salahsatuStreamNameatauStreamARN.

Jenis: String

Batasan: Panjang minimum 1. Panjang maksimum 256.

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

248

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

Diperlukan: Tidak

Sintaksis Respons

HTTP/1.1 200

Elemen Respons

Jika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200 dengan isi HTTP kosong.

Kesalahan

Untuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

AccessDeniedException

Anda tidak memiliki izin yang diperlukan untuk melakukan operasi ini.

Kode Status HTTP: 401ClientLimitExceededException

Kinesis Video Streams telah mencekik permintaan karena Anda telah melampaui batas panggilan klienyang diizinkan. Coba buat panggilan nanti.

Kode Status HTTP: 400InvalidArgumentException

Nilai untuk parameter input ini tidak valid.

Kode Status HTTP: 400NoDataRetentionException

Retensi data Stream dalam jam sama dengan nol.

Kode Status HTTP: 400ResourceInUseException

Sumber daya saat ini tidak tersedia untuk operasi ini. Sumber daya baru tidak dapat dibuat dengannama yang sama dengan sumber daya yang ada. Selain itu, sumber daya tidak dapat diperbarui ataudihapus kecuali mereka berada dalamACTIVEnegara.

Jika pengecualian ini dikembalikan, jangan menggunakannya untuk menentukan apakah sumber dayayang diminta sudah ada. Sebagai gantinya, disarankan Anda menggunakan API deskripsikan sumberdaya spesifik, misalnya,DescribeStreamuntuk streaming video.

Kode Status HTTP: 400ResourceNotFoundException

Amazon Kinesis Video Streams tidak dapat menemukan aliran yang Anda tentukan.

Kode Status HTTP: 404

Lihat Juga

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

249

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

UpdateSignalingChannelLayanan:Amazon Kinesis Video Streams

Memperbarui saluran sinyal yang ada. Ini adalah operasi asinkron dan membutuhkan waktu untukmenyelesaikannya.

JikaMessageTtlSecondsnilai diperbarui (baik meningkat atau dikurangi), itu hanya berlaku untuk pesanbaru yang dikirim melalui saluran ini setelah diperbarui. Pesan yang ada masih kedaluwarsa sesuaisebelumnyaMessageTtlSecondsnilai.

Minta Sintaks

POST /updateSignalingChannel HTTP/1.1Content-type: application/json

{ "ChannelARN": "string", "CurrentVersion": "string", "SingleMasterConfiguration": { "MessageTtlSeconds": number }}

Parameter Permintaan URI

Permintaan tidak menggunakan parameter URI apa pun.

Isi Permintaan

Permintaan menerima data berikut dalam format JSON.

ChannelARN (p. 251)

Amazon Resource Name (ARN) dari saluran pensinyalan yang ingin Anda perbarui.

Jenis: String

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]+

Diperlukan: YaCurrentVersion (p. 251)

Versi saluran sinyal saat ini yang ingin Anda perbarui.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum adalah 64.

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

Diperlukan: YaSingleMasterConfiguration (p. 251)

Struktur yang berisi konfigurasi untukSINGLE_MASTERjenis saluran sinyal yang ingin Anda perbarui.

Tipe: Objek SingleMasterConfiguration (p. 318)

251

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

Diperlukan: Tidak

Sintaksis Respons

HTTP/1.1 200

Elemen ResponsJika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200 dengan isi HTTP kosong.

KesalahanUntuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

AccessDeniedException

Anda tidak memiliki izin yang diperlukan untuk melakukan operasi ini.

Kode Status HTTP: 401ClientLimitExceededException

Kinesis Video Streams telah mencekik permintaan karena Anda telah melampaui batas panggilan klienyang diizinkan. Coba buat panggilan nanti.

Kode Status HTTP: 400InvalidArgumentException

Nilai untuk parameter input ini tidak valid.

Kode Status HTTP: 400ResourceInUseException

Sumber daya saat ini tidak tersedia untuk operasi ini. Sumber daya baru tidak dapat dibuat dengannama yang sama dengan sumber daya yang ada. Selain itu, sumber daya tidak dapat diperbarui ataudihapus kecuali mereka berada dalamACTIVEnegara.

Jika pengecualian ini dikembalikan, jangan menggunakannya untuk menentukan apakah sumber dayayang diminta sudah ada. Sebagai gantinya, disarankan Anda menggunakan API deskripsikan sumberdaya spesifik, misalnya,DescribeStreamuntuk streaming video.

Kode Status HTTP: 400ResourceNotFoundException

Amazon Kinesis Video Streams tidak dapat menemukan aliran yang Anda tentukan.

Kode Status HTTP: 404VersionMismatchException

Versi stream yang Anda tentukan bukan versi terbaru. Untuk mendapatkan versi terbaru,gunakanDescribeStreamAPI.

Kode Status HTTP: 400

Lihat JugaUntuk informasi selengkapnya tentang penggunaan API di salah satu spesifik bahasaAWSSDK, lihat yangberikut ini:

252

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

UpdateStreamLayanan:Amazon Kinesis Video Streams

Update metadata streaming, seperti nama perangkat dan jenis media.

Anda harus menyediakan nama aliran atau Amazon Resource Name (ARN) pengaliran.

Untuk memastikan bahwa Anda memiliki versi terbaru dari stream sebelum memperbaruinya, Andadapat menentukan versi stream. Kinesis Video Streams memberikan versi untuk setiap aliran. Saat Andamemperbarui stream, Kinesis Video Streams memberikan nomor versi baru. Untuk mendapatkan versistreaming terbaru, gunakanDescribeStreamAPI

UpdateStreamadalah operasi asinkron, dan membutuhkan waktu untuk menyelesaikannya.

Minta Sintaks

POST /updateStream HTTP/1.1Content-type: application/json

{ "CurrentVersion": "string", "DeviceName": "string", "MediaType": "string", "StreamARN": "string", "StreamName": "string"}

Parameter Permintaan URI

Permintaan tidak menggunakan parameter URI apa pun.

Isi Permintaan

Permintaan menerima data berikut dalam format JSON.

CurrentVersion (p. 254)

Versi stream yang metadatanya ingin Anda perbarui.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum adalah 64.

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

Diperlukan: YaDeviceName (p. 254)

Nama perangkat yang sedang menulis ke pengaliran.

Note

Dalam implementasi saat ini, Kinesis Video Streams tidak menggunakan nama ini.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 128.

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

254

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

Diperlukan: TidakMediaType (p. 254)

Jenis media stream. GunakanMediaTypeuntuk menentukan jenis konten yang berisi aliran kepadakonsumen sungai. Untuk informasi selengkapnya tentang tipe media, lihatJenis media. Jika Andamemilih untuk menentukanMediaType, lihatPersyaratan Penamaan.

Untuk memutar video di konsol, Anda harus menentukan jenis video yang benar. Misalnya, jika videodalam streaming adalah H.264, tentukanvideo/h264sebagaiMediaType.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 128.

Pola: [\w\-\.\+]+/[\w\-\.\+]+(,[\w\-\.\+]+/[\w\-\.\+]+)*

Diperlukan: TidakStreamARN (p. 254)

ARN dari metadata yang ingin Anda perbarui.

Jenis: String

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]+

Diperlukan: TidakStreamName (p. 254)

Nama aliran yang metadata ingin Anda perbarui.

Nama stream adalah pengenal untuk stream, dan harus unik untuk setiap akun dan wilayah.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 256.

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

Diperlukan: Tidak

Sintaksis Respons

HTTP/1.1 200

Elemen ResponsJika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200 dengan isi HTTP kosong.

KesalahanUntuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

ClientLimitExceededException

Kinesis Video Streams telah mencekik permintaan karena Anda telah melampaui batas panggilan klienyang diizinkan. Coba buat panggilan nanti.

255

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

Kode Status HTTP: 400InvalidArgumentException

Nilai untuk parameter input ini tidak valid.

Kode Status HTTP: 400NotAuthorizedException

Pemanggil tidak diotorisasi untuk melakukan operasi ini.

Kode Status HTTP: 401ResourceInUseException

Saat ini sumber daya tidak tersedia untuk operasi ini. Sumber daya baru tidak dapat dibuat dengannama yang sama dengan sumber daya yang ada. Selain itu, sumber daya tidak dapat diperbarui ataudihapus kecuali mereka berada dalamACTIVEnegara.

Jika pengecualian ini dikembalikan, jangan menggunakannya untuk menentukan apakah sumber dayayang diminta sudah ada. Sebagai gantinya, disarankan Anda menggunakan API deskripsikan sumberdaya spesifik, misalnya,DescribeStreamuntuk streaming video.

Kode Status HTTP: 400ResourceNotFoundException

Amazon Kinesis Video Streams tidak dapat menemukan aliran yang Anda tentukan.

Kode Status HTTP: 404VersionMismatchException

Versi stream yang Anda tentukan bukan versi terbaru. Untuk mendapatkan versi terbaru,gunakanDescribeStreamAPI

Kode Status HTTP: 400

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API di salah satu spesifik bahasaAWSSDK, lihat yangberikut ini:

• AWSAntarmuka Baris Perintah• AWSSDK for .NET• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDKJavaScript• AWSSDK for PHP V3• AWSSDK for Python• AWSSDK for Ruby V3

Arus Amazon Kinesis Video StreamsTindakan berikut didukung oleh Amazon Kinesis Video Streams Media:

• GetMedia (p. 258)

256

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

• PutMedia (p. 262)

257

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

GetMediaLayanan:Amazon Kinesis Video Streams Media

Gunakan API ini untuk mengambil konten media dari aliran video Kinesis. Dalam permintaan, Andamengidentifikasi nama stream atau stream Amazon Resource Name (ARN), dan bagian awal. KinesisVideo Streams kemudian mengembalikan aliran potongan dalam rangka dengan nomor fragmen.

Note

Anda harus terlebih dahulu memanggilGetDataEndpointAPI untuk mendapatkan titik akhir.Kemudian kirimkanGetMediapermintaan ke endpoint ini menggunakan—endpoint-url parameter.

Ketika Anda menempatkan data media (fragmen) pada stream, Kinesis Video Streams menyimpan setiapfragmen masuk dan metadata terkait dalam apa yang disebut “potongan.” Untuk informasi selengkapnya,lihatPutMedia. ParameterGetMediaAPI mengembalikan aliran potongan ini mulai dari potongan yang Andatentukan dalam permintaan.

Batasan berikut berlaku saat menggunakanGetMediaAPI:

• Klien dapat meneleponGetMediahingga lima kali per detik per aliran.• Kinesis Video Streams mengirimkan data media dengan kecepatan hingga 25 megabyte per detik (atau

200 megabit per detik) selamaGetMediasesi.

Note

Jika kesalahan dilemparkan setelah memanggil API media Kinesis Video Streams, selain kodestatus HTTP dan badan respons, itu mencakup potongan-potongan informasi berikut:

• x-amz-ErrorTypeHTTP header - berisi jenis kesalahan yang lebih spesifik selain apa kodestatus HTTP menyediakan.

• x-amz-RequestIdHeader HTTP — jika Anda ingin melaporkan masalah ke AWS, timdukungan dapat mendiagnosis masalah dengan lebih baik jika diberikan Id Permintaan.

Kode status HTTP danErrorTypeheader dapat dimanfaatkan untuk membuat keputusanterprogram tentang apakah kesalahan yang retry-mampu dan dalam kondisi apa, sertamemberikan informasi tentang tindakan apa programmer klien mungkin perlu mengambil untukberhasil mencoba lagi.Untuk informasi selengkapnya, lihatKesalahanbagian di bagian bawah topik ini, sertaKesalahanUmum.

Minta Sintaks

POST /getMedia HTTP/1.1Content-type: application/json

{ "StartSelector": { "AfterFragmentNumber": "string", "ContinuationToken": "string", "StartSelectorType": "string", "StartTimestamp": number }, "StreamARN": "string", "StreamName": "string"}

258

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

Parameter Permintaan URIPermintaan tidak menggunakan parameter URI apa pun.

Isi PermintaanPermintaan menerima data berikut dalam format JSON.

StartSelector (p. 258)

Mengidentifikasi potongan awal untuk mendapatkan dari aliran yang ditentukan.

Tipe: Objek StartSelector (p. 323)

Diperlukan: YaStreamARN (p. 258)

ARN dari aliran dari mana Anda ingin mendapatkan konten media. Jika Anda tidakmenentukanstreamARN, Anda harus menentukanstreamName.

Jenis: String

Batasan: 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]+

Diperlukan: TidakStreamName (p. 258)

Nama aliran video Kinesis dari mana Anda ingin mendapatkan konten media. Jika Anda tidakmenentukanstreamName, Anda harus menentukanstreamARN.

Jenis: String

Batasan: Panjang minimum 1. Panjang maksimum 256.

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

Diperlukan: Tidak

Sintaksis Respons

HTTP/1.1 200Content-Type: ContentType

Payload

Elemen ResponsJika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200.

Respons mengembalikan header HTTP berikut.

ContentType (p. 259)

Jenis konten media yang diminta.

Batasan: Panjang minimum 1. Panjang maksimum 128.

259

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

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

Respons mengembalikan yang berikut sebagai isi HTTP.

Payload (p. 259)

Payload Kinesis Video Streams kembali adalah urutan potongan dari aliran tertentu. Untuk informasiselengkapnya tentang potongannya, lihatPutMedia. Potongan yang Kinesis Video Streams kembalidiGetMediapanggilan juga mencakup tambahan Matroska (MKV) tag berikut:• AWS_KINESISVIDEO_CONTINUTION_TOKEN (UTF-8 string) - Jika AndaGetMediapanggilan

berakhir, Anda dapat menggunakan token kelanjutan ini dalam permintaan Anda berikutnya untukmendapatkan potongan berikutnya di mana permintaan terakhir dihentikan.

• AWS_KINESISVIDEO_MILLIS_BEHIND_NOW (UTF-8 string) - Aplikasi klien dapat menggunakannilai tag ini untuk menentukan seberapa jauh di belakang potongan dikembalikan dalam responadalah dari potongan terbaru di sungai.

• AWS_KINESISVIDEO_FRAGMENT_NUMBER - Nomor fragmen dikembalikan dalam potongan.• AWS_KINESISVIDEO_SERVER_TIMESTAMP - Server timestamp fragmen.• AWS_KINESISVIDEO_PRODUCER_TIMESTAMP - Produsen timestamp fragmen.

Tag berikut akan hadir jika terjadi kesalahan:• AWS_KINESISVIDEO_ERROR_CODE - Deskripsi string dari kesalahan yang

menyebabkanGetMediauntuk berhenti.• AWS_KINESISVIDEO_ERROR_ID: Kode integer dari kesalahan.

Kode kesalahannya adalah sebagai berikut:• 3002 - Kesalahan menulis ke sungai• 4000 - Fragmen yang diminta tidak ditemukan• 4500 - Akses ditolak untuk kunci KMS stream• 4501 - Kunci KMS Stream dinonaktifkan• 4502 - Kesalahan validasi pada kunci KMS stream• 4503 - kunci KMS ditentukan dalam aliran tidak tersedia• 4504 - Penggunaan kunci KMS yang tidak valid yang ditentukan dalam aliran• 4505 - Status kunci KMS yang tidak valid yang ditentukan dalam aliran• 4506 - Tidak dapat menemukan kunci KMS yang ditentukan dalam aliran• 5000 - Kesalahan internal

Kesalahan

Untuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

ClientLimitExceededException

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

Kode Status HTTP: 400ConnectionLimitExceededException

Kinesis Video Streams telah mencabut permintaan karena Anda telah melampaui batas koneksi klienyang diizinkan.

Kode Status HTTP: 400

260

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

InvalidArgumentException

Nilai untuk parameter input ini tidak valid.

Kode Status HTTP: 400InvalidEndpointException

Caller menggunakan endpoint yang salah untuk menulis data ke stream. Saat menerima pengecualiansemacam itu, pengguna harus memanggilGetDataEndpointbersamaAPINamesetPUT_MEDIAdangunakan endpoint dari respon untuk memanggil berikutnyaPutMediapanggilan.

Kode Status HTTP: 400NotAuthorizedException

Penelepon tidak diizinkan untuk melakukan operasi pada aliran yang diberikan, atau token telahkedaluwarsa.

Kode Status HTTP: 401ResourceNotFoundException

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

Kode Status HTTP: 404

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API di salah satu bahasaAWSSDK, lihat yang berikutini:

• AWSAntarmuka Baris Perintah• AWSSDK for .NET• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK untukJavaScript• AWSSDK for PHP V3• AWSSDK for Python• AWSSDK for Ruby V3

261

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

PutMediaLayanan:Amazon Kinesis Video Streams Media

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

Sebelum menggunakan API ini, Anda harus memanggilGetDataEndpointAPI untukmendapatkan titik akhir. Anda kemudian menentukan endpoint diPutMediapermintaan.

Dalam permintaan, Anda menggunakan header HTTP untuk memberikan informasi parameter, misalnya,nama stream, timestamp, dan apakah nilai timestamp mutlak atau relatif terhadap saat produser mulaimerekam. Anda menggunakan badan permintaan untuk mengirim data media. Kinesis Video Streamshanya 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 frame secara real timekarena menghasilkan mereka. Pendekatan ini meminimalkan latensi antara perekaman video dan datayang dikirim pada kawat. Ini disebut sebagai produsen terus menerus. Dalam hal ini, aplikasi konsumendapat membaca aliran secara real time atau bila diperlukan.

• Kirim data media secara offline (dalam batch): Misalnya, kamera tubuh mungkin merekam video selamaberjam-jam dan menyimpannya di perangkat. Kemudian, ketika Anda menghubungkan kamera ke portdocking, kamera dapat memulaiPutMediasesi untuk mengirim data ke aliran video Kinesis. Dalamskenario ini, latensi bukanlah masalah.

Saat menggunakan API ini, perhatikan pertimbangan berikut ini:

• Anda dapat menentukan streamName atau streamARN, tetapi bukan keduanya.• Untuk dapat memutar media di konsol atau melalui HLS, lacak 1 dari setiap fragmen harus berisi video

yang dikodekan h.264, CodeCid dalam metadata fragmen harus “V_MPEG/ISO/AVC”, dan metadatafragmen harus menyertakan data pribadi codec h.264 yang diformat AVCC. Opsional, track 2 dari setiapfragmen harus berisi audio yang dikodekan AAC, CodeCid dalam metadata fragmen harus “A_AAC”, danmetadata fragmen harus menyertakan data pribadi codec AAC.

• Anda mungkin merasa lebih mudah untuk menggunakan satu lama berjalanPutMediasesi dan mengirimsejumlah besar fragmen data media dalam payload. Untuk setiap fragmen yang diterima, Kinesis VideoStreams mengirimkan satu atau lebih pengakuan. Pertimbangan jaringan potensial dapat menyebabkanAnda untuk tidak mendapatkan semua pengakuan ini karena mereka dihasilkan.

• Anda dapat memilih beberapa berturut-turutPutMediasesi, masing-masing dengan fragmen yang lebihsedikit untuk memastikan bahwa Anda mendapatkan semua pengakuan dari layanan secara real time.

Note

Jika Anda mengirim data ke aliran yang sama pada beberapa simultanPutMediasesi, fragmenmedia mendapatkan interleaved di sungai. Anda harus memastikan bahwa ini OK dalam skenarioaplikasi Anda.

Batas berikut berlaku saat menggunakanPutMediaAPI:

• Klien dapat meneleponPutMediahingga 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

selamaPutMediasesi.

Perhatikan batasan berikut. Dalam kasus ini, Kinesis Video Streams mengirimkan kesalahan pengakuandalam respon.

262

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

• Fragmen yang memiliki kode waktu yang mencakup lebih dari 10 detik dan yang berisi lebih dari 50 MBdata tidak diperbolehkan.

• Fragmen yang berisi lebih dari tiga trek tidak diperbolehkan. Setiap frame di setiap fragmen harusmemiliki nomor trek yang sama dengan salah satu trek yang didefinisikan dalam header fragmen. Selainitu, setiap fragmen harus berisi setidaknya satu frame untuk setiap lagu yang didefinisikan dalam headerfragmen.

• Setiap fragmen harus berisi setidaknya satu frame untuk setiap track yang didefinisikan dalam metadatafragmen.

• Bingkai stempel waktu paling awal dalam fragmen harus setelah stempel waktu frame terbaru di fragmensebelumnya.

• Aliran MKV yang berisi lebih dari satu segmen MKV atau mengandung elemen MKV yang tidak diizinkan(sepertitrack*) juga menghasilkan kesalahan pengakuan.

Kinesis Video Streams menyimpan setiap fragmen masuk dan metadata terkait dalam apa yang disebut“potongan.” Metadata fragmen meliputi yang berikut ini:

• Header MKV yang disediakan pada awalPutMediapermintaan• Metadata spesifik aliran video Kinesis berikut untuk fragmen:

• server_timestamp- Timestamp ketika Kinesis Video Streams mulai menerima fragmen.• producer_timestamp- Timestamp, ketika produser mulai merekam fragmen. Kinesis Video Streams

menggunakan tiga buah informasi yang diterima dalam permintaan untuk menghitung nilai ini.• Nilai timecode fragmen yang diterima dalam tubuh permintaan bersama dengan fragmen.• Dua header permintaan:producerStartTimestamp(ketika produser mulai merekam)

danfragmentTimeCodeType(apakah timecode fragmen dalam payload adalah absolut ataurelatif).

Arus Kinesis Video Streams kemudian menghitungproducer_timestampuntuk fragmen sebagaiberikut:

JikafragmentTimeCodeTypeadalah relatif, maka

producer_timestamp=producerStartTimeStamp+ Kode waktu fragmen

JikafragmentTimeCodeTypeadalah mutlak, maka

producer_timestamp= fragmen timecode (dikonversi ke milidetik)• Nomor fragmen unik yang ditugaskan oleh Kinesis Video Streams.

Note

Ketika Anda membuatGetMediapermintaan, Kinesis Video Streams mengembalikan aliranpotongan ini. Klien dapat memproses metadata sesuai kebutuhan.

Note

Operasi ini hanya tersedia untuk AWS SDK for Java. Ini tidak didukung dalam AWS SDK untukbahasa lain.

Note

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

263

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

Note

Jika kesalahan dilemparkan setelah memanggil API media Kinesis Video Streams, selain kodestatus HTTP dan badan respons, itu mencakup potongan-potongan informasi berikut:

• x-amz-ErrorTypeHTTP header - berisi jenis kesalahan yang lebih spesifik selain apa kodestatus HTTP menyediakan.

• x-amz-RequestIdHeader HTTP — jika Anda ingin melaporkan masalah ke AWS, timdukungan dapat mendiagnosis masalah dengan lebih baik jika diberikan Id Permintaan.

Kode status HTTP dan kode status HTTP ErrorType header dapat dimanfaatkan untuk membuatkeputusan terprogram tentang apakah kesalahan yang retry-mampu dan dalam kondisi apa, sertamemberikan informasi tentang tindakan apa programmer klien mungkin perlu mengambil untukberhasil mencoba lagi.Untuk informasi selengkapnya, lihatKesalahanbagian di bagian bawah topik ini, sertaKesalahanUmum.

Minta Sintaks

POST /putMedia HTTP/1.1x-amzn-stream-name: StreamNamex-amzn-stream-arn: StreamARNx-amzn-fragment-timecode-type: FragmentTimecodeTypex-amzn-producer-start-timestamp: ProducerStartTimestamp

Payload

Parameter Permintaan URI

Permintaan menggunakan parameter URI berikut.

FragmentTimecodeType (p. 264)

Anda melewati nilai ini sebagaix-amzn-fragment-timecode-typeHeader HTTP.

Menunjukkan apakah timecodes dalam fragmen (payload, HTTP request body) adalah absolut ataurelatif terhadapproducerStartTimestamp. Kinesis Video Streams menggunakan informasi ini untukmenghitungproducer_timestampuntuk fragmen yang diterima dalam permintaan, seperti yangdijelaskan dalam ikhtisar API.

Nilai Valid: ABSOLUTE | RELATIVE

Diperlukan: YaProducerStartTimestamp (p. 264)

Anda melewati nilai ini sebagaix-amzn-producer-start-timestampHeader HTTP.

Ini adalah cap waktu produsen di mana produser mulai merekam media (bukan stempel waktufragmen tertentu dalam permintaan).

StreamARN (p. 264)

Anda melewati nilai ini sebagaix-amzn-stream-arnHeader HTTP.

Amazon Resource Name (ARN) Kinesis video stream tempat Anda ingin menulis konten media. JikaAnda tidak menentukanstreamARN, Anda harus menentukanstreamName.

Batasan Panjang: Panjang minimum 1. Panjang maksimum 1024.

264

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

Pola: arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+

StreamName (p. 264)

Anda melewati nilai ini sebagaix-amzn-stream-nameHeader HTTP.

Arus video Kinesis tempat Anda ingin menulis konten media. Jika Anda tidakmenentukanstreamName, Anda harus menentukanstreamARN.

Batasan Panjang: Panjang minimum 1. Panjang maksimum 256.

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

Isi Permintaan

Permintaan menerima data biner berikut.

Payload (p. 264)

Isi media untuk menulis ke aliran video Kinesis. Dalam implementasi saat ini, Kinesis Video Streamshanya mendukung format kontainer Matroska (MKV) dengan segmen MKV tunggal. Segmen dapatberisi satu cluster atau beberapa.

Note

Setiap cluster MKV memetakan ke fragmen aliran video Kinesis. Apapun durasi klaster yangAnda pilih 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 isi HTTP.

Payload (p. 265)

Setelah Kinesis Video Streams berhasil menerimaPutMediarequest, layanan memvalidasi headerpermintaan. Layanan kemudian mulai membaca payload dan pertama mengirimkan respon HTTP 200.

Layanan ini kemudian mengembalikan aliran yang berisi serangkaian objek JSON(Acknowledgementbenda) dipisahkan oleh baris baru. Pengakuan diterima pada koneksi yangsama di mana data media dikirim. Ada bisa banyak pengakuan untukPutMediapermintaan.MASINGAcknowledgementterdiri dari pasangan kunci-nilai berikut:• AckEventType- Jenis acara pengakuan mewakili.

• Buffer: Kinesis Video Streams telah mulai menerima fragmen. Kinesis Video Streams mengirimkanpengakuan Buffering pertama ketika byte pertama data fragmen diterima.

• Diterima: Kinesis Video Streams menerima seluruh fragmen. Jika Anda tidak mengkonfigurasialiran untuk menyimpan data, produser dapat berhenti buffering fragmen setelah menerimapengakuan ini.

265

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

• Bertahan: Kinesis Video Streams telah mempertahankan fragmen (misalnya, ke Amazon S3).Anda mendapatkan pengakuan ini jika Anda mengkonfigurasi aliran untuk mempertahankan data.Setelah Anda menerima pengakuan ini, produser dapat berhenti buffering fragmen.

• Kesalahan: Kinesis Video Streams mengalami kesalahan saat memproses fragmen. Anda dapatmeninjau kode kesalahan dan menentukan tindakan berikutnya.

• Diam: ParameterPutMediasedang berlangsung. Namun, Kinesis Video Streams saat ini tidakmenerima data. Kinesis Video Streams mengirimkan pengakuan ini secara berkala hingga 30detik setelah data terakhir diterima. Jika tidak ada data yang diterima dalam 30 detik, KinesisVideo Streams menutup permintaan tersebut.

Note

Pengakuan ini dapat membantu produsen menentukan apakahPutMediakoneksi masihhidup, bahkan jika tidak mengirimkan data apapun.

• FragmentTimeCode- Timecode fragmen yang pengakuan dikirim.

Unsur bisa hilang jikaAckEventTypeadalahDiam.• FragmentNumber- Nomor fragmen Kinesis Video Streams-dihasilkan yang pengakuan dikirim.• ErrorIddanErrorCode- JikaAckEventTypeadalah errorID, bidang ini menyediakan kode

kesalahan yang sesuai. Berikut ini adalah daftar ID kesalahan dan kode kesalahan dan pesankesalahan yang sesuai:• 4000 - STREAM_READ_ERROR - Kesalahan membaca aliran data.• 4001 - MAX_FRAGMENT_SIZE_REAPED - Ukuran fragmen lebih besar dari batas maksimum, 50

MB, diperbolehkan.• 4002 - MAX_FRAGMENT_DURATION_REAPED - Durasi fragmen lebih besar dari batas

maksimum, 10 detik, diperbolehkan.• 4003 - MAX_CONNECTION_DURATION_REAPED - Durasi koneksi lebih besar dari batas

maksimum yang diizinkan.• 4004 - FRAGMENT_TIMECODE_LESSER_THAN_PRELEARED - Timecode fragmen kurang

dari kode waktu kode waktu sebelumnya (dalamPutMediapanggilan, Anda tidak dapat mengirimfragmen rusak).

• 4005 - MORE_THAN_ALLOWED_TRACKS_FOUND - Lebih dari satu lagu ditemukan di MKV.(Tidak digunakan lagi)

• 4006 - INVALID_MKV_DATA - Gagal mengurai aliran input sebagai format MKV yang valid.• 4007 - INVALID_PRODUCER_TIMESTAMP - cap waktu produser tidak valid.• 4008 - STREAM_NOT_ACTIVE - Streaming tidak ada lagi (dihapus).• 4009 - FRAGMENT_METATA_LIMIT_REAPED - Batas metadata fragmen tercapai.• 4010 - TRACK_NUMBER_MISMATCH - Nomor trek dalam bingkai MKV tidak cocok dengan trek

di header MKV.• 4011 - FRAMES_MISSING_FOR_TRACK - Fragmen tidak mengandung frame untuk setidaknya

satu trek di header MKV.• 4500 - KMS_KEY_ACCESS_DENIED - Akses ke kunci KMS yang ditentukan aliran ditolak.• 4501 - KMS_KEY_DISABED - 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

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

266

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

• 5001 - ARCHIVAL_ERROR - Kinesis Video Streams gagal bertahan fragmen ke penyimpanandata.

Note

Produser, saat mengirim muatan untuk jangka panjangPutMediapermintaan, harusmembaca respon untuk pengakuan. Seorang produser mungkin menerima potonganpengakuan pada saat yang sama, karena buffering pada server proxy menengah. Seorangproduser yang ingin menerima pengakuan tepat waktu dapat mengirim lebih sedikit fragmendi masing-masingPutMediapermintaan.

Kesalahan

Untuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

ClientLimitExceededException

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

Kode Status HTTP: 400ConnectionLimitExceededException

Kinesis Video Streams telah mencabut permintaan karena Anda telah melampaui batas koneksi klienyang diizinkan.

Kode Status HTTP: 400InvalidArgumentException

Nilai untuk parameter input ini tidak valid.

Kode Status HTTP: 400InvalidEndpointException

Caller menggunakan endpoint yang salah untuk menulis data ke stream. Saat menerima pengecualiansemacam itu, pengguna harus meneleponGetDataEndpointbersamaAPINameset kePUT_MEDIAdangunakan endpoint dari respon untuk memanggil berikutnyaPutMediapanggilan.

Kode Status HTTP: 400NotAuthorizedException

Penelepon tidak diizinkan untuk melakukan operasi pada aliran yang diberikan, atau token telahkedaluwarsa.

Kode Status HTTP: 401ResourceNotFoundException

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

Kode Status HTTP: 404

Contoh

Format Pengakuan

Format pengakuan adalah sebagai berikut:

267

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

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

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API di salah satu spesifik bahasaAWSSDK, lihat yangberikut ini:

• AWSAntarmuka Baris Perintah• AWSSDK for .NET• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK for JavaScript• AWSSDK for PHP V3• AWSSDK for Python• AWSSDK for Ruby V3

Arus Amazon Kinesis Video StreamsTindakan berikut didukung oleh Amazon Kinesis Video Streams Archived Media:

• GetClip (p. 269)• GetDASHStreamingSessionURL (p. 273)• GetHLSStreamingSessionURL (p. 280)• GetImages (p. 288)• GetMediaForFragmentList (p. 293)• ListFragments (p. 297)

268

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

GetClipLayanan:Amazon Kinesis Video Streams Archived Media

Download file MP4 (klip) yang berisi arsip, media sesuai permintaan dari aliran video yang ditentukanselama rentang waktu yang ditentukan.

Keduanya StreamName dan parameter StreaMarn adalah opsional, tetapi Anda harus menentukan salahsatu StreamName atau StreaMarn saat memanggil operasi API ini.

Sebagai prasyarat untuk menggunakan GetClip API, Anda harus mendapatkan endpointmenggunakanGetDataEndpoint, menentukan GET_CLIP untuksangAPINameparameter.

Aliran video Amazon Kinesis memiliki persyaratan berikut untuk menyediakan data melalui MP4:

• Media harus berisi h.264 atau h.265 dikodekan video dan, opsional, AAC atau G.711 dikodekan audio.Secara khusus, ID codec track 1 harusV_MPEG/ISO/AVC(untuk h.264) atau V_MPEGH/ISO/HEVC(untuk H.265). Opsional, ID codec track 2 harusA_AAC(untuk AAC) atau A_MS/ACM (untuk G.711).

• Retensi data harus lebih besar dari 0.• Lacak video setiap fragmen harus berisi data pribadi codec dalam Advanced Video Coding (AVC) untuk

format H.264 dan HEVC untuk format H.265. Untuk informasi selengkapnya, lihatSpesifikasi MPEG-4ISO/IEC 14496-15. Untuk informasi tentang mengadaptasi data stream ke format tertentu, lihatFlagAdaptasi NAL.

• Trek audio (jika ada) dari setiap fragmen harus berisi data pribadi codec dalam format AAC (SpesifikasiAAC ISO/IEC 13818-7) atauFormat Gelombang MS.

Anda dapat memantau jumlah data keluar dengan memantauGetClip.OutgoingBytesAmazonCloudWatch metrik. Untuk informasi tentang penggunaan CloudWatch untuk memantau Kinesis VideoStreams, lihatArus Kinesis Video Streams. Untuk informasi harga, lihatHarga Arus Amazon Kinesis VideoStreamsdanHarga AWS. Biaya untuk data AWS keluar berlaku.

Minta Sintaks

POST /getClip HTTP/1.1Content-type: application/json

{ "ClipFragmentSelector": { "FragmentSelectorType": "string", "TimestampRange": { "EndTimestamp": number, "StartTimestamp": number } }, "StreamARN": "string", "StreamName": "string"}

Parameter Permintaan URIPermintaan tidak menggunakan parameter URI apa pun.

Isi PermintaanPermintaan menerima data berikut dalam format JSON.

ClipFragmentSelector (p. 269)

Kisaran waktu klip yang diminta dan sumber cap waktu.

269

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

Tipe: Objek ClipFragmentSelector (p. 325)

Diperlukan: YaStreamARN (p. 269)

Amazon Resource Name (ARN) dari stream yang akan diambil klip media.

Anda harus menentukan salah satu StreamName atau StreaMarn.

Jenis: String

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]+

Diperlukan: TidakStreamName (p. 269)

Nama stream yang untuknya klip media akan diambil.

Anda harus menentukan salah satu StreamName atau StreaMarn.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 256.

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

Diperlukan: Tidak

Sintaksis Respons

HTTP/1.1 200Content-Type: ContentType

Payload

Elemen ResponsJika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200.

Respons mengembalikan header HTTP berikut.

ContentType (p. 270)

Jenis konten media di klip yang diminta.

Batasan Panjang: Panjang minimum 1. Panjang maksimum 128.

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

Respons mengembalikan yang berikut sebagai isi HTTP.

Payload (p. 270)

File MP4 tradisional yang berisi klip media dari aliran video yang ditentukan. Output akan berisi 100MB pertama atau 200 fragmen pertama dari stempel waktu awal yang ditentukan. Untuk informasiselengkapnya, lihatBatasan Kinesis Video Streams.

270

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

Kesalahan

Untuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

ClientLimitExceededException

Kinesis Video Streams telah mencabut permintaan karena Anda telah melampaui batas. Coba buatpanggilan nanti. Untuk informasi tentang batas, lihatBatasan Kinesis Video Streams.

Kode Status HTTP: 400InvalidArgumentException

Parameter yang ditentukan melebihi pembatasannya, tidak didukung, atau tidak dapat digunakan.

Kode Status HTTP: 400InvalidCodecPrivateDataException

Data pribadi codec di setidaknya satu trek aliran video tidak berlaku untuk operasi ini.

Kode Status HTTP: 400InvalidMediaFrameException

Satu atau lebih frame dalam klip yang diminta tidak dapat diurai berdasarkan codec yang ditentukan.

Kode Status HTTP: 400MissingCodecPrivateDataException

Tidak ada data pribadi codec yang ditemukan di setidaknya satu trek streaming video.

Kode Status HTTP: 400NoDataRetentionException

Sesi streaming diminta untuk aliran yang tidak menyimpan data (yaitu,memilikiDataRetentionInHoursdari 0).

Kode Status HTTP: 400NotAuthorizedException

Kode Status Status: 403, pemanggil tidak berwenang untuk melakukan operasi pada aliran yangdiberikan, atau token telah kedaluwarsa.

Kode Status HTTP: 401ResourceNotFoundException

GetImagesakan membuang kesalahan ini ketika Kinesis Video Streams tidak dapat menemukanaliran yang Anda tentukan.

GetHLSStreamingSessionURLdanGetDASHStreamingSessionURLmembuang kesalahan ini jikasesi denganPlaybackModedariON_DEMANDatauLIVE_REPLAYdiminta untuk aliran yang tidak memilikifragmen dalam rentang waktu yang diminta, atau jika sesi denganPlaybackModedariLIVEdimintauntuk aliran yang tidak memiliki fragmen dalam 30 detik terakhir.

Kode Status HTTP: 404UnsupportedStreamMediaTypeException

Jenis media (misalnya, video h.264 atau h.265 atau audio ACC atau G.711) tidak dapat ditentukan dariID codec trek di fragmen pertama untuk sesi pemutaran. ID codec untuk track 1 harusV_MPEG/ISO/AVCdan, opsional, ID codec untuk track 2 harusA_AAC.

271

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

GetDASHStreamingSessionURLLayanan:Amazon Kinesis Video Streams Archived Media

Mengambil Streaming Adaptif Dinamis MPEG melalui HTTP (DASH) URL untuk pengaliran. Andakemudian dapat membuka URL di media player untuk melihat isi aliran.

KeduanyaStreamNamedanStreamARNparameter opsional, tetapi Anda harus menentukanbaikStreamNameatauStreamARNsaat memanggil operasi API ini.

Aliran video Amazon Kinesis memiliki persyaratan berikut untuk menyediakan data melalui MPEG-DASH:

• Media harus berisi h.264 atau h.265 dikodekan video dan, opsional, AAC atau G.711 dikodekan audio.Secara khusus, ID codec track 1 harusV_MPEG/ISO/AVC(untuk h.264) atau V_MPEGH/ISO/HEVC(untuk H.265). Opsional, ID codec track 2 harusA_AAC(untuk AAC) atau A_MS/ACM (untuk G.711).

• Retensi data harus lebih besar dari 0.• Lacak video setiap fragmen harus berisi data pribadi codec dalam Advanced Video Coding (AVC) untuk

format H.264 dan HEVC untuk format H.265. Untuk informasi selengkapnya, lihatSpesifikasi MPEG-4ISO/IEC 14496-15. Untuk informasi tentang mengadaptasi data stream ke format tertentu, lihatFlagAdaptasi NAL.

• Trek audio (jika ada) dari setiap fragmen harus berisi data pribadi codec dalam format AAC (SpesifikasiAAC ISO/IEC 13818-7) atauFormat Gelombang MS.

Prosedur berikut menunjukkan cara menggunakan MPEG-DASH dengan Kinesis Video Streams:

1. Dapatkan endpoint menggunakanGetDataEndPoint,menentukanGET_DASH_STREAMING_SESSION_URLuntukAPINameparameter.

2. Ambil URL MPEG-DASH menggunakanGetDASHStreamingSessionURL. Kinesis Video Streamsmenciptakan sesi streaming MPEG-DASH yang akan digunakan untuk mengakses konten dalam aliranmenggunakan protokol MPEG-DASH.GetDASHStreamingSessionURLmengembalikan URL yangdiautentikasi (yang mencakup token sesi terenkripsi) untuk sesi MPEG-DASHnyata(sumber daya akaryang dibutuhkan untuk streaming dengan MPEG-DASH).

Note

Jangan berbagi atau menyimpan token ini di mana entitas yang tidak sah dapat mengaksesnya.Token menyediakan akses ke konten aliran. Lindungi token dengan langkah-langkah yangsama yang Anda gunakan dengan kredensyal AWS Anda.

Media yang tersedia melalui manifes hanya terdiri dari aliran yang diminta, rentang waktu, dan format.Tidak ada data media lain (seperti frame di luar jendela yang diminta atau bitrate alternatif) yangtersedia.

3. Berikan URL (berisi token sesi terenkripsi) untuk manifes MPEG-DASH ke media player yangmendukung protokol MPEG-DASH. Kinesis Video Streams membuat fragmen inisialisasi dan fragmenmedia tersedia melalui URL manifes. Fragmen inisialisasi berisi data pribadi codec untuk streaming, dandata lain yang diperlukan untuk mengatur decoder video atau audio dan penyaji. Fragmen media berisibingkai video yang dikodekan atau sampel audio yang dikodekan.

4. Media player menerima URL otentikasi dan meminta metadata aliran dan data media secara normal.Ketika media player meminta data, panggilan tindakan berikut:• getDashManifest: Mengambil manifes MPEG DASH, yang berisi metadata untuk media yang ingin

Anda putar.• GetMP4initFragment: Mengambil fragmen inisialisasi MP4. Media player biasanya memuat fragmen

inisialisasi sebelum memuat fragmen media apa pun. Fragmen ini berisi”fytp“dan”moov“Atom MP4,dan atom anak yang dibutuhkan untuk menginisialisasi decoder media player.

273

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

Fragmen inisialisasi tidak sesuai dengan fragmen dalam aliran video Kinesis. Ini hanya berisi datapribadi codec untuk aliran dan trek masing-masing, yang media player perlu memecahkan kode framemedia.

• GetMP4MediaFragment: Mengambil fragmen media MP4. Fragmen inimengandung”moof“dan”mdat“Atom MP4 dan atom anak mereka, berisi bingkai media fragmen yangdikodekan dan cap waktu mereka.

Note

Setelah fragmen media pertama tersedia dalam sesi streaming, fragmen apa pun yangtidak mengandung data pribadi codec yang sama menyebabkan kesalahan dikembalikanketika fragmen media yang berbeda dimuat. Oleh karena itu, data pribadi codec tidak bolehberubah antara fragmen dalam sesi. Ini juga berarti bahwa sesi gagal jika fragmen dalamaliran berubah dari hanya memiliki video untuk memiliki audio dan video.

Data yang diambil dengan tindakan ini dapat ditagih. LihatHargauntuk detail.

Note

Untuk pembatasan yang berlaku untuk sesi MPEG-DASH, lihatBatas Arus Kinesis Video Streams.

Anda dapat memantau jumlah data yang dikonsumsi media player denganmemantauGetMP4MediaFragment.OutgoingBytesAmazon CloudWatch metrik. Untuk informasitentang penggunaan CloudWatch untuk memantau Kinesis Video Streams, lihatPemantauan Kinesis VideoStreams. Untuk informasi harga, lihatHarga Arus Amazon Kinesis Video StreamsdanHarga AWS. Biayauntuk sesi HLS dan data AWS keluar berlaku.

Untuk informasi selengkapnya tentang HLS, lihatStreaming Langsung HTTPpadaSitus pengembang Apple.

Important

Jika kesalahan dilemparkan setelah memanggil API media yang diarsipkan Kinesis VideoStreams, selain kode status HTTP dan badan respons, itu mencakup potongan-potonganinformasi berikut:

• x-amz-ErrorTypeHTTP header - berisi jenis kesalahan yang lebih spesifik selain apa kodestatus HTTP menyediakan.

• x-amz-RequestIdHeader HTTP — jika Anda ingin melaporkan masalah ke AWS, timdukungan dapat mendiagnosis masalah dengan lebih baik jika diberikan Id Permintaan.

Kode status HTTP dan ErrorType header dapat dimanfaatkan untuk membuat keputusanterprogram tentang apakah kesalahan yang retry-mampu dan dalam kondisi apa, sertamemberikan informasi tentang tindakan apa programmer klien mungkin perlu mengambil untukberhasil mencoba lagi.Untuk informasi selengkapnya, lihatKesalahanbagian di bagian bawah topik ini, sertaKesalahanUmum.

Minta Sintaks

POST /getDASHStreamingSessionURL HTTP/1.1Content-type: application/json

{ "DASHFragmentSelector": { "FragmentSelectorType": "string", "TimestampRange": { "EndTimestamp": number,

274

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

"StartTimestamp": number } }, "DisplayFragmentNumber": "string", "DisplayFragmentTimestamp": "string", "Expires": number, "MaxManifestFragmentResults": number, "PlaybackMode": "string", "StreamARN": "string", "StreamName": "string"}

Parameter Permintaan URI

Permintaan tidak menggunakan parameter URI apa pun.

Isi Permintaan

Permintaan menerima data berikut dalam format JSON.

DASHFragmentSelector (p. 274)

Rentang waktu fragmen yang diminta dan sumber cap waktu.

Parameter ini diperlukan jikaPlaybackModeadalahON_DEMANDatauLIVE_REPLAY. Parameterini bersifat opsional jika PlaybackMode adalah LIVE. JikaPlaybackModeadalahLIVE,yangFragmentSelectorTypedapat diatur, tapiTimestampRangetidak harus diatur.JikaPlaybackModeadalahON_DEMANDatauLIVE_REPLAYkeduanyaFragmentSelectorTypedanTimestampRangeharusdiatur.

Tipe: Objek DASHFragmentSelector (p. 327)

Diperlukan: TidakDisplayFragmentNumber (p. 274)

Fragmen diidentifikasi dalam file manifes berdasarkan nomor urut mereka dalam sesi.Jika DisplayFragmentNumber diatur keALWAYS, nomor fragmen Kinesis Video Streamsditambahkan ke setiap elemen S dalam file manifes dengan nama atribut “kvs:fn”.Nomor fragmen ini dapat digunakan untuk logging atau untuk digunakan dengan API lain(mis.GetMediadanGetMediaForFragmentList). Pemutar media MPEG-DASH khusus diperlukanuntuk memanfaatkan atribut khusus ini.

Nilai default-nya adalah NEVER.

Jenis: Rangkaian

Nilai Valid: ALWAYS | NEVER

Diperlukan: TidakDisplayFragmentTimestamp (p. 274)

Per spesifikasi MPEG-DASH, waktu wall-clock fragmen dalam file manifes dapat diturunkanmenggunakan atribut dalam manifes itu sendiri. Namun, biasanya, pemutar media yang kompatibeldengan MPEG-DASH tidak menangani kesenjangan dalam timeline media dengan benar. KinesisVideo Streams menyesuaikan timeline media dalam file manifes untuk mengaktifkan pemutaran mediadengan diskontinuitas. Oleh karena itu, waktu wall-clock yang berasal dari file manifes mungkin tidakakurat. Jika DisplayFragmentTimestamp diatur keALWAYS, timestamp fragmen akurat ditambahkan kesetiap elemen S dalam file manifes dengan nama atribut “kvs:ts”. Pemutar media MPEG-DASH khususdiperlukan untuk memanfaatkan atribut khusus ini.

275

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

Nilai default-nya adalah NEVER. SaatDASHFragmentSelector (p. 327)adalahSERVER_TIMESTAMP,cap waktu akan menjadi stempel waktu mulai server. Demikian pula,ketikaDASHFragmentSelector (p. 327)adalahPRODUCER_TIMESTAMP, cap waktu akan menjadi capwaktu produser awal.

Jenis: Rangkaian

Nilai Valid: ALWAYS | NEVER

Diperlukan: TidakExpires (p. 274)

Waktu dalam hitungan detik sampai sesi yang diminta berakhir. Nilai ini bisa antara 300 (5 menit) dan43200 (12 jam).

Saat sesi berakhir, tidak ada panggilan baruGetDashManifest,GetMP4InitFragment,atauGetMP4MediaFragmentdapat dibuat untuk sesi itu.

Defaultnya adalah 300 (5 menit).

Jenis: Bulat

Rentang yang Valid: Nilai minimum 300. Nilai maksimum 43200.

Diperlukan: TidakMaxManifestFragmentResults (p. 274)

Jumlah maksimum fragmen yang dikembalikan dalam manifes MPEG-DASH.

SaatPlaybackModeadalahLIVE, fragmen terbaru dikembalikan ke nilai ini.SaatPlaybackModeadalahON_DEMAND, fragmen tertua dikembalikan, sampai jumlah maksimum ini.

Ketika ada jumlah fragmen yang lebih tinggi yang tersedia dalam manifes MPEG-DASH langsung,pemutar video sering menyangga konten sebelum memulai pemutaran. Meningkatkan ukuran buffermeningkatkan latensi pemutaran, tetapi mengurangi kemungkinan rebuffering akan terjadi selamapemutaran. Kami merekomendasikan bahwa manifes MPEG-DASH hidup memiliki minimal 3 fragmendan maksimal 10 fragmen.

Default adalah 5 fragmen jikaPlaybackModeadalahLIVEatauLIVE_REPLAY, dan 1.000jikaPlaybackModeadalahON_DEMAND.

Nilai maksimum 1.000 fragmen sesuai dengan lebih dari 16 menit video di stream dengan fragmen 1detik, dan lebih dari 2 1/2 jam video di stream dengan fragmen 10 detik.

Jenis: Long

Rentang yang Valid: Nilai minimum 1. Nilai maksimum 5000.

Diperlukan: TidakPlaybackMode (p. 274)

Apakah akan mengambil live, live replay, atau diarsipkan, data sesuai permintaan.

Fitur dari tiga jenis sesi meliputi yang berikut ini:• LIVE : Untuk sesi jenis ini, manifes MPEG-DASH terus diperbarui dengan fragmen terbaru saat

tersedia. Sebaiknya media player mengambil manifes baru pada interval satu detik. Ketika jenissesi ini diputar di media player, antarmuka pengguna biasanya menampilkan notifikasi “live”, tanpakontrol scrubber untuk memilih posisi di jendela pemutaran yang akan ditampilkan.

276

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

Note

MasukLIVEmode, fragmen terbaru yang tersedia termasuk dalam manifes MPEG-DASH,bahkan jika ada celah antara fragmen (yaitu, jika fragmen hilang). Kesenjangan seperti inidapat menyebabkan media player untuk menghentikan atau menyebabkan lompatan dalampemutaran. Dalam mode ini, fragmen tidak ditambahkan ke manifes MPEG-DASH jika lebihtua dari fragmen terbaru dalam daftar putar. Jika fragmen yang hilang tersedia setelahfragmen berikutnya ditambahkan ke manifes, fragmen yang lebih tua tidak ditambahkan,dan celah tidak terisi.

• LIVE_REPLAY : Untuk sesi jenis ini, manifes MPEG-DASH diperbarui sama dengan cara diperbaruiuntukLIVEmodus kecuali bahwa itu dimulai dengan memasukkan fragmen dari waktu mulai yangdiberikan. Alih-alih fragmen ditambahkan saat tertelan, fragmen ditambahkan sebagai durasifragmen berikutnya berlalu. Misalnya, jika fragmen dalam sesi panjangnya dua detik, maka fragmenbaru ditambahkan ke manifes setiap dua detik. Mode ini berguna untuk dapat memulai pemutarandari saat acara terdeteksi dan melanjutkan media streaming langsung yang belum tertelan pada saatpembuatan sesi. Mode ini juga berguna untuk streaming media yang diarsipkan sebelumnya tanpadibatasi oleh 1.000 batas fragmen diON_DEMANDmode.

• ON_DEMAND : Untuk sesi jenis ini, manifes MPEG-DASH berisi semua fragmen untuk sesi, hingganomor yang ditentukan dalamMaxManifestFragmentResults. Manifes harus diambil hanyasekali untuk setiap sesi. Ketika jenis sesi ini dimainkan di media player, antarmuka penggunabiasanya menampilkan kontrol scrubber untuk memilih posisi di jendela pemutaran untukditampilkan.

Di semua mode pemutaran, jikaFragmentSelectorTypeadalahPRODUCER_TIMESTAMP, danjika ada beberapa fragmen dengan stempel waktu awal yang sama, fragmen yang memiliki nomorfragmen yang lebih besar (yaitu fragmen yang lebih baru) disertakan dalam manifes MPEG-DASH.Fragmen lainnya tidak termasuk. Fragmen yang memiliki cap waktu yang berbeda tetapi memilikidurasi tumpang tindih masih termasuk dalam manifes MPEG-DASH. Hal ini dapat menyebabkanperilaku tak terduga di media player.

Defaultnya adalah LIVE.

Jenis: Rangkaian

Nilai Valid: LIVE | LIVE_REPLAY | ON_DEMAND

Diperlukan: TidakStreamARN (p. 274)

Amazon Resource Name (ARN) yang akan diambil URL manifes MPEG-DASH.

Anda harus menentukanStreamNameatauStreamARN.

Jenis: String

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]+

Diperlukan: TidakStreamName (p. 274)

Nama stream untuk yang akan diambil URL manifes MPEG-DASH.

Anda harus menentukanStreamNameatauStreamARN.

Jenis: String

277

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

Batasan Panjang: Panjang minimum 1. Panjang maksimum 256.

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

Diperlukan: Tidak

Sintaksis Respons

HTTP/1.1 200Content-type: application/json

{ "DASHStreamingSessionURL": "string"}

Elemen ResponsJika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200.

Layanan mengembalikan data berikut dalam format JSON.

DASHStreamingSessionURL (p. 278)

URL (berisi token sesi) yang dapat digunakan media player untuk mengambil manifes MPEG-DASH.

Jenis: String

KesalahanUntuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

ClientLimitExceededException

Kinesis Video Streams telah mencabut permintaan karena Anda telah melampaui batas. Coba buatpanggilan nanti. Untuk informasi tentang batas, lihatBatas Arus Kinesis Video Streams.

Kode Status HTTP: 400InvalidArgumentException

Parameter yang ditentukan melebihi pembatasannya, tidak didukung, atau tidak dapat digunakan.

Kode Status HTTP: 400InvalidCodecPrivateDataException

Data pribadi codec di setidaknya satu trek aliran video tidak berlaku untuk operasi ini.

Kode Status HTTP: 400MissingCodecPrivateDataException

Tidak ada data pribadi codec yang ditemukan di setidaknya satu trek streaming video.

Kode Status HTTP: 400NoDataRetentionException

Sesi streaming diminta untuk aliran yang tidak menyimpan data (yaitu,memilikiDataRetentionInHours0).

Kode Status HTTP: 400

278

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

NotAuthorizedException

Kode Status: 403, pemanggil tidak berwenang untuk melakukan operasi pada aliran yang diberikan,atau token telah kedaluwarsa.

Kode Status HTTP: 401ResourceNotFoundException

GetImagesakan membuang kesalahan ini ketika Kinesis Video Streams tidak dapat menemukanaliran yang Anda tentukan.

GetHLSStreamingSessionURLdanGetDASHStreamingSessionURLmembuang kesalahan ini jikasesi denganPlaybackModedariON_DEMANDatauLIVE_REPLAYdiminta untuk aliran yang tidak memilikifragmen dalam rentang waktu yang diminta, atau jika sesi denganPlaybackModedariLIVEdimintauntuk aliran yang tidak memiliki fragmen dalam 30 detik terakhir.

Kode Status HTTP: 404UnsupportedStreamMediaTypeException

Jenis media (misalnya, video h.264 atau h.265 atau audio ACC atau G.711) tidak dapat ditentukan dariID codec trek di fragmen pertama untuk sesi pemutaran. ID codec untuk track 1 harusV_MPEG/ISO/AVCdan, opsional, ID codec untuk track 2 harusA_AAC.

Kode Status HTTP: 400

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API ini di salah satu spesifik bahasaAWSSDK, lihatyang berikut ini:

• AWSAntarmuka Baris Perintah• AWSSDK for .NET• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK for JavaScript• AWSSDK for PHP V3• AWSSDK for Python• AWSSDK for Ruby V3

279

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

GetHLSStreamingSessionURLLayanan:Amazon Kinesis Video Streams Archived Media

Mengambil URL Live Streaming (HLS) HTTP untuk pengaliran. Anda kemudian dapat membuka URL dibrowser atau pemutar media untuk melihat konten streaming.

KeduanyaStreamNamedanStreamARNparameter bersifat opsional, tetapi Anda harusmenentukanStreamNameatauStreamARNsaat menerapkan operasi API ini.

Streaming video Amazon Kinesis memiliki persyaratan berikut untuk menyediakan data melalui HLS:

• Untuk streaming video, media harus berisi video yang dikodekan H.264 atau H.265 dan, secara opsional,audio yang dikodekan AAC. Secara khusus, ID codec track 1 seharusnyaV_MPEG/ISO/AVC(untukH.264) atauV_MPEG/ISO/HEVC(untuk H.265). Secara opsional, ID codec track 2 seharusnyaA_AAC.Untuk streaming audio saja, ID codec trek 1 seharusnyaA_AAC.

• Retensi data harus lebih besar dari 0.• Trek video dari setiap fragmen harus berisi data pribadi codec dalam Advanced Video Coding (AVC)

untuk format H.264 atau HEVC untuk format H.265 (Spesifikasi MPEG-4 ISO/IEC 14496-15). Untukinformasi tentang mengadaptasi data stream ke format tertentu, lihatBendera Adaptasi NAL.

• Trek audio (jika ada) dari setiap fragmen harus berisi data pribadi codec dalam format AAC (SpesifikasiAAC ISO/IEC 13818-7).

Kinesis Video Streams Sesi HLS berisi fragmen dalam bentuk MPEG-4 yang terfragmentasi (juga disebutFMP4 atau CMAF) atau bentuk MPEG-2 (juga disebut potongan TS, yang juga didukung oleh spesifikasiHLS). Untuk informasi selengkapnya tentang tipe fragmen HLS, lihatSpesifikasi HLS.

Prosedur berikut menunjukkan cara menggunakan HLS dengan Kinesis Video Streams:

1. Dapatkan endpoint menggunakanGetDataEndpoint,menentukanGET_HLS_STREAMING_SESSION_URLuntukAPINameparameter.

2. Mengambil URL HLS menggunakanGetHLSStreamingSessionURL. Kinesis Video Streams membuatsesi streaming HLS untuk digunakan untuk mengakses konten dalam aliran menggunakan protokolHLS.GetHLSStreamingSessionURLmengembalikan URL yang diautentikasi (yang mencakup tokensesi terenkripsi) untuk HLS sesiDaftar putar utama(sumber daya root yang dibutuhkan untuk streamingdengan HLS).

Note

Jangan berbagi atau menyimpan token ini di mana entitas yang tidak sah dapat mengaksesnya.Token menyediakan akses ke konten aliran. Lindungi token dengan tindakan yang sama yangakan Anda gunakan dengan kredensyal AWS Anda.

Media yang tersedia melalui daftar putar hanya terdiri dari aliran, rentang waktu, dan format yangdiminta. Tidak ada data media lain (seperti bingkai di luar jendela yang diminta atau bitrate alternatif)yang tersedia.

3. Berikan URL (berisi token sesi terenkripsi) untuk daftar putar master HLS ke pemutar media yangmendukung protokol HLS. Kinesis Video Streams membuat daftar putar media HLS, fragmen inisialisasi,dan fragmen media tersedia melalui URL daftar putar utama. Fragmen inisialisasi berisi data pribadicodec untuk streaming, dan data lain yang diperlukan untuk mengatur decoder dan renderer video atauaudio. Fragmen media berisi bingkai video yang dikodekan H.264 atau sampel audio yang dikodekanAAC.

4. Pemutar media menerima URL yang diautentikasi dan meminta metadata aliran dan data media secaranormal. Saat pemutar media meminta data, ia memanggil tindakan berikut:• GetlMasterPlaylist: Mengambil daftar putar master HLS, yang berisi URL

untukGetHLSMediaPlaylisttindakan untuk setiap trek, dan metadata tambahan untuk pemutarmedia, termasuk estimasi bitrate dan resolusi.

280

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

• GetlMediaPlaylist: Mengambil playlist media HLS, yang berisi URL untuk mengakses fragmeninisialisasi MP4 denganGetMP4InitFragmenttindakan, dan URL untuk mengaksesfragmen media MP4 denganGetMP4MediaFragmenttindakan. Daftar putar media HLSjuga berisi metadata tentang aliran yang dibutuhkan pemain untuk memainkannya, sepertiapakahPlaybackModeadalahLIVEatauON_DEMAND. Daftar putar media HLS biasanya statis untuksesi denganPlaybackTypedariON_DEMAND. Daftar putar media HLS terus diperbarui denganfragmen baru untuk sesi denganPlaybackTypedariLIVE. Ada daftar putar media HLS berbeda untuktrek video dan trek audio (jika ada) yang berisi URL media MP4 untuk trek tertentu.

• DapatkanMP4InitFragment: Mengambil fragmen inisialisasi MP4. Media player biasanyamemuat fragmen inisialisasi sebelum memuat fragmen media apa pun. Fragmen iniberisi”fytp“dan”moov“Atom MP4, dan atom anak yang diperlukan untuk menginisialisasi dekoderpemutar media.

Fragmen inisialisasi tidak sesuai dengan fragmen dalam aliran video Kinesis. Ini hanya berisidata pribadi codec untuk aliran dan trek masing-masing, yang dibutuhkan pemutar media untukmemecahkan kode bingkai media.

• DapatkanMP4MediaFragment: Mengambil fragmen media MP4. Fragmen inimengandung”moof“dan”mdat“Atom MP4 dan atom anak mereka, berisi bingkai media fragmen yangdikodekan dan stempel waktu mereka.

Note

Untuk sesi streaming HLS, perubahan data pribadi codec (CPD) di-track didukung. Setelahfragmen media pertama tersedia dalam sesi streaming, fragmen dapat berisi perubahanCPD untuk setiap trek. Oleh karena itu, fragmen dalam sesi dapat memiliki resolusi, bit rate,atau informasi lain yang berbeda dalam CPD tanpa mengganggu pemutaran. Namun, setiapperubahan yang dibuat dalam nomor trek atau format codec track dapat mengembalikankesalahan ketika fragmen media yang berbeda dimuat. Misalnya, streaming akan gagaljika fragmen dalam aliran berubah dari hanya memiliki video menjadi audio dan video, ataujika trek audio AAC diubah ke trek audio ALIW. Untuk setiap sesi streaming, hanya 500perubahan CPD yang diizinkan.

Data yang diambil dengan tindakan ini dapat ditagih. Untuk informasi, lihatHarga.• GettsFragment: Mengambil fragmen MPEG TS yang berisi inisialisasi dan data media untuk semua

trek di sungai.

Note

JikaContainerFormatadalahMPEG_TS, API ini digunakan sebagaipenggantiGetMP4InitFragmentdanGetMP4MediaFragmentuntuk mengambil mediastreaming.

Data yang diambil dengan tindakan ini dapat ditagih. Untuk informasi selengkapnya, lihatHargaKinesis Video Streams.

URL sesi streaming tidak boleh dibagikan antar pemain. Layanan ini mungkin membatasi sesi jikabeberapa pemutar media membagikannya. Untuk batas koneksi, lihatBatas Kinesis Video Streams.

Anda dapat memantau jumlah data yang dikonsumsi media player denganmemantauGetMP4MediaFragment.OutgoingBytesAmazon CloudWatch metrik. Untuk informasitentang menggunakan CloudWatch untuk memantau Kinesis Video Streams, lihatPemantauan KinesisVideo Streams. Untuk informasi harga, lihatArus Amazon Kinesis Video StreamsdanHarga AWS. Biayauntuk sesi HLS dan data AWS keluar berlaku.

Untuk informasi selengkapnya tentang HLS, lihatStreaming Langsung HTTPpadaSitus Pengembang Apple.

281

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

Important

Jika kesalahan dilemparkan setelah menerapkan API media yang diarsipkan Kinesis VideoStreams, selain kode status HTTP dan badan respons, itu termasuk potongan informasi berikut:

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

• x-amz-RequestIdHeader HTTP — jika Anda ingin melaporkan masalah ke AWS, timdukungan dapat mendiagnosis masalah dengan lebih baik jika diberikan Id Permintaan.

Kode Status HTTP dan ErrorType header dapat dimanfaatkan untuk membuat keputusanterprogram tentang apakah kesalahan yang retry-mampu dan dalam kondisi apa, sertamemberikan informasi tentang apa tindakan programmer klien mungkin perlu mengambil untukberhasil mencoba lagi.Untuk informasi selengkapnya, lihatKesalahanbagian di bagian bawah topik ini, sertaKesalahanUmum.

Minta Sintaks

POST /getHLSStreamingSessionURL HTTP/1.1Content-type: application/json

{ "ContainerFormat": "string", "DiscontinuityMode": "string", "DisplayFragmentTimestamp": "string", "Expires": number, "HLSFragmentSelector": { "FragmentSelectorType": "string", "TimestampRange": { "EndTimestamp": number, "StartTimestamp": number } }, "MaxMediaPlaylistFragmentResults": number, "PlaybackMode": "string", "StreamARN": "string", "StreamName": "string"}

Parameter Permintaan URIPermintaan tidak menggunakan parameter URI apa pun.

Isi PermintaanPermintaan menerima data berikut dalam format JSON.

ContainerFormat (p. 282)

Menentukan format yang harus digunakan untuk kemasan media.MenentukanFRAGMENTED_MP4format kontainer paket media ke dalam fragmen MP4 (fMP4 atauCMAF). Ini adalah kemasan yang direkomendasikan karena ada overhead kemasan minimal. Opsiformat kontainer lainnya adalahMPEG_TS. HLS telah mendukung potongan MPEG TS sejak dirilis danterkadang merupakan satu-satunya kemasan yang didukung pada pemain HLS yang lebih tua. MPEGTS biasanya memiliki overhead kemasan 5-25 persen. Ini berarti MPEG TS biasanya membutuhkanbandwidth dan biaya 5-25 persen lebih banyak daripada FMP4.

Defaultnya adalah FRAGMENTED_MP4.

282

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

Jenis: Rangkaian

Nilai Valid: FRAGMENTED_MP4 | MPEG_TS

Diperlukan: TidakDiscontinuityMode (p. 282)

Menentukan kapan bendera menandai diskontinuitas antara fragmen ditambahkan ke daftar putarmedia.

Pemutar media biasanya membuat garis waktu konten media untuk diputar, berdasarkan stempelwaktu setiap fragmen. Ini berarti bahwa jika ada tumpang tindih atau celah antara fragmen (sepertitipikal jikaHLSFragmentSelector (p. 333)diatur keSERVER_TIMESTAMP), garis waktu pemutar mediajuga akan memiliki celah kecil di antara fragmen di beberapa tempat, dan akan menimpa bingkaidi tempat lain. Kesenjangan dalam garis waktu pemutar media dapat menyebabkan pemutaranterhenti dan tumpang tindih dapat menyebabkan pemutaran menjadi gelisah. Ketika ada benderadiskontinuitas antara fragmen, pemutar media diharapkan untuk mengatur ulang timeline, sehinggafragmen berikutnya dimainkan segera setelah fragmen sebelumnya.

Mode berikut didukung:• ALWAYS: penanda diskontinuitas ditempatkan di antara setiap fragmen dalam daftar putar media

HLS. Disarankan untuk menggunakan nilaiALWAYSjika cap waktu fragmen tidak akurat.• NEVER: tidak ada penanda diskontinuitas ditempatkan di mana saja. Disarankan untuk

menggunakan nilaiNEVERuntuk memastikan garis waktu pemutar media paling akurat memetakan kestempel waktu produsen.

• ON_DISCONTINUITY: penanda diskontinuitas ditempatkan di antara fragmen yang memiliki celahatau tumpang tindih lebih dari 50 milidetik. Untuk sebagian besar skenario pemutaran, disarankanuntuk menggunakan nilaiON_DISCONTINUITYsehingga garis waktu pemutar media hanya diaturulang ketika ada masalah signifikan dengan timeline media (misalnya fragmen yang hilang).

Default-nya adalahALWAYSketikaHLSFragmentSelector (p. 333)diatur keSERVER_TIMESTAMP,danNEVERketika diatur kePRODUCER_TIMESTAMP.

Jenis: Rangkaian

Nilai Valid: ALWAYS | NEVER | ON_DISCONTINUITY

Diperlukan: TidakDisplayFragmentTimestamp (p. 282)

Menentukan kapan stempel waktu awal fragmen harus disertakan dalam daftar putar media HLS.Biasanya, pemutar media melaporkan posisi playhead sebagai waktu relatif terhadap dimulainyafragmen pertama dalam sesi pemutaran. Namun, ketika stempel waktu mulai disertakan dalam daftarputar media HLS, beberapa pemutar media mungkin melaporkan playhead saat ini sebagai waktuabsolut berdasarkan cap waktu fragmen. Ini dapat berguna untuk menciptakan pengalaman pemutaranyang menunjukkan kepada pemirsa waktu jam dinding media.

Defaultnya adalah NEVER. SaatHLSFragmentSelector (p. 333)adalahSERVER_TIMESTAMP,stempel waktu akan menjadi stempel waktu mulai server. Demikian pula,kapanHLSFragmentSelector (p. 333)adalahPRODUCER_TIMESTAMP, stempel waktu akan menjadistempel waktu mulai produsen.

Jenis: Rangkaian

Nilai Valid: ALWAYS | NEVER

Diperlukan: Tidak

283

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

Expires (p. 282)

Waktu dalam hitungan detik hingga sesi yang diminta berakhir. Nilai ini bisa antara 300 (5 menit) dan43200 (12 jam).

Saat sesi berakhir, tidak ada panggilanbaruGetHLSMasterPlaylist,GetHLSMediaPlaylist,GetMP4InitFragment,GetMP4MediaFragment,atauGetTSFragmentdapat dibuat untuk sesi itu.

Defaultnya adalah 300 (5 menit).

Jenis: Bulat

Rentang yang Valid: Nilai minimum 300. Nilai maksimum 43200.

Diperlukan: TidakHLSFragmentSelector (p. 282)

Rentang waktu fragmen yang diminta dan sumber stempel waktu.

Parameter ini diperlukan jikaPlaybackModeadalahON_DEMANDatauLIVE_REPLAY. Parameterini bersifat opsional jika PlaybackMode adalah LIVE. JikaPlaybackModeadalahLIVE,yangFragmentSelectorTypedapat diatur, tetapiTimestampRangetidakboleh diatur. JikaPlaybackModeadalahON_DEMANDatauLIVE_REPLAY,KEDUANYAFragmentSelectorTypedanTimestampRangeharus diatur.

Tipe: Objek HLSFragmentSelector (p. 333)

Diperlukan: TidakMaxMediaPlaylistFragmentResults (p. 282)

Jumlah maksimum fragmen yang dikembalikan dalam daftar putar media HLS.

SaatPlaybackModeadalahLIVE, fragmen terbaru dikembalikan ke nilai ini.SaatPlaybackModeadalahON_DEMAND, fragmen tertua dikembalikan, hingga jumlah maksimum ini.

Ketika ada lebih banyak fragmen yang tersedia dalam daftar putar media HLS langsung, pemutarvideo sering menyangga konten sebelum memulai pemutaran. Meningkatkan ukuran buffermeningkatkan latensi pemutaran, tetapi mengurangi kemungkinan bahwa rebuffering akan terjadiselama pemutaran. Kami merekomendasikan bahwa daftar putar media HLS langsung memilikiminimal 3 fragmen dan maksimal 10 fragmen.

Default-nya adalah 5 fragmen jikaPlaybackModeadalahLIVEatauLIVE_REPLAY, dan 1.000jikaPlaybackModeadalahON_DEMAND.

Nilai maksimum 5.000 fragmen sesuai dengan lebih dari 80 menit video pada aliran dengan fragmen 1detik, dan lebih dari 13 jam video pada aliran dengan fragmen 10 detik.

Jenis: Long

Rentang yang Valid: Nilai minimum 1. Nilai maksimum 5000.

Diperlukan: TidakPlaybackMode (p. 282)

Apakah akan mengambil live, live replay, atau diarsipkan, on-demand data.

Fitur tiga tipe sesi tersebut meliputi:• LIVE : Untuk sesi jenis ini, daftar putar media HLS terus diperbarui dengan fragmen terbaru saat

tersedia. Kami menyarankan agar pemutar media mengambil daftar putar baru pada interval satu

284

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

detik. Saat jenis sesi ini diputar di pemutar media, antarmuka pengguna biasanya menampilkannotifikasi “langsung”, tanpa kontrol scrubber untuk memilih posisi di jendela pemutaran yang akanditampilkan.

Note

MasukLIVEmode, fragmen terbaru yang tersedia disertakan dalam daftar putar media HLS,bahkan jika ada celah antara fragmen (yaitu, jika fragmen hilang). Kesenjangan sepertiini dapat menyebabkan pemutar media berhenti atau menyebabkan lonjakan pemutaran.Dalam mode ini, fragmen tidak ditambahkan ke daftar putar media HLS jika lebih tua darifragmen terbaru di daftar putar. Jika fragmen yang hilang menjadi tersedia setelah fragmenberikutnya ditambahkan ke daftar putar, fragmen yang lebih tua tidak ditambahkan, dancelah tidak diisi.

• LIVE_REPLAY : Untuk sesi jenis ini, daftar putar media HLS diperbarui sama dengan caradiperbaruiLIVEmodus kecuali bahwa itu dimulai dengan memasukkan fragmen dari waktu mulaiyang diberikan. Alih-alih fragmen ditambahkan saat dicerna, fragmen ditambahkan saat durasifragmen berikutnya berlalu. Misalnya, jika fragmen dalam sesi berdurasi dua detik, maka fragmenbaru ditambahkan ke daftar putar media setiap dua detik. Mode ini berguna untuk dapat memulaipemutaran sejak suatu peristiwa terdeteksi dan melanjutkan media streaming langsung yang belumtertelan pada saat pembuatan sesi. Mode ini juga berguna untuk mengalirkan media yang diarsipkansebelumnya tanpa dibatasi oleh batas fragmen 1.000 diON_DEMANDmodus.

• ON_DEMAND : Untuk sesi jenis ini, daftar putar media HLS berisi semua fragmen untuk sesi, hingganomor yang ditentukan dalamMaxMediaPlaylistFragmentResults. Daftar putar harus diambilhanya sekali untuk setiap sesi. Saat jenis sesi ini diputar di pemutar media, antarmuka penggunabiasanya menampilkan kontrol scrubber untuk memilih posisi di jendela pemutaran yang akanditampilkan.

Dalam semua mode pemutaran, jikaFragmentSelectorTypeadalahPRODUCER_TIMESTAMP, danjika ada beberapa fragmen dengan stempel waktu awal yang sama, fragmen yang memiliki nomorfragmen terbesar (yaitu fragmen terbaru) disertakan dalam daftar putar media HLS. Fragmen lainnyatidak termasuk. Fragmen yang memiliki cap waktu berbeda tetapi memiliki durasi yang tumpang tindihmasih termasuk dalam daftar putar media HLS. Hal ini dapat menyebabkan perilaku tak terduga dipemutar media.

Defaultnya adalah LIVE.

Jenis: Rangkaian

Nilai Valid: LIVE | LIVE_REPLAY | ON_DEMAND

Diperlukan: TidakStreamARN (p. 282)

Amazon Resource Name (ARN) dari pengaliran yang akan diambil URL playlist master HLS.

Anda harus menentukanStreamNameatauStreamARN.

Jenis: String

Aturan 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]+

Diperlukan: TidakStreamName (p. 282)

Nama pengaliran yang akan diambil URL playlist master HLS.

285

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

Anda harus menentukanStreamNameatauStreamARN.

Jenis: String

Aturan Panjang: Panjang minimum 1. Panjang maksimum 256.

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

Diperlukan: Tidak

Sintaksis Respons

HTTP/1.1 200Content-type: application/json

{ "HLSStreamingSessionURL": "string"}

Elemen Respons

Jika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200.

Layanan mengembalikan data berikut dalam format JSON.

HLSStreamingSessionURL (p. 286)

URL (berisi token sesi) yang dapat digunakan pemutar media untuk mengambil daftar putar masterHLS.

Jenis: String

Kesalahan

Untuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

ClientLimitExceededException

Kinesis Video Streams telah mencekik permintaan karena Anda telah melampaui batas. Coba buatpanggilan nanti. Untuk informasi tentang batas, lihatBatas Kinesis Video Streams.

Kode Status HTTP: 400InvalidArgumentException

Parameter yang ditentukan melebihi pembatasannya, tidak didukung, atau tidak dapat digunakan.

Kode Status HTTP: 400InvalidCodecPrivateDataException

Data pribadi codec di setidaknya salah satu trek aliran video tidak valid untuk operasi ini.

Kode Status HTTP: 400MissingCodecPrivateDataException

Tidak ada data pribadi codec yang ditemukan di setidaknya satu trek aliran video.

Kode Status HTTP: 400

286

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

NoDataRetentionException

Sesi streaming diminta untuk aliran yang tidak menyimpan data (yaitu,memilikiDataRetentionInHoursdari 0).

Kode Status HTTP: 400NotAuthorizedException

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

Kode Status HTTP: 401ResourceNotFoundException

GetImagesakan membuang kesalahan ini ketika Kinesis Video Streams tidak dapat menemukanaliran yang Anda tentukan.

GetHLSStreamingSessionURLdanGetDASHStreamingSessionURLmembuang kesalahan ini jikasesi denganPlaybackModedariON_DEMANDatauLIVE_REPLAYdiminta untuk aliran yang tidak memilikifragmen dalam rentang waktu yang diminta, atau jika sesi denganPlaybackModedariLIVEdimintauntuk aliran yang tidak memiliki fragmen dalam 30 detik terakhir.

Kode Status HTTP: 404UnsupportedStreamMediaTypeException

Jenis media (misalnya, video h.264 atau h.265 atau audio ACC atau G.711) tidak dapat ditentukan dariID codec trek di fragmen pertama untuk sesi pemutaran. ID codec untuk track 1 seharusnyaV_MPEG/ISO/AVCdan, secara opsional, ID codec untuk track 2 seharusnyaA_AAC.

Kode Status HTTP: 400

Lihat Juga

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

• AWSAntarmuka Baris Perintah• AWSSDK for .NET• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK untuk JavaScript• AWSSDK for PHP V3• AWSSDK for Python• AWSSDK for Ruby V3

287

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

GetImagesLayanan:Amazon Kinesis Video Streams Archived Media

Mengambil daftar Gambar yang sesuai dengan setiap timestamp untuk rentang waktu tertentu, intervalsampling, dan konfigurasi format gambar.

Minta Sintaks

POST /getImages HTTP/1.1Content-type: application/json

{ "EndTimestamp": number, "Format": "string", "FormatConfig": { "string" : "string" }, "HeightPixels": number, "ImageSelectorType": "string", "MaxResults": number, "NextToken": "string", "SamplingInterval": number, "StartTimestamp": number, "StreamARN": "string", "StreamName": "string", "WidthPixels": number}

Parameter Permintaan URI

Permintaan tidak menggunakan parameter URI apa pun.

Isi Permintaan

Permintaan menerima data berikut dalam format JSON.

EndTimestamp (p. 288)

Akhir timestamp untuk berbagai gambar yang akan dihasilkan.

Jenis: Timestamp

Diperlukan: YaFormat (p. 288)

Format yang akan digunakan untuk mengkodekan gambar.

Jenis: Rangkaian

Nilai Valid: JPEG | PNG

Diperlukan: YaFormatConfig (p. 288)

Daftar struktur pasangan kunci-nilai yang berisi parameter tambahan yang dapat diterapkanketika gambar dihasilkan. ParameterFormatConfigkuncinya adalahJPEGQuality, yangmenunjukkan kunci kualitas JPEG yang akan digunakan untuk menghasilkan gambar.ParameterFormatConfignilai menerima ints dari 1 sampai 100. Jika nilainya 1, gambar akandihasilkan dengan kualitas kurang dan kompresi terbaik. Jika nilainya 100, gambar akan dihasilkan

288

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

dengan kualitas terbaik dan kompresi yang lebih sedikit. Jika tidak ada nilai yang disediakan, nilaidefaultJPEGQualitykunci akan diatur ke 80.

Jenis: Peta string ke string

Entri Peta: Jumlah maksimum 1 item.

Kunci yang valid: JPEGQuality

Batasan Panjang Nilai: Panjang minimum 0. Panjang maksimum 256.

Pola nilai: ^[a-zA-Z_0-9]+

Diperlukan: TidakHeightPixels (p. 288)

Ketinggian gambar output yang digunakan bersama denganWidthPixelsparameter. SaatkeduanyaHeightPixelsdanWidthPixelsparameter disediakan, gambar akan diregangkan agarsesuai dengan rasio aspek yang ditentukan. Jika sajaHeightPixelsdisediakan, rasio aspek aslinyaakan digunakan untuk menghitungWidthPixelsRasio. Jika parameter tidak disediakan, ukurangambar asli akan dikembalikan.

Jenis: Bulat

Rentang yang Valid: Nilai minimum 1. Nilai maksimum 2160.

Diperlukan: TidakImageSelectorType (p. 288)

Asal Server atau Produser timestamps untuk digunakan untuk menghasilkan gambar.

Jenis: Rangkaian

Nilai Valid: PRODUCER_TIMESTAMP | SERVER_TIMESTAMP

Diperlukan: YaMaxResults (p. 288)

Jumlah maksimum gambar yang dikembalikan oleh API.

Note

Batas default adalah 100 gambar per respons API. Hasil tambahan akan dipaginasi.

Jenis: Long

Rentang yang Valid: Nilai minimum 1. Nilai maksimum 100.

Diperlukan: TidakNextToken (p. 288)

Sebuah token yang menentukan di mana untuk memulai paginating set berikutnya Images. IniadalahGetImages:NextTokendari respons yang terpotong sebelumnya.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 4096.

Pola: [a-zA-Z0-9+/]+={0,2}

289

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

Diperlukan: TidakSamplingInterval (p. 288)

Interval waktu dalam milidetik (ms) di mana gambar perlu dihasilkan dari sungai. Nilai minimumyang bisa diberikan adalah 3000 ms. Jika rentang timestamp kurang dari interval sampling, GambardaristartTimestampakan dikembalikan jika tersedia.

Jenis: Bulat

Rentang yang Valid: Nilai minimum 3000. Nilai maksimum 20000.

Diperlukan: YaStartTimestamp (p. 288)

Titik awal dari mana gambar harus dihasilkan. IniStartTimestampharus berada dalam kisaraninklusif stempel waktu untuk gambar yang akan dikembalikan.

Jenis: Timestamp

Diperlukan: YaStreamARN (p. 288)

Amazon Resource Name (ARN) dari aliran yang akan diambil gambar. Anda harus menentukan salahsatuStreamNameatauStreamARN.

Jenis: String

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]+

Diperlukan: TidakStreamName (p. 288)

Nama stream untuk mengambil gambar. Anda harus menentukan salahsatuStreamNameatauStreamARN.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 256.

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

Diperlukan: TidakWidthPixels (p. 288)

Lebar gambar output yang digunakan bersama denganHeightPixelsparameter. SaatkeduanyaWidthPixelsdanHeightPixelsparameter disediakan, gambar akan diregangkan agarsesuai dengan rasio aspek yang ditentukan. Jika sajaWidthPixelsparameter disediakan atau jikahanyaHeightPixelsdisediakan, aValidationExceptionakan dilemparkan. Jika parameter tidakdisediakan, ukuran gambar asli dari aliran akan dikembalikan.

Jenis: Bulat

Rentang yang Valid: Nilai minimum 1. Nilai maksimum 3840.

Diperlukan: Tidak

290

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

Sintaksis Respons

HTTP/1.1 200Content-type: application/json

{ "Images": [ { "Error": "string", "ImageContent": "string", "TimeStamp": number } ], "NextToken": "string"}

Elemen Respons

Jika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200.

Layanan mengembalikan data berikut dalam format JSON.

Images (p. 291)

Daftar gambar yang dihasilkan dari aliran video. Jika tidak ada media yang tersedia untuk timestampyang diberikan,NO_MEDIAkesalahan akan tercantum dalam output. Jika terjadi kesalahan saat citrasedang dihasilkan,MEDIA_ERRORakan terdaftar dalam output sebagai penyebab gambar yang hilang.

Jenis: ArrayImage (p. 336)objekNextToken (p. 291)

Token terenkripsi yang digunakan dalam permintaan untuk mendapatkan lebih banyak gambar.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 4096.

Pola: [a-zA-Z0-9+/]+={0,2}

Kesalahan

Untuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

ClientLimitExceededException

Kinesis Video Streams telah mencabut permintaan karena Anda telah melampaui batas. Coba buatpanggilan nanti. Untuk informasi tentang batasan, lihatBatasan Kinesis Video Streams.

Kode Status HTTP: 400InvalidArgumentException

Parameter yang ditentukan melebihi pembatasannya, tidak didukung, atau tidak dapat digunakan.

Kode Status HTTP: 400NotAuthorizedException

Kode Status: 403, pemanggil tidak berwenang untuk melakukan operasi pada aliran yang diberikan,atau token telah kedaluwarsa.

291

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

Kode Status HTTP: 401ResourceNotFoundException

GetImagesakan membuang kesalahan ini ketika Kinesis Video Streams tidak dapat menemukanaliran yang Anda tentukan.

GetHLSStreamingSessionURLdanGetDASHStreamingSessionURLmembuang kesalahan ini jikasesi denganPlaybackModedariON_DEMANDatauLIVE_REPLAYdiminta untuk aliran yang tidak memilikifragmen dalam rentang waktu yang diminta, atau jika sesi denganPlaybackModedariLIVEdimintauntuk aliran yang tidak memiliki fragmen dalam 30 detik terakhir.

Kode Status HTTP: 404

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API di salah satu spesifik bahasaAWSSDK, lihat yangberikut ini:

• AWSAntarmuka Baris Perintah• AWSSDK for .NET• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK untuk JavaScript• AWSSDK for PHP V3• AWSSDK for Python• AWSSDK for Ruby V3

292

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

GetMediaForFragmentListLayanan:Amazon Kinesis Video Streams Archived Media

Mendapat media untuk daftar fragmen (ditentukan oleh nomor fragmen) dari data yang diarsipkan dalamaliran video Amazon Kinesis.

Note

Anda harus terlebih dahulu memanggilGetDataEndpointAPI untuk mendapatkan titik akhir.Kemudian kirimkanGetMediaForFragmentListpermintaan ke endpoint ini menggunakan—endpoint-url parameter.

Untuk batas, lihatBatasan Kinesis Video Streams.Important

Jika kesalahan dilemparkan setelah memanggil API media yang diarsipkan Kinesis VideoStreams, selain kode status HTTP dan badan respons, itu mencakup potongan-potonganinformasi berikut:

• x-amz-ErrorTypeHTTP header - berisi jenis kesalahan yang lebih spesifik selain apa kodestatus HTTP menyediakan.

• x-amz-RequestIdHeader HTTP — jika Anda ingin melaporkan masalah ke AWS, timdukungan dapat mendiagnosis masalah dengan lebih baik jika diberikan Id Permintaan.

Kode status HTTP dan ErrorType header dapat dimanfaatkan untuk membuat keputusanterprogram tentang apakah kesalahan yang retry-mampu dan dalam kondisi apa, sertamemberikan informasi tentang tindakan apa programmer klien mungkin perlu mengambil untukberhasil mencoba lagi.Untuk informasi selengkapnya, lihatKesalahanbagian di bagian bawah topik ini, sertaKesalahanUmum.

Minta Sintaks

POST /getMediaForFragmentList HTTP/1.1Content-type: application/json

{ "Fragments": [ "string" ], "StreamARN": "string", "StreamName": "string"}

Parameter Permintaan URIPermintaan tidak menggunakan parameter URI apa pun.

Isi PermintaanPermintaan menerima data berikut dalam format JSON.

Fragments (p. 293)

Daftar jumlah fragmen yang untuk mengambil media. Anda mengambil nilai-nilai inidenganListFragments (p. 297).

Jenis: Array string

Anggota Array: Jumlah minimum 1 item. Jumlah maksimum 1000 item.

293

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

Batasan: Panjang minimum 1. Panjang maksimum 128.

Pola: ^[0-9]+$

Diperlukan: YaStreamARN (p. 293)

Amazon Resource Name (ARN) dari aliran yang akan diambil media fragmen. Tentukan parameter iniatauStreamNameparameter.

Jenis: String

Batasan: 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]+

Diperlukan: TidakStreamName (p. 293)

Nama stream untuk mengambil media fragmen. Tentukan parameter ini atauStreamARNparameter.

Jenis: String

Batasan: Panjang minimum 1. Panjang maksimum 256.

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

Diperlukan: Tidak

Sintaksis Respons

HTTP/1.1 200Content-Type: ContentType

Payload

Elemen Respons

Jika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200.

Respons mengembalikan header HTTP berikut.

ContentType (p. 294)

Jenis konten media yang diminta.

Batasan: Panjang minimum 1. Panjang maksimum 128.

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

Respons mengembalikan yang berikut sebagai isi HTTP.

Payload (p. 294)

Payload yang Kinesis Video Streams kembali adalah urutan potongan dari aliran tertentu. Untukinformasi tentang potongan, lihatPutMedia. Potongan yang Kinesis Video Streams kembalidiGetMediaForFragmentListpanggilan juga termasuk tambahan Matroska (MKV) tag berikut ini:

294

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

• AWS_KINESISVIDEO_FRAGMENT_NUMBER - Nomor fragmen dikembalikan dalam potongan.• AWS_KINESISVIDEO_SERVER_SIDE_TIMESTAMP - Timestamp sisi server dari fragmen.• AWS_KINESISVIDEO_PRODUCER_SIDE_TIMESTAMP - Producer-side timestamp fragmen.

Tag berikut akan disertakan jika terjadi pengecualian:• AWS_KINESISVIDEO_FRAGMENT_NUMBER - Jumlah fragmen yang melemparkan pengecualian• AWS_KINESISVIDEO_EXCEPTION_ERROR_CODE - Kode integer• AWS_KINESISVIDEO_EXCEPTION_MESSAGE - Deskripsi teks pengecualian

Kesalahan

Untuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

ClientLimitExceededException

Kinesis Video Streams telah mencabut permintaan karena Anda telah melampaui batas. Coba buatpanggilan nanti. Untuk informasi tentang batas, lihatBatasan Kinesis Video Streams.

Kode Status HTTP: 400InvalidArgumentException

Parameter yang ditentukan melebihi pembatasannya, tidak didukung, atau tidak dapat digunakan.

Kode Status HTTP: 400NotAuthorizedException

Kode Status: 403, pemanggil tidak berwenang untuk melakukan operasi pada aliran yang diberikan,atau token telah kedaluwarsa.

Kode Status HTTP: 401ResourceNotFoundException

GetImagesakan membuang kesalahan ini ketika Kinesis Video Streams tidak dapat menemukanaliran yang Anda tentukan.

GetHLSStreamingSessionURLdanGetDASHStreamingSessionURLmembuang kesalahan ini jikasesi denganPlaybackModedariON_DEMANDatauLIVE_REPLAYdiminta untuk aliran yang tidak memilikifragmen dalam rentang waktu yang diminta, atau jika sesi denganPlaybackModedariLIVEdimintauntuk aliran yang tidak memiliki fragmen dalam 30 detik terakhir.

Kode Status HTTP: 404

Lihat Juga

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

• AWSAntarmuka Baris Perintah• AWSSDK for .NET• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK untuk JavaScript• AWSSDK for PHP V3

295

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

ListFragmentsLayanan:Amazon Kinesis Video Streams Archived Media

Mengembalikan daftarFragment (p. 331)objek dari aliran tertentu dan rentang timestamp dalam data yangdiarsipkan.

Fragmen daftar pada akhirnya konsisten. Ini berarti bahwa bahkan jika produsen menerimapengakuan bahwa fragmen tetap ada, hasilnya mungkin tidak dikembalikan segera dari permintaankeListFragments. Namun, hasil biasanya tersedia dalam waktu kurang dari satu detik.

Note

Anda harus terlebih dahulu memanggilGetDataEndpointAPI untuk mendapatkan titik akhir.Kemudian kirimkanListFragmentspermintaan ke endpoint ini menggunakan—endpoint-urlparameter.Important

Jika kesalahan dilemparkan setelah memanggil API media yang diarsipkan Kinesis VideoStreams, selain kode status HTTP dan badan respons, itu mencakup potongan-potonganinformasi berikut:

• x-amz-ErrorTypeHTTP header - berisi jenis kesalahan yang lebih spesifik selain apa kodestatus HTTP menyediakan.

• x-amz-RequestIdHeader HTTP — jika Anda ingin melaporkan masalah ke AWS, timdukungan dapat mendiagnosis masalah dengan lebih baik jika diberikan Id Permintaan.

Kode status HTTP dan ErrorType header dapat dimanfaatkan untuk membuat keputusanterprogram tentang apakah kesalahan yang retry-mampu dan dalam kondisi apa, sertamemberikan informasi tentang tindakan apa programmer klien mungkin perlu mengambil untukberhasil mencoba lagi.Untuk informasi selengkapnya, lihatKesalahanbagian di bagian bawah topik ini, sertaKesalahanUmum.

Minta Sintaks

POST /listFragments HTTP/1.1Content-type: application/json

{ "FragmentSelector": { "FragmentSelectorType": "string", "TimestampRange": { "EndTimestamp": number, "StartTimestamp": number } }, "MaxResults": number, "NextToken": "string", "StreamARN": "string", "StreamName": "string"}

Parameter Permintaan URIPermintaan tidak menggunakan parameter URI apa pun.

Isi PermintaanPermintaan menerima data berikut dalam format JSON.

297

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

FragmentSelector (p. 297)

Menjelaskan rentang timestamp dan asal timestamp untuk rentang fragmen untuk kembali.

Tipe: Objek FragmentSelector (p. 332)

Diperlukan: TidakMaxResults (p. 297)

Jumlah fragmen yang akan dikembalikan. Jika jumlah fragmen yang tersedia lebih dari nilai yangditentukan dalammax-results, maka aDaftarFragment:nextToken (p. 299)disediakan dalam outputyang dapat Anda gunakan untuk melanjutkan pagination.

Jenis: Long

Rentang yang Valid: Nilai minimum 1. Nilai maksimum sebesar 1000.

Diperlukan: TidakNextToken (p. 297)

Sebuah token untuk menentukan di mana untuk memulai paginating. IniadalahDaftarFragment:nextToken (p. 299)dari respons yang terpotong sebelumnya.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 4096.

Pola: [a-zA-Z0-9+/]+={0,2}

Diperlukan: TidakStreamARN (p. 297)

Amazon Resource Name (ARN) dari aliran yang akan diambil daftar fragmen. Tentukan parameter iniatauStreamNameparameter.

Jenis: String

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]+

Diperlukan: TidakStreamName (p. 297)

Nama sungai dari mana untuk mengambil daftar fragmen. Tentukan parameter iniatauStreamARNparameter.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 256.

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

Diperlukan: Tidak

Sintaksis Respons

HTTP/1.1 200

298

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

Content-type: application/json

{ "Fragments": [ { "FragmentLengthInMilliseconds": number, "FragmentNumber": "string", "FragmentSizeInBytes": number, "ProducerTimestamp": number, "ServerTimestamp": number } ], "NextToken": "string"}

Elemen Respons

Jika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200.

Layanan mengembalikan data berikut dalam format JSON.

Fragments (p. 298)

Daftar diarsipkanFragment (p. 331)benda dari sungai yang memenuhi kriteria pemilih. Hasil tidakdalam urutan tertentu, bahkan di seluruh halaman.

Jenis: ArrayFragment (p. 331)objekNextToken (p. 298)

Jika daftar yang dikembalikan terpotong, operasi mengembalikan token ini untuk digunakan untukmengambil halaman hasil berikutnya. Nilai ininullketika tidak ada hasil yang akan dikembalikan.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 4096.

Pola: [a-zA-Z0-9+/]+={0,2}

Kesalahan

Untuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

ClientLimitExceededException

Kinesis Video Streams telah mencabut permintaan karena Anda telah melampaui batas. Coba buatpanggilan nanti. Untuk informasi tentang batas, lihatKinesis Video Streams.

Kode Status HTTP: 400InvalidArgumentException

Parameter yang ditentukan melebihi pembatasannya, tidak didukung, atau tidak dapat digunakan.

Kode Status HTTP: 400NotAuthorizedException

Kode Status: 403, pemanggil tidak berwenang untuk melakukan operasi pada aliran yang diberikan,atau token telah kedaluwarsa.

Kode Status HTTP: 401

299

Amazon Kinesis Video Streams Panduan DeveloperSaluran Sinyal Video Amazon Kinesis

ResourceNotFoundException

GetImagesakan membuang kesalahan ini ketika Kinesis Video Streams tidak dapat menemukanaliran yang Anda tentukan.

GetHLSStreamingSessionURLdanGetDASHStreamingSessionURLmembuang kesalahan ini jikasesi denganPlaybackModedariON_DEMANDatauLIVE_REPLAYdiminta untuk aliran yang tidak memilikifragmen dalam rentang waktu yang diminta, atau jika sesi denganPlaybackModedariLIVEdimintauntuk aliran yang tidak memiliki fragmen dalam 30 detik terakhir.

Kode Status HTTP: 404

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API di salah satu bahasaAWSSDK, lihat yang berikutini:

• AWSAntarmuka Baris Perintah• AWSSDK for .NET• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK for JavaScript• AWSSDK for PHP V3• AWSSDK for Python• AWSSDK for Ruby V3

Saluran Sinyal Video Amazon KinesisTindakan berikut didukung oleh Saluran Sinyal Video Amazon Kinesis:

• GetIceServerConfig (p. 301)• SendAlexaOfferToMaster (p. 304)

300

Amazon Kinesis Video Streams Panduan DeveloperSaluran Sinyal Video Amazon Kinesis

GetIceServerConfigLayanan:Amazon Kinesis Video Signaling Channels

Note

Sebelum menggunakan API ini, Anda harus memanggilGetSignalingChannelEndpointAPIuntuk mendapatkan titik akhir. Anda kemudian menentukan endpoint dan wilayahdiGetIceServerConfigPermintaan API.

Mendapat informasi konfigurasi server Interaktif Konektivitas Pendirian (ICE), termasuk URI, namapengguna, dan kata sandi yang dapat digunakan untuk mengkonfigurasi koneksi WebRTC. KomponenICE menggunakan informasi konfigurasi ini untuk mengatur koneksi WebRTC, termasuk otentikasi denganTraversal Using Relays sekitar NAT (TURN) relay server.

TURN adalah protokol yang digunakan untuk meningkatkan konektivitaspeer-to-peeraplikasi. Denganmenyediakan layanan relay berbasis cloud, TURN memastikan bahwa koneksi dapat dibuat bahkan ketikasatu atau lebih rekan tidak mampu langsungpeer-to-peerkoneksi. Untuk informasi selengkapnya, lihatRESTAPI Untuk Akses Untuk Menghidupkan Layanan.

Anda dapat memanggil API ini untuk membuat mekanisme fallback jika salah satu rekan tidak dapatmembuat langsungpeer-to-peerkoneksi melalui saluran sinyal. Anda harus menentukan Amazon ResourceName (ARN) channel pensinyalan Anda untuk memanggil API ini.

Minta Sintaks

POST /v1/get-ice-server-config HTTP/1.1Content-type: application/json

{ "ChannelARN": "string", "ClientId": "string", "Service": "string", "Username": "string"}

Parameter Permintaan URI

Permintaan tidak menggunakan parameter URI apa pun.

Isi Permintaan

Permintaan menerima data berikut dalam format JSON.

ChannelARN (p. 301)

ARN dari saluran sinyal yang akan digunakan untukpeer-to-peerkoneksi antara rekan-rekandikonfigurasi.

Jenis: String

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]+

Diperlukan: YaClientId (p. 301)

Pengidentifikasi unik untuk pemirsa. Harus unik dalam saluran sinyal.

301

Amazon Kinesis Video Streams Panduan DeveloperSaluran Sinyal Video Amazon Kinesis

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 256.

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

Diperlukan: TidakService (p. 301)

Menentukan layanan yang diinginkan. Saat ini,TURNadalah satu-satunya nilai yang valid.

Jenis: Rangkaian

Nilai Valid: TURN

Diperlukan: TidakUsername (p. 301)

ID pengguna opsional untuk dikaitkan dengan kredensi.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 256.

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

Diperlukan: Tidak

Sintaksis Respons

HTTP/1.1 200Content-type: application/json

{ "IceServerList": [ { "Password": "string", "Ttl": number, "Uris": [ "string" ], "Username": "string" } ]}

Elemen ResponsJika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200.

Layanan mengembalikan data berikut dalam format JSON.

IceServerList (p. 302)

Daftar objek informasi server ICE.

Jenis: ArrayIceServer (p. 338)objek

KesalahanUntuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

302

Amazon Kinesis Video Streams Panduan DeveloperSaluran Sinyal Video Amazon Kinesis

ClientLimitExceededException

Permintaan Anda dibatalkan karena Anda telah melampaui batas panggilan klien yang diizinkan. Cobabuat panggilan nanti.

Kode Status HTTP: 400InvalidArgumentException

Nilai untuk parameter input ini tidak valid.

Kode Status HTTP: 400InvalidClientException

Klien yang ditentukan tidak valid.

Kode Status HTTP: 400NotAuthorizedException

Penelepon tidak diotorisasi untuk melakukan operasi ini.

Kode Status HTTP: 401ResourceNotFoundException

Sumber daya yang ditentukan tidak ditemukan.

Kode Status HTTP: 404SessionExpiredException

Jika sesi klien kedaluwarsa. Setelah klien terhubung, sesi ini berlaku selama 45 menit. Klien harusmenyambung kembali ke saluran untuk melanjutkan pengiriman/menerima pesan.

Kode Status HTTP: 400

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API di salah satu bahasaAWSSDK, lihat yang berikutini:

• AWSAntarmuka Baris Perintah• AWSSDK for .NET• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK untukJavaScript• AWSSDK for PHP V3• AWSSDK for Python• AWSSDK for Ruby V3

303

Amazon Kinesis Video Streams Panduan DeveloperSaluran Sinyal Video Amazon Kinesis

SendAlexaOfferToMasterLayanan:Amazon Kinesis Video Signaling Channels

Note

Sebelum menggunakan API ini, Anda harus memanggilGetSignalingChannelEndpointAPIuntuk mendapatkan titik akhir. Anda kemudian menentukan endpoint dan wilayahdiSendAlexaOfferToMasterPermintaan API.

API ini memungkinkan Anda untuk menghubungkan perangkat WebRTC-enabled dengan perangkattampilan Alexa. Ketika dipanggil, ia mengirimkan Alexa Session Description Protocol (SDP) tawaran kemaster peer. Penawaran dikirim segera setelah master terhubung ke saluran sinyal yang ditentukan. API inimengembalikan jawaban SDP dari master terhubung. Jika master tidak terhubung ke saluran pensinyalan,permintaan pengiriman ulang dibuat sampai pesan berakhir.

Minta Sintaks

POST /v1/send-alexa-offer-to-master HTTP/1.1Content-type: application/json

{ "ChannelARN": "string", "MessagePayload": "string", "SenderClientId": "string"}

Parameter Permintaan URI

Permintaan tidak menggunakan parameter URI apa pun.

Isi Permintaan

Permintaan menerima data berikut dalam format JSON.

ChannelARN (p. 304)

Amazon Resource Name (ARN) dari saluran pensinyalan tempat Alexa dan rekan masterberkomunikasi.

Jenis: String

Aturan 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]+

Diperlukan: YaMessagePayload (p. 304)

SDP berkode base64.

Jenis: String

Aturan Panjang: Panjang minimum 1. Panjang maksimum 10000.

Pola: [a-zA-Z0-9+/=]+

Diperlukan: Ya

304

Amazon Kinesis Video Streams Panduan DeveloperSaluran Sinyal Video Amazon Kinesis

SenderClientId (p. 304)

Pengidentifikasi unik untuk klien pengirim.

Jenis: String

Aturan Panjang: Panjang minimum 1. Panjang maksimum 256.

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

Diperlukan: Ya

Sintaksis Respons

HTTP/1.1 200Content-type: application/json

{ "Answer": "string"}

Elemen ResponsJika tindakan berhasil, layanan mengirimkan kembali respons HTTP 200.

Layanan mengembalikan data berikut dalam format JSON.

Answer (p. 305)

Konten jawaban SDP berkode base64.

Jenis: String

Aturan Panjang: Panjang minimum 1. Panjang maksimum 10000.

KesalahanUntuk informasi tentang kesalahan yang umum untuk semua tindakan, lihat Kesalahan Umum (p. 339).

ClientLimitExceededException

Permintaan Anda dibatalkan karena Anda telah melampaui batas panggilan klien yang diizinkan. Cobabuat panggilan nanti.

Kode Status HTTP: 400InvalidArgumentException

Nilai untuk parameter input ini tidak valid.

Kode Status HTTP: 400NotAuthorizedException

Penelepon tidak diotorisasi untuk melakukan operasi ini.

Kode Status HTTP: 401ResourceNotFoundException

Sumber daya yang ditentukan tidak ditemukan.

305

Amazon Kinesis Video Streams Panduan DeveloperTipe Data

Kode Status HTTP: 404

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API di salah satu bahasa khususAWSSDK, lihat yangberikut ini:

• AWSAntarmuka Baris Perintah• AWSSDK for .NET• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK untukJavaScript• AWSSDK for PHP V3• AWSSDK for Python• AWSSDK for Ruby V3

Tipe DataJenis data berikut didukung oleh Amazon Kinesis Video Streams:

• ChannelInfo (p. 308)• ChannelNameCondition (p. 310)• ImageGenerationConfiguration (p. 311)• ImageGenerationDestinationConfig (p. 313)• NotificationConfiguration (p. 314)• NotificationDestinationConfig (p. 315)• ResourceEndpointListItem (p. 316)• SingleMasterChannelEndpointConfiguration (p. 317)• SingleMasterConfiguration (p. 318)• StreamInfo (p. 319)• StreamNameCondition (p. 321)• Tag (p. 322)

Jenis data berikut didukung oleh Amazon Kinesis Video Streams Media:

• StartSelector (p. 323)

Jenis data berikut didukung oleh Amazon Kinesis Video Streams Archived Media:

• ClipFragmentSelector (p. 325)• ClipTimestampRange (p. 326)• DASHFragmentSelector (p. 327)• DASHTimestampRange (p. 329)• Fragment (p. 331)• FragmentSelector (p. 332)• HLSFragmentSelector (p. 333)

306

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

• HLSTimestampRange (p. 335)• Image (p. 336)• TimestampRange (p. 337)

tipe data berikut didukung oleh Amazon Kinesis Video Signaling Channels:

• IceServer (p. 338)

Amazon Kinesis Video StreamsJenis data berikut didukung oleh Amazon Kinesis Video Streams:

• ChannelInfo (p. 308)• ChannelNameCondition (p. 310)• ImageGenerationConfiguration (p. 311)• ImageGenerationDestinationConfig (p. 313)• NotificationConfiguration (p. 314)• NotificationDestinationConfig (p. 315)• ResourceEndpointListItem (p. 316)• SingleMasterChannelEndpointConfiguration (p. 317)• SingleMasterConfiguration (p. 318)• StreamInfo (p. 319)• StreamNameCondition (p. 321)• Tag (p. 322)

307

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

ChannelInfoLayanan:Amazon Kinesis Video Streams

Struktur yang merangkum metadata dan properti saluran sinyal.

Isi

ChannelARN

Amazon Resource Name (ARN) dari kanal pensinyalan.

Jenis: String

Batasan: 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]+

Diperlukan: TidakChannelName

Nama salurannya.

Jenis: String

Batasan: Panjang minimum 1. Panjang maksimum 256.

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

Diperlukan: TidakChannelStatus

Status terkini dari kanal pensinyalan.

Jenis: Rangkaian

Nilai Valid: CREATING | ACTIVE | UPDATING | DELETING

Diperlukan: TidakChannelType

Tipe saluran pensinyalan.

Jenis: Rangkaian

Nilai Valid: SINGLE_MASTER | FULL_MESH

Diperlukan: TidakCreationTime

Waktu pembuatan saluran pensinyalan.

Jenis: Timestamp

Diperlukan: TidakSingleMasterConfiguration

Struktur yang berisi konfigurasi untukSINGLE_MASTERTipe saluran.

Tipe: Objek SingleMasterConfiguration (p. 318)

308

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

Diperlukan: TidakVersion

Versi saluran sinyal saat ini.

Jenis: String

Batasan: Panjang minimum 1. Panjang maksimum adalah 64.

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

Diperlukan: Tidak

Lihat Juga

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

• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK for Ruby V3

309

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

ChannelNameConditionLayanan:Amazon Kinesis Video Streams

Parameter input opsional untukListSignalingChannelsAPI Ketika parameter ini ditentukan saatmemanggilListSignalingChannels, API hanya mengembalikan saluran yang memenuhi kondisi yangditentukan dalamChannelNameCondition.

Isi

ComparisonOperator

Operator perbandingan. Saat ini, Anda hanya dapat menentukanBEGINS_WITHoperator, yangmenemukan saluran sinyal yang namanya dimulai dengan awalan yang diberikan.

Jenis: Rangkaian

Nilai Valid: BEGINS_WITH

Diperlukan: TidakComparisonValue

Nilai untuk membandingkan.

Jenis: String

Batasan: Panjang minimum 1. Panjang maksimum 256.

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

Diperlukan: Tidak

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API di salah satu dari bahasa tertentuAWSSDK, lihatyang berikut ini:

• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK for Ruby V3

310

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

ImageGenerationConfigurationLayanan:Amazon Kinesis Video Streams

Struktur yang berisi informasi yang diperlukan untuk pengiriman gambar KVS. Jika null, konfigurasi akandihapus dari aliran.

Isi

DestinationConfig

Struktur yang berisi informasi yang diperlukan untuk mengirimkan gambar kepada pelanggan.

Tipe: Objek ImageGenerationDestinationConfig (p. 313)

Diperlukan: YaFormat

Format gambar yang diterima.

Jenis: Rangkaian

Nilai Valid: JPEG | PNG

Diperlukan: YaFormatConfig

Daftar struktur pasangan kunci-nilai yang berisi parameter tambahan yang dapat diterapkanketika gambar dihasilkan. ParameterFormatConfigkuncinya adalahJPEGQuality, yangmenunjukkan kunci kualitas JPEG yang akan digunakan untuk menghasilkan gambar.ParameterFormatConfignilai menerima ints dari 1 sampai 100. Jika nilainya 1, gambar akandihasilkan dengan kualitas kurang dan kompresi terbaik. Jika nilainya 100, gambar akan dihasilkandengan kualitas terbaik dan kompresi yang lebih sedikit. Jika tidak ada nilai yang disediakan, nilaidefaultJPEGQualitykunci akan diatur ke 80.

Jenis: Peta string

Entri Peta: Jumlah maksimum 1 item.

Kunci yang valid: JPEGQuality

Batasan Panjang Nilai: Panjang minimum 0. Panjang maksimum 256.

Pola nilai: ^[a-zA-Z_0-9]+

Diperlukan: TidakHeightPixels

Ketinggian gambar output yang digunakan bersama denganWidthPixelsparameter. KetikakeduanyaHeightPixelsdanWidthPixelsparameter disediakan, gambar akan diregangkan agarsesuai dengan rasio aspek yang ditentukan. Jika sajaHeightPixelsdisediakan, rasio aspek aslinyaakan digunakan untuk menghitungWidthPixelsRasio. Jika parameter tidak disediakan, ukurangambar asli akan dikembalikan.

Jenis: Bulat

Rentang yang Valid: Nilai minimum 1. Nilai maksimum 2160.

Diperlukan: Tidak

311

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

ImageSelectorType

Asal Server atau Produser timestamps untuk digunakan untuk menghasilkan gambar.

Jenis: Rangkaian

Nilai Valid: SERVER_TIMESTAMP | PRODUCER_TIMESTAMP

Diperlukan: YaSamplingInterval

Interval waktu dalam milidetik (ms) di mana gambar perlu dihasilkan dari sungai. Nilai minimumyang dapat diberikan adalah 33 ms, karena kamera yang menghasilkan konten pada 30 FPS akanmembuat bingkai setiap 33,3 ms. Jika rentang timestamp kurang dari interval sampling, GambardariStartTimestampakan dikembalikan jika tersedia.

Jenis: Bulat

Rentang yang Valid: Nilai minimum 3000. Nilai maksimum 20000.

Diperlukan: YaStatus

Menunjukkan apakahContinuousImageGenerationConfigurationsAPI diaktifkan ataudinonaktifkan.

Jenis: Rangkaian

Nilai Valid: ENABLED | DISABLED

Diperlukan: YaWidthPixels

Lebar gambar output yang digunakan bersama denganHeightPixelsparameter. KetikakeduanyaWidthPixelsdanHeightPixelsparameter disediakan, gambar akan diregangkan agarsesuai dengan rasio aspek yang ditentukan. Jika sajaWidthPixelsdisediakan, rasio aspek aslinyaakan digunakan untuk menghitungHeightPixelsRasio. Jika parameter tidak disediakan, ukurangambar asli akan dikembalikan.

Jenis: Bulat

Rentang yang Valid: Nilai minimum 1. Nilai maksimum 3840.

Diperlukan: Tidak

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API di salah satu dari spesifik bahasaAWSSDK, lihatyang berikut ini:

• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK for Ruby V3

312

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

ImageGenerationDestinationConfigLayanan:Amazon Kinesis Video Streams

Struktur yang berisi informasi yang diperlukan untuk mengirimkan gambar kepada pelanggan.

Isi

DestinationRegion

Wilayah AWS bucket S3 tempat gambar dikirimkan. IniDestinationRegionharus sesuai denganWilayah di mana sungai berada.

Jenis: String

Batasan Panjang: Panjang minimum 9. Panjang maksimum 14.

Pola: ^[a-z]+(-[a-z]+)?-[a-z]+-[0-9]$

Diperlukan: YaUri

Uniform Resource Identifier (URI) yang mengidentifikasi tempat gambar dikirimkan.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 255.

Pola: ^[a-zA-Z_0-9]+:(//)?([^/]+)/?([^*]*)$

Diperlukan: Ya

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API di salah satu bahasa khususAWSSDK, lihat yangberikut ini:

• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK for Ruby V3

313

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

NotificationConfigurationLayanan:Amazon Kinesis Video Streams

Struktur yang berisi informasi pemberitahuan untuk pengiriman gambar KVS. Jika parameter ini adalah null,konfigurasi akan dihapus dari stream.

Isi

DestinationConfig

Informasi tujuan yang diperlukan untuk memberikan pemberitahuan kepada pelanggan.

Tipe: Objek NotificationDestinationConfig (p. 315)

Diperlukan: YaStatus

Menunjukkan apakah konfigurasi notifikasi diaktifkan atau dinonaktifkan.

Jenis: Rangkaian

Nilai Valid: ENABLED | DISABLED

Diperlukan: Ya

Lihat Juga

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

• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK for Ruby V3

314

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

NotificationDestinationConfigLayanan:Amazon Kinesis Video Streams

Struktur yang berisi informasi yang diperlukan untuk menyampaikan pemberitahuan kepada pelanggan.

Isi

Uri

Uniform Resource Identifier (URI) yang mengidentifikasi di mana gambar akan dikirim.

Jenis: String

Batasan: Panjang minimum 1. Panjang maksimum 255.

Pola: ^[a-zA-Z_0-9]+:(//)?([^/]+)/?([^*]*)$

Diperlukan: Ya

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API di salah satu bahasa khususAWSSDK, lihat yangberikut ini:

• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK for Ruby V3

315

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

ResourceEndpointListItemLayanan:Amazon Kinesis Video Streams

Objek yang menggambarkan titik akhir saluran sinyal yang dikembalikanolehGetSignalingChannelEndpointAPI

Isi

Protocol

Protokol saluran sinyal yang dikembalikan olehGetSignalingChannelEndpointAPI

Jenis: Rangkaian

Nilai Valid: WSS | HTTPS

Diperlukan: TidakResourceEndpoint

Titik akhir dari saluran sinyal yang dikembalikan olehGetSignalingChannelEndpointAPI

Jenis: Tali

Diperlukan: Tidak

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API di salah satu bahasa yang spesifikAWSSDK, lihatberikut ini:

• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK for Ruby V3

316

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

SingleMasterChannelEndpointConfigurationLayanan:Amazon Kinesis Video Streams

Objek yang berisi konfigurasi titik akhir untukSINGLE_MASTERjenis saluran.

Isi

Protocols

Properti ini digunakan untuk menentukan sifat komunikasi selama iniSINGLE_MASTERsaluran sinyal.JikaWSSditentukan, API ini mengembalikan endpoint websocket. JikaHTTPSditentukan, API inimengembalikanHTTPStitik akhir.

Jenis: Array string

Anggota Array: Jumlah minimum 1 item. Jumlah maksimum 5 item.

Nilai Valid: WSS | HTTPS

Diperlukan: TidakRole

Properti ini digunakan untuk menentukan izin pesan dalam hal iniSINGLE_MASTERsaluran sinyal.JikaMASTERditentukan, API ini mengembalikan titik akhir yang dapat digunakan klien untukmenerima penawaran dan mengirim jawaban ke salah satu pemirsa di saluran pensinyalan ini.JikaVIEWERditentukan, API ini mengembalikan titik akhir yang hanya dapat digunakan klien untukmengirim penawaran ke yang lainMASTERklien pada saluran sinyal ini.

Jenis: Rangkaian

Nilai Valid: MASTER | VIEWER

Diperlukan: Tidak

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API di salah satu bahasa khususAWSSDK, lihat yangberikut ini:

• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK for Ruby V3

317

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

SingleMasterConfigurationLayanan:Amazon Kinesis Video Streams

Struktur yang berisi konfigurasi untukSINGLE_MASTERjenis saluran.

Isi

MessageTtlSeconds

Periode waktu saluran sinyal mempertahankan pesan yang tidak terkirim sebelum dibuang.

Jenis: Bulat

Rentang Valid: Nilai minimum 5. Nilai maksimum 120.

Diperlukan: Tidak

Lihat Juga

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

• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK for Ruby V3

318

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

StreamInfoLayanan:Amazon Kinesis Video Streams

Sebuah objek yang menggambarkan aliran video Kinesis.

Isi

CreationTime

Cap waktu yang menunjukkan kapan aliran dibuat.

Jenis: Timestamp

Diperlukan: TidakDataRetentionInHours

Berapa lama aliran menyimpan data, dalam jam.

Jenis: Bulat

Rentang yang Valid: Nilai minimum 0.

Diperlukan: TidakDeviceName

Nama perangkat yang terkait dengan stream.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 128.

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

Diperlukan: TidakKmsKeyId

ID dariAWS Key Management Service(AWS KMS) kunci yang Kinesis Video Streams gunakan untukmengenkripsi data pada stream.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 2048.

Pola: .+

Diperlukan: TidakMediaType

ParameterMediaTypedari aliran.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 128.

Pola: [\w\-\.\+]+/[\w\-\.\+]+(,[\w\-\.\+]+/[\w\-\.\+]+)*

Diperlukan: TidakStatus

Status aliran.

319

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

Jenis: Rangkaian

Nilai Valid: CREATING | ACTIVE | UPDATING | DELETING

Diperlukan: TidakStreamARN

Amazon Resource Name (ARN) dari stream.

Jenis: String

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]+

Diperlukan: TidakStreamName

Nama sungai.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 256.

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

Diperlukan: TidakVersion

Versi sungai.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum adalah 64.

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

Diperlukan: Tidak

Lihat Juga

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

• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK for Ruby V3

320

Amazon Kinesis Video Streams Panduan DeveloperAmazon Kinesis Video Streams

StreamNameConditionLayanan:Amazon Kinesis Video Streams

Menentukan kondisi yang stream harus memenuhi untuk dikembalikan ketika Anda daftar aliran(lihatListStreamsAPI). Sebuah kondisi memiliki operasi perbandingan dan nilai. Saat ini, Anda hanyadapat menentukanBEGINS_WITHoperator, yang menemukan aliran yang namanya dimulai dengan awalanyang diberikan.

Isi

ComparisonOperator

Sebuah operator perbandingan. Saat ini, Anda hanya dapat menentukanBEGINS_WITHoperator, yangmenemukan aliran yang namanya dimulai dengan awalan yang diberikan.

Jenis: Rangkaian

Nilai Valid: BEGINS_WITH

Diperlukan: TidakComparisonValue

Nilai untuk membandingkan.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 256.

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

Diperlukan: Tidak

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API di salah satu bahasa khususAWSSDK, lihat yangberikut ini:

• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK for Ruby V3

321

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

TagLayanan:Amazon Kinesis Video Streams

Pasangan nilai yang terkait dengan saluran sinyal yang ditentukan.

Isi

Key

Kunci dari tag yang terkait dengan saluran sinyal yang ditentukan.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 128.

Pola: ^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$

Diperlukan: YaValue

Nilai tag yang terkait dengan saluran sinyal yang ditentukan.

Jenis: String

Batasan Panjang: Panjang minimum 0. Panjang maksimum 256.

Pola: [\p{L}\p{Z}\p{N}_.:/=+\-@]*

Diperlukan: Ya

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API di salah satu bahasa khususAWSSDK, lihat berikutini:

• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK for Ruby V3

Arus Amazon Kinesis Video StreamsJenis data berikut didukung oleh Amazon Kinesis Video Streams Media:

• StartSelector (p. 323)

322

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

StartSelectorLayanan:Amazon Kinesis Video Streams Media

Mengidentifikasi potongan pada aliran video Kinesis di mana Anda inginGetMediaAPI untuk mulaimengembalikan data media. Anda memiliki opsi berikut untuk mengidentifikasi bagian awal:

• Pilih potongan terbaru (atau tertua).• Identifikasi potongan tertentu. Anda dapat mengidentifikasi potongan tertentu baik dengan memberikan

nomor fragmen atau timestamp (server atau produser).• Setiap metadata potongan termasuk token kelanjutan sebagai tag Matroska (MKV)

(AWS_KINESISVIDEO_CONTINUATION_TOKEN). Jika Anda sebelumnyaGetMediapermintaandihentikan, Anda dapat menggunakan nilai tag ini di berikutnyaGetMediapermintaan. API kemudianmulai kembali potongan mulai dari mana API terakhir berakhir.

Isi

AfterFragmentNumber

Menentukan nomor fragmen dari mana Anda inginGetMediaAPI untuk mulai mengembalikan fragmen.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 128.

Pola: ^[0-9]+$

Diperlukan: TidakContinuationToken

Token kelanjutan yang Kinesis Video Streams kembali di sebelumnyaGetMediatanggapan.ParameterGetMediaAPI kemudian dimulai dengan potongan yang diidentifikasi oleh token kelanjutan.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 128.

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

Diperlukan: TidakStartSelectorType

Mengidentifikasi fragmen pada aliran video Kinesis di mana Anda ingin mulai mendapatkan data dari.• SEKARANG - Mulailah dengan potongan terbaru di sungai.• EARLIEST - Mulailah dengan potongan awal yang tersedia di sungai.• FRAGMENT_NUMBER - Mulai dengan potongan setelah fragmen tertentu. Anda juga harus

menentukan parameter AfterFragmentNumber.• PRODUCER_TIMESTAMP atau SERVER_TIMESTAMP - Mulai dengan potongan yang berisi

fragmen dengan produser atau server timestamp tertentu. Anda menentukan timestamp denganmenambahkanStartTimestamp.

• CONSTRUTIATION_TOKEN - Baca menggunakan token kelanjutan yang ditentukan.

Note

Jika Anda memilih NOW, EARLIEST, atau CONSTRUTIATION_TOKENsebagaistartSelectorType, Anda tidak memberikan informasi tambahan apa pundistartSelector.

323

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

Jenis: Rangkaian

Nilai Valid: FRAGMENT_NUMBER | SERVER_TIMESTAMP | PRODUCER_TIMESTAMP | NOW |EARLIEST | CONTINUATION_TOKEN

Diperlukan: YaStartTimestamp

Sebuah nilai stempel waktu. Nilai ini diperlukan jika Anda memilih PRODUCER_TIMESTAMP atauSERVER_TIMESTAMP sebagaistartSelectorType. ParameterGetMediaAPI kemudian dimulaidengan potongan yang berisi fragmen yang memiliki timestamp tertentu.

Jenis: Timestamp

Diperlukan: Tidak

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API di salah satu bahasa khususAWSSDK, lihat berikutini:

• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK for Ruby V3

Arus Amazon Kinesis Video StreamsJenis data berikut didukung oleh Amazon Kinesis Video Streams Archived Media:

• ClipFragmentSelector (p. 325)• ClipTimestampRange (p. 326)• DASHFragmentSelector (p. 327)• DASHTimestampRange (p. 329)• Fragment (p. 331)• FragmentSelector (p. 332)• HLSFragmentSelector (p. 333)• HLSTimestampRange (p. 335)• Image (p. 336)• TimestampRange (p. 337)

324

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

ClipFragmentSelectorLayanan:Amazon Kinesis Video Streams Archived Media

Menjelaskan rentang timestamp dan asal timestamp dari berbagai fragmen.

Fragmen yang memiliki cap waktu produser duplikat dideduplikat. Ini berarti bahwa jika produsenmemproduksi aliran fragmen dengan cap waktu produser yang kira-kira sama dengan waktu jam yangsebenarnya, klip akan berisi semua fragmen dalam rentang stempel waktu yang diminta. Jika beberapafragmen tertelan dalam rentang waktu yang sama dan titik yang sangat berbeda pada waktunya, hanyakoleksi fragmen tertua yang tertelan yang dikembalikan.

Isi

FragmentSelectorType

Asal cap waktu untuk menggunakan (Server atau Produser).

Jenis: Rangkaian

Nilai Valid: PRODUCER_TIMESTAMP | SERVER_TIMESTAMP

Diperlukan: YaTimestampRange

Kisaran cap waktu untuk kembali.

Tipe: Objek ClipTimestampRange (p. 326)

Diperlukan: Ya

Lihat Juga

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

• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK for Ruby V3

325

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

ClipTimestampRangeLayanan:Amazon Kinesis Video Streams Archived Media

Kisaran cap waktu yang untuk mengembalikan fragmen.

Isi

EndTimestamp

Akhir rentang timestamp untuk media yang diminta.

Nilai ini harus dalam waktu 24 jam dari yang ditentukanStartTimestamp, dan itu haruslebih lambat dariStartTimestampNilai. JikaFragmentSelectorTypeuntuk permintaanadalahSERVER_TIMESTAMP, nilai ini harus di masa lalu.

Nilai ini bersifat inklusif. ParameterEndTimestampdibandingkan dengan stempel waktu (mulai) darifragmen. Fragmen yang dimulai sebelumEndTimestampnilai dan melanjutkan masa lalu itu termasukdalam sesi.

Jenis: Timestamp

Diperlukan: YaStartTimestamp

The stempel waktu awal di kisaran cap waktu yang untuk mengembalikan fragmen.

Hanya fragmen yang dimulai tepat pada atau setelahStartTimestamptermasuk dalam sesi. Fragmenyang dimulai sebelumnyaStartTimestampdan melanjutkan masa lalu tidak termasuk dalam sesi.JikaFragmentSelectorTypeadalahSERVER_TIMESTAMP, yangStartTimestampharus lebih lambatdari kepala sungai.

Jenis: Timestamp

Diperlukan: Ya

Lihat Juga

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

• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK for Ruby V3

326

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

DASHFragmentSelectorLayanan:Amazon Kinesis Video Streams Archived Media

Berisi berbagai cap waktu untuk media yang diminta, dan sumber stempel waktu.

Isi

FragmentSelectorType

Sumber stempel waktu untuk media yang diminta.

SaatFragmentSelectorTypediaturkePRODUCER_TIMESTAMPdanGetDashStreamingSessionURL:PlaybackMode (p. 276)adalahON_DEMANDatauLIVE_REPLAY,fragmen pertama yang tertelan dengan cap waktu produser dalam yangditentukanFragmentSelector:TimestampRange (p. 332)termasuk dalam daftar putar media.Selain itu, fragmen dengan cap waktu produser dalamTimestampRangetertelan segera mengikutifragmen pertama (sampaiGetDashStreamingSessionURL:MaxManifestFragmentResults (p. 276)nilai)disertakan.

Fragmen yang memiliki cap waktu produser duplikat dideduplikat. Ini berarti bahwa jika produsenmemproduksi aliran fragmen dengan cap waktu produsen yang kira-kira sama dengan waktu clockyang sebenarnya, manifes MPEG-DASH akan berisi semua fragmen dalam rentang timestampyang diminta. Jika beberapa fragmen tertelan dalam rentang waktu yang sama dan titik yang sangatberbeda pada waktunya, hanya koleksi fragmen tertua yang tertelan yang dikembalikan.

SaatFragmentSelectorTypediaturkePRODUCER_TIMESTAMPdanGetDashStreamingSessionURL:PlaybackMode (p. 276)adalahLIVE,cap waktu produsen digunakan dalam fragmen MP4 dan untuk deduplikasi. Tapi fragmen yang palingbaru tertelan berdasarkan stempel waktu server disertakan dalam manifes MPEG-DASH. Ini berartibahwa bahkan jika fragmen yang tertelan di masa lalu memiliki cap waktu produser dengan nilaisekarang, mereka tidak termasuk dalam daftar putar media HLS.

Defaultnya adalah SERVER_TIMESTAMP.

Jenis: Rangkaian

Nilai Valid: PRODUCER_TIMESTAMP | SERVER_TIMESTAMP

Diperlukan: TidakTimestampRange

Awal dan akhir rentang timestamp untuk media yang diminta.

Nilai ini seharusnya tidak hadir jikaPlaybackTypeadalahLIVE.

Tipe: Objek DASHTimestampRange (p. 329)

Diperlukan: Tidak

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API di salah satu bahasa khususAWSSDK, lihat berikutini:

• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2

327

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

• AWSSDK for Ruby V3

328

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

DASHTimestampRangeLayanan:Amazon Kinesis Video Streams Archived Media

Awal dan akhir rentang timestamp untuk media yang diminta.

Nilai ini seharusnya tidak ada jikaPlaybackTypeadalahLIVE.

Nilai diDASHimestampRangeinklusif. Fragmen yang dimulai tepat pada atau setelah waktu mulaidisertakan dalam sesi. Fragmen yang dimulai sebelum waktu mulai dan terus melewati itu tidak termasukdalam sesi.

Isi

EndTimestamp

Akhir rentang timestamp untuk media yang diminta. Nilai ini harus dalam waktu 24 jam dari yangditentukanStartTimestamp, dan itu harus lebih lambat dariStartTimestampnilai.

JikaFragmentSelectorTypeuntuk permintaanSERVER_TIMESTAMP, nilai ini harus di masa lalu.

ParameterEndTimestampdiperlukan untukON_DEMANDmode, tapi opsional untukLIVE_REPLAYmode.JikaEndTimestamptidak diatur untukLIVE_REPLAYmode kemudian sesi akan terus menyertakanfragmen yang baru dicerna sampai sesi berakhir.

Note

Nilai ini bersifat inklusif. ParameterEndTimestampdibandingkan dengan stempel waktu(mulai) dari fragmen. Fragmen yang dimulai sebelumEndTimestampnilai dan melanjutkanmasa lalu itu termasuk dalam sesi.

Jenis: Timestamp

Diperlukan: TidakStartTimestamp

Awal rentang timestamp untuk media yang diminta.

JikaDASHTimestampRangeditentukan,StartTimestampdiperlukan.

Hanya fragmen yang dimulai tepat pada atau setelahStartTimestamptermasuk dalam sesi. Fragmenyang dimulai sebelumnyaStartTimestampdan melanjutkan masa lalu itu tidak termasuk dalam sesi.JikaFragmentSelectorTypeadalahSERVER_TIMESTAMP, yangStartTimestampharus lebih lambatdari kepala sungai.

Jenis: Timestamp

Diperlukan: Tidak

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API di salah satu bahasaAWSSDK, lihat yang berikutini:

• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK for Ruby V3

329

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

330

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

FragmentLayanan:Amazon Kinesis Video Streams Archived Media

Merupakan segmen video atau data yang dibatasi waktu lainnya.

Isi

FragmentLengthInMilliseconds

Durasi pemutaran atau nilai waktu lain yang terkait dengan fragmen.

Jenis: Long

Diperlukan: TidakFragmentNumber

Pengenal unik fragmen. Nilai ini meningkat secara monoton berdasarkan urutan konsumsi.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 128.

Pola: ^[0-9]+$

Diperlukan: TidakFragmentSizeInBytes

Total ukuran fragmen, termasuk informasi tentang fragmen dan data media yang terkandung.

Jenis: Long

Diperlukan: TidakProducerTimestamp

Cap waktu dari produsen yang sesuai dengan fragmen.

Jenis: Timestamp

Diperlukan: TidakServerTimestamp

Cap waktu dari server AWS yang sesuai dengan fragmen.

Jenis: Timestamp

Diperlukan: Tidak

Lihat JugaUntuk informasi selengkapnya tentang penggunaan API di salah satu bahasaAWSSDK, lihat yang berikutini:

• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK for Ruby V3

331

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

FragmentSelectorLayanan:Amazon Kinesis Video Streams Archived Media

Menjelaskan rentang timestamp dan asal-usul timestamp dari berbagai fragmen.

Hanya fragmen dengan stempel waktu lebih besar dari atau sama dengan waktu mulai yang diberikandan kurang dari atau sama dengan waktu akhir dikembalikan. Misalnya, jika stream berisi fragmen denganstempel waktu awal berikut:

• 00:00:00• 00:00:02• 00:00:04• 00:00:06

Rentang pemilih fragmen dengan waktu mulai 00:00:01 dan waktu akhir 00:00:04 akan mengembalikanfragmen dengan waktu mulai 00:00:02 dan 00:00:04.

Isi

FragmentSelectorType

Asal cap waktu untuk menggunakan (Server atau Produser).

Jenis: Rangkaian

Nilai Valid: PRODUCER_TIMESTAMP | SERVER_TIMESTAMP

Diperlukan: YaTimestampRange

Kisaran cap waktu untuk kembali.

Tipe: Objek TimestampRange (p. 337)

Diperlukan: Ya

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API di salah satu bahasaAWSSDK, lihat yang berikutini:

• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK for Ruby V3

332

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

HLSFragmentSelectorLayanan:Amazon Kinesis Video Streams Archived Media

Berisi berbagai cap waktu untuk media yang diminta, dan sumber stempel waktu.

Isi

FragmentSelectorType

Sumber stempel waktu untuk media yang diminta.

SaatFragmentSelectorTypediaturkePRODUCER_TIMESTAMPdanGetHLStreamingSessionURL:PlaybackMode (p. 284)adalahON_DEMANDatauLIVE_REPLAY,fragmen pertama yang tertelan dengan cap waktu produser dalam yangditentukanFragmentSelector:TimestampRange (p. 332)termasuk dalam daftar putar media. Selainitu, fragmen dengan cap waktu produser dalamTimestampRangetertelan segera mengikuti fragmenpertama (sampai keGetHLStreamingSessionURL:MaxMediaPlaylistFragmentHasil (p. 284)nilai)disertakan.

Fragmen yang memiliki cap waktu produser duplikat dideduplikat. Ini berarti bahwa jika produsenmemproduksi aliran fragmen dengan cap waktu produser yang kira-kira sama dengan waktu jamyang sebenarnya, daftar putar media HLS akan berisi semua fragmen dalam rentang timestampyang diminta. Jika beberapa fragmen tertelan dalam rentang waktu yang sama dan titik yang sangatberbeda pada waktunya, hanya koleksi fragmen tertua yang tertelan yang dikembalikan.

SaatFragmentSelectorTypediaturkePRODUCER_TIMESTAMPdanGetHLStreamingSessionURL:PlaybackMode (p. 284)adalahLIVE, capwaktu produsen digunakan dalam fragmen MP4 dan untuk deduplikasi. Tapi fragmen yang paling barutertelan berdasarkan stempel waktu server disertakan dalam daftar putar media HLS. Ini berarti bahwabahkan jika fragmen yang tertelan di masa lalu memiliki cap waktu produser dengan nilai sekarang,mereka tidak termasuk dalam daftar putar media HLS.

Defaultnya adalah SERVER_TIMESTAMP.

Jenis: Rangkaian

Nilai Valid: PRODUCER_TIMESTAMP | SERVER_TIMESTAMP

Diperlukan: TidakTimestampRange

Awal dan akhir rentang timestamp untuk media yang diminta.

Nilai ini seharusnya tidak hadir jikaPlaybackTypeadalahLIVE.

Tipe: Objek HLSTimestampRange (p. 335)

Diperlukan: Tidak

Lihat Juga

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

• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2

333

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

• AWSSDK for Ruby V3

334

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

HLSTimestampRangeLayanan:Amazon Kinesis Video Streams Archived Media

Awal dan akhir rentang timestamp untuk media yang diminta.

Nilai ini seharusnya tidak ada jikaPlaybackTypeadalahLIVE.

Isi

EndTimestamp

Akhir rentang timestamp untuk media yang diminta. Nilai ini harus dalam waktu 24 jam dari yangditentukanStartTimestamp, dan itu harus lebih lambat dariStartTimestampNilai.

JikaFragmentSelectorTypeuntuk permintaanSERVER_TIMESTAMP, nilai ini harus di masa lalu.

ParameterEndTimestampdiperlukan untukON_DEMANDmode, tapi opsional untukLIVE_REPLAYmode.JikaEndTimestamptidak diatur untukLIVE_REPLAYmode kemudian sesi akan terus menyertakanfragmen yang baru dicerna sampai sesi berakhir.

Note

Nilai ini bersifat inklusif. ParameterEndTimestampdibandingkan dengan stempel waktu(mulai) dari fragmen. Fragmen yang dimulai sebelumEndTimestampnilai dan melanjutkanmasa lalu itu termasuk dalam sesi.

Jenis: Timestamp

Diperlukan: TidakStartTimestamp

Awal rentang timestamp untuk media yang diminta.

JikaHLSTimestampRangeditentukan,StartTimestampdiperlukan.

Hanya fragmen yang dimulai tepat pada atau setelahStartTimestamptermasuk dalam sesi. Fragmenyang dimulai sebelumnyaStartTimestampdan melanjutkan masa lalu itu tidak termasuk dalam sesi.JikaFragmentSelectorTypeadalahSERVER_TIMESTAMP, yangStartTimestampharus lebih lambatdari kepala sungai.

Jenis: Timestamp

Diperlukan: Tidak

Lihat Juga

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

• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK for Ruby V3

335

Amazon Kinesis Video Streams Panduan DeveloperArus Amazon Kinesis Video Streams

ImageLayanan:Amazon Kinesis Video Streams Archived Media

Struktur yang berisiTimestamp,Error, danImageContent.

Isi

Error

Pesan galat yang ditampilkan saat gambar untuk stempel waktu yang disediakan tidak diekstraksikarena kesalahan yang tidak dapat ditcoba. Kesalahan akan dikembalikan jika:• Tidak ada media yang ada untuk yang ditentukanTimestamp.• Media untuk waktu yang ditentukan tidak memungkinkan gambar diekstraksi. Dalam hal ini media

hanya audio, atau media yang salah telah tertelan.

Jenis: Rangkaian

Nilai Valid: NO_MEDIA | MEDIA_ERROR

Diperlukan: TidakImageContent

Atribut dariImageobjek yang Base64 dikodekan.

Jenis: String

Batasan Panjang: Panjang minimum 1. Panjang maksimum 6291456.

Diperlukan: TidakTimeStamp

Atribut dariImageobjek yang digunakan untuk mengekstrak gambar dari aliran video. Bidang inidigunakan untuk mengelola kesenjangan pada gambar atau untuk lebih memahami jendela pagination.

Jenis: Timestamp

Diperlukan: Tidak

Lihat Juga

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

• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK for Ruby V3

336

Amazon Kinesis Video Streams Panduan DeveloperSaluran Sinyal Video Amazon Kinesis

TimestampRangeLayanan:Amazon Kinesis Video Streams Archived Media

Kisaran cap waktu yang untuk mengembalikan fragmen.

Isi

EndTimestamp

Akhir timestamp di kisaran cap waktu yang untuk mengembalikan fragmen.

Jenis: Timestamp

Diperlukan: YaStartTimestamp

The stempel waktu awal di kisaran cap waktu yang untuk mengembalikan fragmen.

Jenis: Timestamp

Diperlukan: Ya

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API di salah satu bahasaAWSSDK, lihat berikut ini:

• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2• AWSSDK for Ruby V3

Saluran Sinyal Video Amazon Kinesistipe data berikut didukung oleh Saluran Sinyal Video Amazon Kinesis:

• IceServer (p. 338)

337

Amazon Kinesis Video Streams Panduan DeveloperSaluran Sinyal Video Amazon Kinesis

IceServerLayanan:Amazon Kinesis Video Signaling Channels

Sebuah struktur untuk data koneksi server ICE.

Isi

Password

Kata sandi untuk login ke server ICE.

Jenis: String

Batasan: Panjang minimum 1. Panjang maksimum 256.

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

Diperlukan: TidakTtl

Periode waktu, dalam detik, selama nama pengguna dan kata sandi valid.

Jenis: Bulat

Rentang valid: Nilai minimum 30. Nilai maksimum 86400.

Diperlukan: TidakUris

Array URI, dalam bentuk yang ditentukan dalamI-D.petithuguenin-behave-turnurisspesifikasi. URI inimenyediakan alamat dan/atau protokol yang berbeda yang dapat digunakan untuk mencapai serverTURN.

Jenis: Array string

Batasan: Panjang minimum 1. Panjang maksimum 256.

Diperlukan: TidakUsername

Nama pengguna untuk login ke server ICE.

Jenis: String

Batasan: Panjang minimum 1. Panjang maksimum 256.

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

Diperlukan: Tidak

Lihat Juga

Untuk informasi selengkapnya tentang penggunaan API di salah satu spesifik bahasaAWSSDK, lihat yangberikut ini:

• AWSSDK for C++• AWSSDK for Go• AWSSDK for Java V2

338

Amazon Kinesis Video Streams Panduan DeveloperKesalahan Umum

• AWSSDK for Ruby V3

Kesalahan UmumBagian ini berisi daftar kesalahan yang umum terjadi pada tindakan API dari semua layanan AWS. Untukkesalahan khusus pada tindakan API untuk layanan ini, lihat topik untuk tindakan API tersebut.

AccessDeniedException

Anda tidak memiliki akses yang memadai untuk melakukan tindakan ini.

Kode Status HTTP: 400IncompleteSignature

Tanda tangan permintaan tidak sesuai dengan standar AWS.

Kode Status HTTP: 400InternalFailure

Pemrosesan permintaan telah gagal karena kesalahan yang tidak diketahui, pengecualian ataukegagalan.

Kode Status HTTP: 500InvalidAction

Tindakan atau operasi yang diminta tidak valid. Verifikasi bahwa tindakan diketik dengan benar.

Kode Status HTTP: 400InvalidClientTokenId

Sertifikat X.509 atau access key ID AWS yang diberikan tidak ada dalam catatan kami.

Kode Status HTTP: 403InvalidParameterCombination

Parameter yang tidak boleh digunakan secara bersamaan digunakan secara bersamaan.

Kode Status HTTP: 400InvalidParameterValue

Tidak valid atauout-of-rangediberikan untuk parameter input.

Kode Status HTTP: 400InvalidQueryParameter

String kueri AWS salah format atau tidak mematuhi standar AWS.

Kode Status HTTP: 400MalformedQueryString

String kueri berisi kesalahan sintaks.

Kode Status HTTP: 404MissingAction

Permintaan tidak memiliki tindakan atau parameter yang diperlukan.

339

Amazon Kinesis Video Streams Panduan DeveloperParameter Umum

Kode Status HTTP: 400MissingAuthenticationToken

Permintaan harus berisi salah satu access key ID AWS atau sertifikat X.509 yang valid (terdaftar).

Kode Status HTTP: 403MissingParameter

Parameter yang diperlukan untuk tindakan tertentu tidak disediakan.

Kode Status HTTP: 400NotAuthorized

Anda tidak memiliki izin untuk melakukan tindakan ini.

Kode Status HTTP: 400OptInRequired

Access key ID AWS membutuhkan berlangganan untuk layanan.

Kode Status HTTP: 403RequestExpired

Permintaan menjangkau layanan lebih dari 15 menit setelah stempel tanggal pada permintaan ataulebih dari 15 menit setelah tanggal kedaluwarsa permintaan (seperti untuk URL pre-signed), ataustempel tanggal pada permintaan lebih dari 15 menit di masa mendatang.

Kode Status HTTP: 400ServiceUnavailable

Permintaan telah gagal karena kegagalan sementara server.

Kode Status HTTP: 503ThrottlingException

Permintaan ditolak karena throttling permintaan.

Kode Status HTTP: 400ValidationError

Input gagal untuk memenuhi batasan yang ditentukan oleh layanan AWS.

Kode Status HTTP: 400

Parameter UmumDaftar berikut berisi parameter yang digunakan semua tindakan untuk menandatangani permintaanTanda Tangan Versi 4 dengan string kueri. Setiap parameter khusus tindakan tercantum dalam topikuntuk tindakan tersebut. Untuk informasi selengkapnya tentang Tanda Tangan Versi 4, lihat ProsesPenandatanganan Tanda Tangan Versi 4 dalam Referensi Umum Amazon Web Services.

Action

Tindakan yang harus dilakukan.

Tipe: string

340

Amazon Kinesis Video Streams Panduan DeveloperParameter Umum

Diperlukan: YaVersion

Versi API yang ditulis dalam permintaan, dinyatakan dalam format HH-BB-TTTT.

Tipe: string

Diperlukan: YaX-Amz-Algorithm

Algoritme hash yang Anda gunakan untuk membuat tanda tangan permintaan.

Kondisi: Tentukan parameter ini ketika Anda menyertakan informasi autentikasi dalam string kueri alih-alih di header otorisasi HTTP.

Tipe: string

Nilai yang Valid: AWS4-HMAC-SHA256

Diperlukan: BersyaratX-Amz-Credential

Nilai lingkup kredensial, yang merupakan string yang menyertakan access key Anda, tanggal, wilayahyang Anda targetkan, layanan yang Anda minta, dan string penghentian ("aws4_request"). Nilaidinyatakan dalam format berikut: access_key/HHBBTTTT/wilayah/layanan/aws4_request.

Untuk informasi selengkapnya, lihatTugas 2: Buat String untuk Signature Version 4diAmazon WebServices.

Kondisi: Tentukan parameter ini ketika Anda menyertakan informasi autentikasi dalam string kueri alih-alih di header otorisasi HTTP.

Tipe: string

Diperlukan: BersyaratX-Amz-Date

Tanggal yang digunakan untuk membuat tanda tangan. Format harus berupa format dasar ISO 8601(YYYYMMDD'T'HMMSS'Z'). Misalnya, waktu tanggal berikut adalah nilai X-Amz-Date yang valid:20120325T120000Z.

Kondisi: X-Amz-Date bersifat opsional untuk semua permintaan; ini dapat digunakan untuk menggantitanggal yang digunakan untuk menandatangani permintaan. Jika header Tanggal ditentukan dalamformat dasar ISO 8601, X-Amz-Date tidak diperlukan. Ketika X-Amz-Date digunakan, ia selalumengganti nilai header Tanggal. Untuk informasi selengkapnya, lihat Menangani Tanggal di TandaTangan Versi 4 dalam Referensi Umum Amazon Web Services.

Tipe: string

Diperlukan: BersyaratX-Amz-Security-Token

Token keamanan sementara yang diperoleh melalui panggilan ke AWS Security Token Service (STSAWS). Untuk daftar layanan yang mendukung kredensial keamanan sementara dari Security TokenService AWS, buka Layanan AWS Yang Bekerja dengan IAM dalam Panduan Pengguna IAM.

Kondisi: Jika Anda menggunakan kredensial keamanan sementara dariAWSSecurity Token Service,Anda harus menyertakan token keamanan.

Tipe: string

341

Amazon Kinesis Video Streams Panduan DeveloperParameter Umum

Diperlukan: BersyaratX-Amz-Signature

Menentukan tanda tangan yang dikodekan oleh hex yang dihitung dari string to sign dan kuncipenandatanganan turunan.

Kondisi: Tentukan parameter ini ketika Anda menyertakan informasi autentikasi dalam string kueri alih-alih di header otorisasi HTTP.

Tipe: string

Diperlukan: BersyaratX-Amz-SignedHeaders

Menentukan semua header HTTP yang disertakan sebagai bagian dari permintaan kanonik. Untukinformasi selengkapnya tentang menentukan header yang ditandatangani, lihatTugas 1: BuatPermintaan Kanonik Untuk Tanda Tangan Versi 4diAmazon Web Services.

Kondisi: Tentukan parameter ini ketika Anda menyertakan informasi autentikasi dalam string kueri alih-alih di header otorisasi HTTP.

Tipe: string

Diperlukan: Bersyarat

342

Amazon Kinesis Video Streams Panduan Developer

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

cccxliii