Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tonton output dari kamera menggunakan pustaka parserMengirim Unggah ke Kinesis Video Streams dan menerima data video dalam format yang mendukung penyematan informasi bersama data video. Format ini didasarkan pada spesifikasi Matroska (MKV).
Format MKV
Unggah ke Kinesis Video StreamsMenggunakan 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. C++
Elemen header aliran
Elemen header MKV berikut digunakan oleh StreamDefinition
(didefinisikan dalamStreamDefinition.h
).
Elemen | Deskripsi | 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. 0 Tentukan 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/kinesisvideo |
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 Untuk informasi lebih lanjut, lihat TimecodeScale |
|
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 (ACKs) dikirim saat Kinesis Video Streams menerima data. ACKs 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 |
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 pustaka 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 pustaka produser C ++, gMkvTrack VideoBits array MkvStatics di.cpp menyertakan lebar piksel dan tinggi untuk bingkai. | |
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-nilai yang valid meliputi:
-
FRAME_FLAGS_NONE
-
FRAME_FLAG_KEY_FRAME
: Jikakey_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 di AWS Management Console, data harus dikodekan dalam codec H.264