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, 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_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 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, 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, 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 (yangAb(Sps)Ab(Pps)), dan mengaturnya di CPD dalamStreamDefinition.

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.