Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Struktur aliran video Kinesis
Anda dapat menggunakan struktur berikut untuk menyediakan data ke instance aliran video Kinesis.
StreamDefinition/StreamInfo
StreamDefinition
Objek di lapisan C ++ membungkus StreamInfo
objek dalam kode platform-independen, dan memberikan beberapa nilai default dalam konstruktor.
Bidang anggota
Field | Jenis data | Deskripsi | Nilai default |
---|---|---|---|
stream_name | string |
Nama aliran opsional. Untuk informasi selengkapnya tentang panjang nama aliran, lihatSDKKuota produsen. Setiap aliran harus memiliki nama yang unik. | Jika tidak ada nama yang ditentukan, nama dihasilkan secara acak. |
retensi_periode | duration<uint64_t,
ratio<3600>> |
Periode retensi untuk aliran, dalam hitungan detik. Menentukan 0 menunjukkan tidak ada retensi. |
3600 (Satu jam) |
tag | const map<string, string>*
|
Peta pasangan kunci-nilai yang berisi informasi pengguna. Jika aliran sudah memiliki satu set tag, tag baru ditambahkan ke set tag yang ada. | Tidak ada tag |
kms_key_id | string |
Bagian AWS KMS ID kunci yang akan digunakan untuk mengenkripsi aliran. Untuk informasi selengkapnya, lihat Perlindungan data di Kinesis Video Streams. | KMSKunci default (aws/kinesis-video .) |
streaming_type | STREAMING_TYPE pencacahan |
Satu-satunya nilai yang di-support adalah STREAMING_TYPE_REALTIME . |
|
content_type | string |
Format konten aliran. Konsol Kinesis Video Streams dapat memutar ulang konten video/h264 dalam format. |
video/h264 |
max_latensi | duration<uint64_t, milli> |
Latensi maksimum dalam milidetik untuk aliran. Panggilan balik tekanan latensi aliran (jika ditentukan) dipanggil ketika durasi buffer melebihi jumlah waktu ini. Menentukan 0 menunjukkan bahwa tidak ada panggilan balik tekanan latensi aliran yang akan dipanggil. |
milliseconds::zero() |
fragment_duration | duration<uint64_t> |
Durasi fragmen yang Anda inginkan, dalam hitungan detik. Nilai ini digunakan dalam kombinasi dengan key_frame_fragmentation nilai. Jika nilai inifalse , Kinesis Video Streams menghasilkan fragmen pada bingkai kunci setelah durasi ini berlalu. Misalnya, aliran audio Advanced Audio Coding (AAC) memiliki setiap frame sebagai bingkai kunci. Menentukan key_frame_fragmentation = false menyebabkan fragmentasi terjadi pada bingkai kunci setelah durasi ini berakhir, menghasilkan fragmen 2 detik. |
2 |
timecode_scale | duration<uint64_t, milli> |
Skala MKV kode waktu dalam milidetik, yang menentukan granularitas kode waktu untuk bingkai di dalam cluster. MKV Kode waktu MKV bingkai selalu relatif terhadap awal cluster. MKVmenggunakan nilai 16-bit yang ditandatangani (0-32767) untuk mewakili kode waktu dalam cluster (fragmen). Verifikasi bahwa kode waktu bingkai dapat direpresentasikan dengan skala kode waktu yang diberikan. Nilai skala kode waktu default 1 ms memastikan bahwa bingkai terbesar yang dapat direpresentasikan adalah 32767 ms ~= 32 detik. Ini melebihi durasi fragmen maksimum yang ditentukan dalamKuota layanan Amazon Kinesis Video Streams, yaitu 10 detik. | 1 |
key_frame_fragmentasi | bool |
Apakah akan menghasilkan fragmen pada bingkai kunci. Jikatrue , SDK menghasilkan awal fragmen setiap kali ada bingkai kunci. Jikafalse , Kinesis Video Streams menunggu setidaknya dan menghasilkan fragmen baru fragment_duration pada bingkai kunci yang mengikutinya. |
true |
frame_timecodes | bool |
Apakah akan menggunakan kode waktu bingkai atau membuat stempel waktu menggunakan callback waktu saat ini. Banyak encoder tidak menghasilkan stempel waktu dengan bingkai. Jadi menentukan false parameter ini memastikan bahwa frame diberi stempel waktu saat dimasukkan ke Kinesis Video Streams. |
true |
absolute_fragment_times | bool |
Kinesis Video MKV Streams digunakan sebagai mekanisme pengemasan yang mendasarinya. MKVSpesifikasinya ketat tentang kode waktu bingkai yang relatif terhadap awal cluster (fragmen). Namun, kode waktu cluster dapat bersifat absolut atau relatif terhadap waktu mulai aliran. Jika stempel waktu relatif, API panggilan PutMedia layanan menggunakan stempel waktu mulai aliran opsional dan menyesuaikan stempel waktu cluster. Layanan selalu menyimpan fragmen dengan stempel waktu absolutnya. |
true |
fragment_acks | bool |
Apakah akan menerima fragmen tingkat aplikasi ACKs (ucapan terima kasih). | true , yang berarti bahwa SDK akan menerima ACKs dan bertindak sesuai dengan itu. |
restart_on_error | bool |
Apakah akan memulai ulang pada kesalahan tertentu. | true , artinya SDK mencoba memulai ulang streaming jika terjadi kesalahan. |
hitung ulang_metrik | bool |
Apakah akan menghitung ulang metrik. Setiap panggilan untuk mengambil metrik dapat menghitung ulang untuk mendapatkan nilai “berjalan” terbaru, yang mungkin menciptakan dampak kecil. CPU Anda mungkin perlu mengatur ini false pada perangkat berdaya/footprint yang sangat rendah untuk menghemat siklus. CPU Jika tidak, kami tidak menyarankan penggunaan false untuk nilai ini. |
true |
nal_adaptation_flags | uint32_t |
Menentukan flag adaptasi unit (NALU) Network Abstraction Layer. Jika bitstream dikodekan H.264, maka dapat diproses sebagai mentah atau dikemas dalam. NALUs Itu ada di Lampiran-B atau format. AVCC Sebagian besar produsen dan konsumen aliran dasar (baca encoder dan decoder) menggunakan format Annex-B karena memiliki kelebihan, seperti pemulihan kesalahan. Sistem tingkat yang lebih tinggi menggunakan AVCC format, yang merupakan format default untukMPEG,, HLSDASH, dan sebagainya. Pemutaran konsol menggunakan browser MSE (ekstensi sumber media) untuk memecahkan kode dan memutar ulang aliran yang menggunakan AVCC format. Untuk H.264 (dan untuk M- JPEG dan H.265), menyediakan kemampuan adaptasi. SDK Banyak aliran dasar dalam format berikut. Dalam contoh ini,
Dalam kasus H.264, data pribadi codec (CPD) ada dalam parameter SPS (set parameter urutan) dan PPS (set parameter gambar), dan dapat disesuaikan dengan format. AVCC Kecuali jika pipa media memberikan CPD secara terpisah, aplikasi dapat mengekstrak CPD dari bingkai. Hal ini dapat dilakukan dengan mencari IDR frame pertama (yang harus berisi SPS danPPS), ekstrak dua NALUs (yang Untuk informasi selengkapnya, lihat Referensi bendera adaptasi Network Abstraction Layer (NAL). |
Defaultnya adalah mengadaptasi format Lampiran-B ke AVCC format untuk data frame dan untuk data pribadi codec. |
frame_rate | uint32_t |
Frame rate yang diharapkan. Nilai ini digunakan untuk menghitung kebutuhan buffering dengan lebih baik. | 25 |
avg_bandwidth_bps | uint32_t |
Bandwidth rata-rata yang diharapkan untuk aliran. Nilai ini digunakan untuk menghitung kebutuhan buffering dengan lebih baik. | 4 * 1024 * 1024 |
buffer_duration | duration<uint64_t> |
Durasi buffer aliran, dalam hitungan detik. Itu SDK menyimpan bingkai di toko konten hinggabuffer_duration , setelah itu bingkai sebelumnya dijatuhkan saat jendela bergerak maju. Jika frame yang dijatuhkan belum dikirim ke backend, callback frame yang dijatuhkan dipanggil. Jika durasi buffer saat ini lebih besar darimax_latency , maka panggilan balik tekanan latensi aliran dipanggil. Buffer dipangkas ke awal fragmen berikutnya ketika fragmen bertahan diterima. ACK Ini menunjukkan bahwa konten telah bertahan lama di cloud, jadi menyimpan konten di perangkat lokal tidak lagi diperlukan. |
120 |
replay_duration | duration<uint64_t> |
Durasi, dalam hitungan detik, untuk memutar pembaca saat ini ke belakang untuk memutar ulang selama kesalahan jika restart diaktifkan. Rollback berhenti di awal buffer (jika baru saja mulai streaming atau persisten ACK telah datang). Rollback mencoba mendarat di bingkai kunci yang menunjukkan awal fragmen. Jika kesalahan yang 'menyebabkan restart tidak menunjukkan host mati (host masih hidup dan berisi data bingkai di buffer internalnya), rollback berhenti pada frame yang diterima terakhir. ACK Kemudian berguling ke depan ke bingkai kunci berikutnya, karena seluruh fragmen sudah disimpan dalam memori host. | 40 |
connection_staleness | duration<uint64_t> |
Waktu, dalam hitungan detik, setelah itu callback staleness stream dipanggil jika SDK tidak menerima buffering. ACK Ini menunjukkan bahwa frame sedang dikirim dari perangkat, tetapi backend tidak mengakuinya. Kondisi ini menunjukkan koneksi terputus pada hop menengah atau pada penyeimbang beban. | 30 |
codec_id | string |
ID codec untuk MKV trek. | V_MPEG4/ISO/AVC |
track_name | string |
Nama MKV trek. | kinesis_video |
codecPrivateData | unsigned char* |
Buffer data pribadi codec (CPD). Jika pipa media memiliki informasi tentang CPD sebelum aliran dimulai, itu dapat diaturStreamDefinition.codecPrivateData . Bit disalin, dan buffer dapat digunakan kembali atau dibebaskan setelah panggilan untuk membuat aliran. Namun, jika data tidak tersedia saat aliran dibuat, itu dapat diatur di salah satu kelebihan KinesisVideoStream.start(cpd) fungsi. |
null |
codecPrivateDataUkuran | uint32_t |
Ukuran buffer data pribadi codec. | 0 |
ClientMetrics
ClientMetricsObjek diisi dengan menelepongetKinesisVideoMetrics
.
Bidang anggota
Field | Jenis data | Deskripsi |
---|---|---|
versi | UINT32 |
Versi struktur, didefinisikan dalam CLIENT_METRICS_CURRENT_VERSION makro. |
contentStoreSize | UINT64 |
Ukuran penyimpanan konten keseluruhan dalam byte. Ini adalah nilai yang ditentukan dalamDeviceInfo.StorageInfo.storageSize . |
contentStoreAvailableUkuran | UINT64 |
Ukuran penyimpanan yang tersedia saat ini dalam byte. |
contentStoreAllocatedUkuran | UINT64 |
Ukuran yang dialokasikan saat ini. Ukuran yang dialokasikan ditambah yang tersedia harus sedikit lebih kecil dari ukuran penyimpanan keseluruhan, karena pembukuan internal dan implementasi toko konten. |
totalContentViewsUkuran | UINT64 |
Ukuran memori yang dialokasikan untuk semua tampilan konten untuk semua aliran. Ini tidak dihitung terhadap ukuran penyimpanan. Memori ini dialokasikan menggunakan MEMALLOC makro, yang dapat ditimpa untuk menyediakan pengalokasi khusus. |
totalFrameRate | UINT64 |
Total frame rate yang diamati di semua aliran. |
totalTransferRate | UINT64 |
Total laju aliran yang diamati dalam byte per detik di semua aliran. |
StreamMetrics
StreamMetricsObjek diisi dengan menelepongetKinesisVideoMetrics
.
Bidang anggota
Field | Jenis data | Deskripsi |
---|---|---|
versi | UINT32 |
Versi struktur, didefinisikan dalam STREAM_METRICS_CURRENT_VERSION makro. |
currentViewDuration | UINT64 |
Durasi frame yang terakumulasi. Dalam kasus jaringan cepat, durasi ini adalah nol atau durasi bingkai (saat bingkai sedang ditransmisikan). Jika durasi menjadi lebih panjang dari max_latency yang ditentukan dalamStreamDefinition , panggilan balik latensi aliran dipanggil jika ditentukan. Durasi ditentukan dalam satuan 100 ns, yang merupakan satuan waktu default untuk PIC lapisan. |
overallViewDuration | UINT64 |
Durasi tampilan keseluruhan. Jika aliran dikonfigurasi tanpa ACKs atau persistensi, nilai ini tumbuh saat frame dimasukkan ke dalam aliran video Kinesis dan menjadi sama dengan buffer_duration di. StreamDefinition Ketika ACKs diaktifkan dan persisten ACK diterima, buffer dipangkas ke bingkai kunci berikutnya. Ini karena ACK stempel waktu menunjukkan awal dari seluruh fragmen. Durasi ditentukan dalam satuan 100-ns, yang merupakan satuan waktu default untuk PIC lapisan. |
currentViewSize | UINT64 |
Ukuran dalam byte buffer saat ini. |
overallViewSize | UINT64 |
Ukuran tampilan keseluruhan dalam byte. |
currentFrameRate | UINT64 |
Frame rate yang diamati untuk aliran saat ini. |
currentTransferRate | UINT64 |
Kecepatan transfer yang diamati dalam byte per detik untuk aliran saat ini. |