Model data Kinesis Video Streams - 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 Kinesis Video Streams

Perpustakaan Pengurai AliranMengirim Pustaka Produser 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 dalam Panduan Pengembang Amazon Kinesis Video Streams mengirim atau menerima data dalam format MKV.

Perpustakaan Produser Aliran Video KinesisMenggunakan StreamDefinition dan Frame jenis untuk menghasilkan header aliran MKV, header bingkai, dan data bingkai.

Untuk informasi tentang spesifikasi MKV lengkap, lihat Spesifikasi Matroska.

Bagian berikut menjelaskan komponen data berformat MKV yang dihasilkan oleh. Perpustakaan Produser C ++

Elemen header aliran

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

Elemen Deskripsi Nilai-nilai khas
stream_name Sesuai dengan nama aliran video Kinesis. aliran saya
retensi_periode Durasi, dalam beberapa jam, data streaming dipertahankan oleh Kinesis Video Streams. 0Tentukan aliran yang tidak menyimpan data. 24
tag Pengumpulan nilai kunci data pengguna. Data ini ditampilkan di AWS Management Console 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 kunci yang disediakan Kinesis (). aws/kinesis-video 01234567-89ab-cdef-0123-456789ab
streaming_type Saat ini, satu-satunya jenis streaming yang valid adalahSTREAMING_TYPE_REALTIME. STREAMING_TYPE_REALTIME
content_type Jenis konten yang ditentukan pengguna. Untuk streaming data video untuk diputar di konsol, jenis konten harusvideo/h264. Video/h264
max_latensi Nilai ini saat ini tidak digunakan dan harus disetel ke 0. 0
fragment_duration Perkiraan berapa lama fragmen Anda seharusnya, yang digunakan untuk optimasi. Durasi fragmen aktual ditentukan oleh data streaming. 2
timecode_scale

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

Untuk informasi lebih lanjut, lihat TimecodeScaledi dokumentasi Matroska.

key_frame_fragmentasi 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
absolute_fragment_time 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
fragment_acks Jikatrue, tanda terima kasih (ACK) dikirim saat Kinesis Video Streams menerima data. ACK dapat diterima menggunakan KinesisVideoStreamFragmentAck atau KinesisVideoStreamParseFragmentAck callback. benar
restart_on_error Menunjukkan apakah aliran harus melanjutkan transmisi setelah kesalahan aliran dinaikkan. benar
nal_adaptation_flags 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 frame rate konten. Nilai ini digunakan untuk optimasi; frame rate aktual ditentukan oleh laju data yang masuk. Menentukan 0 menetapkan default dari. 24 24
avg_bandwidth_bps Perkiraan bandwidth konten, dalam Mbps. Nilai ini digunakan untuk optimasi; 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_duration 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 bingkai ke buffer yang lebih kecil.
replay_duration Jumlah waktu aliran data video “diputar ulang” jika koneksi terputus. Nilai ini bisa nol jika frame yang hilang karena kehilangan koneksi tidak menjadi perhatian. Nilainya dapat ditingkatkan jika aplikasi yang dikonsumsi dapat menghapus frame yang berlebihan. Nilai ini harus kurang dari durasi buffer, jika tidak durasi buffer digunakan.
connection_staleness 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
track_name Nama trek yang ditentukan pengguna. my_track
codecPrivateData Data yang disediakan oleh encoder digunakan untuk memecahkan kode data frame, seperti lebar bingkai dan tinggi dalam piksel, yang dibutuhkan oleh banyak konsumen hilir. Di Perpustakaan Produser C ++, gMkvTrackVideoBits array MkvStatics.cpp termasuk lebar piksel dan tinggi untuk bingkai.
codecPrivateDataUkuran Ukuran data dalam codecPrivateData parameter.
track_type Jenis trek untuk aliran. MKV_TRACK_INFO_TYPE_AUDIO atau MKV_TRACK_INFO_TYPE_VIDEO
segment_uuid Uuid segmen yang ditentukan pengguna (16 byte).
default_track_id Nomor unik bukan nol untuk trek. 1

Alirkan data trek

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

Elemen Deskripsi Nilai Khas
track_name Nama trek yang ditentukan pengguna. Misalnya, “audio” untuk trek audio. audio
codec_id Codec id untuk trek. Misalnya, “A_AAC” untuk trek audio. A_AAC
cpd Data yang disediakan oleh encoder digunakan untuk memecahkan kode data frame. Data ini dapat mencakup lebar bingkai dan tinggi dalam piksel, yang dibutuhkan oleh banyak konsumen hilir. Di C++ Producer Library, gMkvTrack VideoBits array MkvStatics di.cpp menyertakan lebar piksel dan tinggi untuk frame.
cpd_size Ukuran data dalam codecPrivateData parameter.
track_type Jenis trek. Misalnya, Anda dapat menggunakan nilai enum MKV_TRACK_INFO_TYPE_AUDIO untuk audio. MKV_TRACK_INFO_TYPE_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 yang valid adalah sebagai berikut:

    • FRAME_FLAGS_NONE

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

    • FRAME_FLAG_DISCARDABLE_FRAME: Memberitahu decoder bahwa ia dapat membuang frame 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 kapan bingkai ini ditampilkan. Nilai ini relatif terhadap awal fragmen.

  • Durasi: Durasi pemutaran frame.

  • Ukuran: Ukuran data frame dalam byte

Data bingkai MKV

Data di 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 diAWS Management Console, data harus dikodekan dalam codec H.264, tetapi Kinesis Video Streams dapat menerima aliran data berseri waktu dalam format apa pun.