Struktur aliran video Kinesis - Amazon Kinesis Video Streams

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

StreamDefinitionObjek 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, lihatBatas SDK 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 ID AWS KMS kunci yang akan digunakan untuk mengenkripsi aliran. Untuk informasi selengkapnya, lihat Perlindungan data di Kinesis Video Streams. Kunci KMS default (aws/kinesis-video.)
streaming_type STREAMING_TYPEpencacahan 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 kode waktu MKV dalam milidetik, yang menentukan granularitas kode waktu untuk bingkai dalam cluster MKV. Timecode bingkai MKV selalu relatif terhadap awal cluster. MKV menggunakan 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 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 dalam Kinesis Video Streams. true
absolute_fragment_times bool Kinesis Video Streams menggunakan MKV sebagai mekanisme pengemasan yang mendasarinya. Spesifikasi MKV 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, panggilan API 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 ACK fragmen tingkat aplikasi (ucapan terima kasih). true, artinya SDK akan menerima ACK 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 CPU kecil. 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 Network Abstraction Layer (NALU). Jika bitstream dikodekan H.264, maka dapat diproses sebagai mentah atau dikemas dalam NALU. Itu dalam format Lampiran-B atau 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 format AVCC, yang merupakan format default untuk MPEG, HLS, DASH, dan sebagainya. Pemutaran konsol menggunakan MSE browser (ekstensi sumber media) untuk memecahkan kode dan memutar ulang aliran yang menggunakan format AVCC. Untuk H.264 (dan untuk M-JPEG dan H.265), SDK menyediakan kemampuan adaptasi.

Banyak aliran dasar dalam format berikut. Dalam contoh ini, Ab adalah kode awal Lampiran-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)

Dalam kasus H.264, codec private data (CPD) ada dalam parameter SPS (sequence parameter set) dan PPS (picture parameter set), dan dapat disesuaikan dengan format AVCC. Kecuali pipa media memberikan CPD secara terpisah, aplikasi dapat mengekstrak CPD dari bingkai. Hal ini dapat dilakukan dengan mencari frame IDR pertama (yang harus berisi SPS dan PPS), mengekstrak dua NALU (yangAb(Sps)Ab(Pps)), dan mengaturnya di CPD di. StreamDefinition

Untuk informasi selengkapnya, lihat Bendera Adaptasi NAL.

Defaultnya adalah mengadaptasi format Lampiran-B ke format AVCC 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. SDK menyimpan bingkai di penyimpanan 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 ACK diterima. 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 ACK yang bertahan 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 dalam buffer internalnya), rollback berhenti pada frame ACK yang terakhir diterima. 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 aliran dipanggil jika SDK tidak menerima ACK buffering. 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 trek MKV. V_MPEG4/ISO/AVC
track_name string Nama trek MKV. kinesis_video
codecPrivateData unsigned char* Buffer data pribadi codec (CPD). Jika pipa media memiliki informasi tentang CPD sebelum aliran dimulai, itu dapat diatur. StreamDefinition.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 lapisan PIC.
overallViewDuration UINT64 Durasi tampilan keseluruhan. Jika aliran dikonfigurasi tanpa ACK atau persistensi, nilai ini tumbuh saat frame dimasukkan ke dalam aliran video Kinesis dan menjadi sama dengan buffer_duration di. StreamDefinition Ketika ACK diaktifkan dan ACK yang bertahan diterima, buffer dipangkas ke bingkai kunci berikutnya. Ini karena stempel waktu ACK menunjukkan awal dari seluruh fragmen. Durasi ditentukan dalam satuan 100-ns, yang merupakan satuan waktu default untuk lapisan PIC.
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.