View a markdown version of this page

Model data Streaming 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.

Model data Streaming Video Kinesis

Unggah ke Kinesis Video StreamsDan Tonton keluaran dari kamera menggunakan perpustakaan parser mengirim dan menerima data video dalam format yang mendukung penyematan informasi bersama data video. Format ini didasarkan pada spesifikasi Matroska (MKV).

Format MKV adalah spesifikasi terbuka untuk data media. Semua pustaka dan contoh kode di Panduan Pengembang Amazon Kinesis Video Streams mengirim atau menerima data dalam format MKV.

Menggunakan Unggah ke Kinesis Video Streams StreamDefinition dan Frame tipe untuk menghasilkan header aliran MKV, header bingkai, dan data bingkai.

Untuk informasi tentang spesifikasi MKV lengkap, lihat Spesifikasi Matroska.

Bagian berikut menjelaskan komponen MKV-formatted data yang dihasilkan olehC++.

Elemen header aliran

Elemen header MKV berikut digunakan oleh StreamDefinition (didefinisikan dalamStreamDefinition.h).

Elemen Deskripsi Nilai tipikal
nama aliran Sesuai dengan nama aliran video Kinesis. aliran saya
periode retensi Durasi, dalam jam, data aliran dipertahankan oleh Kinesis Video Streams. Tentukan 0 untuk aliran yang tidak menyimpan data. 24
tag Kumpulan nilai kunci dari data pengguna. Data ini ditampilkan di Konsol Manajemen AWS dan dapat dibaca oleh aplikasi klien untuk memfilter atau mendapatkan informasi tentang aliran.
kms_key_id Jika ada, AWS KMS kunci yang ditentukan pengguna digunakan untuk mengenkripsi data pada aliran. Jika tidak ada, data dienkripsi oleh Kinesis-supplied kunci (aws/kinesisvideo). 01234567-89ab-cdef-0123-456789ab
tipe_streaming Saat ini, satu-satunya jenis streaming yang valid adalahSTREAMING_TYPE_REALTIME. STREAMING_TYPE_REALTIME
konten_tipe Jenis konten yang ditentukan pengguna. Agar data video streaming dapat diputar di konsol, jenis kontennya harusvideo/h264. video/h264
latensi maksimum Nilai ini saat ini tidak digunakan dan harus disetel ke 0. 0
fragmen_durasi Perkiraan berapa lama fragmen Anda seharusnya, yang digunakan untuk pengoptimalan. Durasi fragmen aktual ditentukan oleh data streaming. 2
timcode_scale

Menunjukkan skala yang digunakan oleh stempel waktu bingkai. Defaultnya adalah 1 milidetik. Men 0 entukan juga menetapkan nilai default 1 milidetik. Nilai ini bisa antara 100 nanodetik dan 1 detik.

Untuk informasi lebih lanjut, lihat TimecodeScale dalam dokumentasi Matroska.

fragmenti_frame_kunci Jikatrue, aliran memulai cluster baru saat keyframe diterima. benar
frame_timecodes Jikatrue, Kinesis Video Streams menggunakan nilai stempel waktu presentasi (pts) dan decoding time stamp (dts) dari frame yang diterima. Jikafalse, Kinesis Video Streams mencap frame saat diterima dengan nilai waktu yang dihasilkan sistem. benar
waktu fragment_mutlak Jikatrue, kode waktu cluster ditafsirkan menggunakan waktu absolut (misalnya, dari jam sistem produsen). Jikafalse, kode waktu cluster ditafsirkan sebagai relatif terhadap waktu mulai aliran. benar
fragmen_acks Jikatrue, ucapan terima kasih (ACK) dikirim saat Kinesis Video Streams menerima data. ACK dapat diterima menggunakan KinesisVideoStreamParseFragmentAck callback KinesisVideoStreamFragmentAck atau. benar
mulai ulang pada kesalahan Menunjukkan apakah aliran harus melanjutkan transmisi setelah kesalahan aliran muncul. benar
nal_adaptation_flag Menunjukkan apakah adaptasi NAL (Network Abstraction Layer) atau data pribadi codec hadir dalam konten. Bendera yang valid termasuk NAL_ADAPTATION_ANNEXB_NALS danNAL_ADAPTATION_ANNEXB_CPD_NALS. NAL_ADAPTATION_ANNEXB_NALS
frame_rate Perkiraan kecepatan bingkai konten. Nilai ini digunakan untuk pengoptimalan; frame rate aktual ditentukan oleh laju data yang masuk. Men 0 entukan menetapkan default dari24. 24
avg_bandwidth_bps Perkiraan bandwidth konten, dalam Mbps. Nilai ini digunakan untuk pengoptimalan; tingkat aktual ditentukan oleh bandwidth data yang masuk. Misalnya, untuk aliran video resolusi 720 p yang berjalan pada 25 FPS, Anda dapat mengharapkan bandwidth rata-rata menjadi 5 Mbps. 5
buffer_durasi Durasi konten yang akan di-buffer pada produser. Jika latensi jaringan rendah, nilai ini dapat dikurangi. Jika latensi jaringan tinggi, meningkatkan nilai ini mencegah frame dijatuhkan sebelum dapat dikirim, karena alokasi gagal memasukkan frame ke buffer yang lebih kecil.
durasi_putaran ulang Jumlah waktu aliran data video “diputar ulang” jika koneksi terputus. Nilai ini bisa nol jika frame yang hilang karena kehilangan koneksi tidak menjadi perhatian. Nilai dapat ditingkatkan jika aplikasi yang dikonsumsi dapat menghapus frame yang berlebihan. Nilai ini harus kurang dari durasi buffer, jika tidak durasi buffer digunakan.
koneksion_keabadian Durasi koneksi dipertahankan ketika tidak ada data yang diterima.
codec_id Codec yang digunakan oleh konten. Untuk informasi lebih lanjut, lihat CodeCid dalam spesifikasi Matroska. V_MPEG2
nama trek Nama trek yang ditentukan pengguna. jejaku
codec PrivateData Data yang disediakan oleh encoder digunakan untuk memecahkan kode data bingkai, seperti lebar bingkai dan tinggi dalam piksel, yang dibutuhkan oleh banyak konsumen hilir. Di pust aka produsen C++, gMkvTrackVideoBits array di menyer MkvStatics.cpp takan lebar piksel dan tinggi untuk bingkai.
codec PrivateDataSize Ukuran data dalam codecPrivateData parameter.
tipe_trek Jenis trek untuk aliran. MKV_TRACK_INFO_TYPE_AUDIO atau MKV_TRACK_INFO_TYPE_VIDEO
segmen_uuid User-defined segmen uuid (16 byte).
default_track_id Nomor unik bukan nol untuk trek. 1

Streaming data trek

Elemen trek MKV berikut digunakan oleh StreamDefinition (didefinisikan dalamStreamDefinition.h).

Elemen Deskripsi Nilai Khas
nama trek User-defined nama trek. Misalnya, “audio” untuk trek audio. audio
codec_id Id codec untuk trek. Misalnya, “A_AAC” untuk trek audio. A_AAC
CPD Data yang disediakan oleh encoder digunakan untuk memecahkan kode data bingkai. Data ini dapat mencakup lebar bingkai dan tinggi dalam piksel, yang dibutuhkan oleh banyak konsumen hilir. Di pust aka produsen C++, MkvTrackVideoBits array g di menyer MkvStatics.cpp takan lebar dan tinggi piksel untuk bingkai.
cpd_ukuran Ukuran data dalam PrivateData parameter codec.
tipe_trek Jenis trek. Misalnya, Anda dapat menggunakan nilai enum MKV_TRACK_INFO_TYPE_AUDIO untuk audio. MKV_TRACK_INFO_TIPE_AUDIO

Elemen header bingkai

Elemen header MKV berikut digunakan oleh Frame (didefinisikan dalam KinesisVideoPic paket, dimkvgen/Include.h):

  • Indeks Bingkai: Nilai yang meningkat secara monoton.

  • Bendera: Jenis bingkai. Nilai-nilai yang valid meliputi:

    • FRAME_FLAGS_NONE

    • FRAME_FLAG_KEY_FRAME: Jika key_frame_fragmentation diatur pada streaming, bingkai kunci memulai fragmen baru.

    • FRAME_FLAG_DISCARDABLE_FRAME: Memberi tahu decoder bahwa ia dapat membuang bingkai ini jika decoding lambat.

    • FRAME_FLAG_INVISIBLE_FRAME: Durasi blok ini adalah 0.

  • Decoding Timestamp: Stempel waktu kapan bingkai ini diterjemahkan. Jika frame sebelumnya bergantung pada frame ini untuk decoding, stempel waktu ini mungkin lebih awal dari frame sebelumnya. Nilai ini relatif terhadap awal fragmen.

  • Stempel Waktu Presentasi: Stempel waktu saat bingkai ini ditampilkan. Nilai ini relatif terhadap awal fragmen.

  • Dur asi: Durasi pemutaran bingkai.

  • Ukuran: Ukuran data bingkai dalam byte

Data bingkai MKV

Data di dalam frame.frameData mungkin hanya berisi data media untuk frame, atau mungkin berisi informasi header bersarang lebih lanjut, tergantung pada skema pengkodean yang digunakan. Untuk ditampilkan di Konsol Manajemen AWS, data harus dikodekan dalam H.264 codec, tetapi Kinesis Video Streams dapat menerima aliran data serial waktu dalam format apa pun.