Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
SDKCallback produser
Kelas dan metode di Produser Amazon Kinesis Video SDK Streams tidak mempertahankan prosesnya sendiri. Sebaliknya, mereka menggunakan panggilan fungsi masuk dan acara untuk menjadwalkan callback untuk berkomunikasi dengan aplikasi.
Ada dua pola callback yang dapat digunakan aplikasi untuk berinteraksi dengan: SDK
-
CallbackProvider
— Objek ini mengekspos setiap callback dari komponen platform-independent code (PIC) ke aplikasi. Pola ini memungkinkan fungsionalitas penuh, tetapi juga berarti bahwa implementasi harus menangani semua API metode publik dan tanda tangan di lapisan C++. -
StreamCallbackProviderdan ClientCallbackProvider — Objek ini mengekspos callback khusus aliran dan khusus klien, dan lapisan C++ dari mengekspos sisa callback. SDK Ini adalah pola callback yang disukai untuk berinteraksi dengan Produser. SDK
Diagram berikut menggambarkan model objek dari objek callback:
Dalam diagram sebelumnya, DefaultCallbackProvider
berasal dari CallbackProvider
(yang mengekspos semua callback di) dan berisi danPIC. StreamCallbackProvider
ClientCallbackProvider
Topik ini berisi bagian-bagian berikut:
ClientCallbackProvider
ClientCallbackProvider
Objek mengekspos fungsi callback tingkat klien. Rincian fungsi dijelaskan di ClientCallbacks struktur bagian ini.
Metode callback:
-
getClientReadyCallback
— Melaporkan keadaan siap untuk klien. -
getStorageOverflowPressureCallback
— Melaporkan limpahan penyimpanan atau tekanan. Callback ini dipanggil ketika pemanfaatan penyimpanan turun di bawahSTORAGE_PRESSURE_NOTIFICATION_THRESHOLD
nilai, yaitu 5 persen dari ukuran penyimpanan keseluruhan. Untuk informasi selengkapnya, lihat StorageInfo.
StreamCallbackProvider
StreamCallbackProvider
Objek mengekspos fungsi callback tingkat aliran.
Metode callback:
-
getDroppedFragmentReportCallback
: Melaporkan fragmen yang dijatuhkan. -
getDroppedFrameReportCallback
— Melaporkan bingkai yang jatuh. -
getFragmentAckReceivedCallback
— Melaporkan bahwa sebuah fragmen ACK diterima untuk aliran. -
getStreamClosedCallback
— Melaporkan kondisi aliran tertutup. -
getStreamConnectionStaleCallback
— Melaporkan kondisi koneksi basi. Dalam kondisi ini, produsen mengirim data ke layanan tetapi tidak menerima pengakuan. -
getStreamDataAvailableCallback
— Melaporkan bahwa data tersedia di aliran. -
getStreamErrorReportCallback
— Melaporkan kondisi kesalahan aliran. -
getStreamLatencyPressureCallback
— Melaporkan kondisi latensi aliran, yaitu ketika ukuran buffer akumulasi lebih besar dari nilaimax_latency
. Untuk informasi selengkapnya, lihat StreamDefinition/StreamInfo. -
getStreamReadyCallback
: —Melaporkan kondisi siap streaming. -
getStreamUnderflowReportCallback
— Melaporkan kondisi aliran underflow. Fungsi ini saat ini tidak digunakan dan dicadangkan untuk penggunaan masa depan.
Untuk kode sumbernyaStreamCallbackProvider
, lihat StreamCallbackProvider.h.
ClientCallbacks struktur
ClientCallbacks
Struktur berisi titik entri fungsi callback yang PIC dipanggil ketika peristiwa tertentu terjadi. Struktur juga berisi informasi versi di CALLBACKS_CURRENT_VERSION
bidang, dan customData
bidang untuk data yang ditentukan pengguna yang dikembalikan dengan fungsi callback individual.
Aplikasi klien dapat menggunakan this
pointer untuk custom_data
bidang untuk memetakan fungsi anggota ke ClientCallback
fungsi statis saat runtime, seperti yang ditunjukkan dalam contoh kode berikut:
STATUS TestStreamCallbackProvider::streamClosedHandler(UINT64 custom_data, STREAM_HANDLE stream_handle, UINT64 stream_upload_handle) { LOG_INFO("Reporting stream stopped."); TestStreamCallbackProvider* streamCallbackProvider = reinterpret_cast<TestStreamCallbackProvider*> (custom_data); streamCallbackProvider->streamClosedHandler(...);
Fungsi | Deskripsi | Jenis |
---|---|---|
CreateDeviceFunc |
Saat ini tidak diterapkan di backend. Panggilan ini gagal saat dipanggil dari Java atau C++. Klien lain melakukan inisialisasi khusus platform. | Backend API |
CreateStreamFunc |
Disebut saat aliran dibuat. | Backend API |
DescribeStreamFunc |
Disebut saat DescribeStream dipanggil. |
Backend API |
GetStreamingEndpointFunc |
Disebut saat GetStreamingEndpoint dipanggil. |
Backend API |
GetStreamingTokenFunc |
Disebut saat GetStreamingToken dipanggil. |
Backend API |
PutStreamFunc |
Disebut saat PutStream dipanggil. |
Backend API |
TagResourceFunc |
Disebut saat TagResource dipanggil. |
Backend API |
CreateMutexFunc |
Membuat mutex sinkronisasi. | Sinkronisasi |
FreeMutexFunc |
Membebaskan mutex. | Sinkronisasi |
LockMutexFunc |
Mengunci mutex sinkronisasi. | Sinkronisasi |
TryLockMutexFunc |
Mencoba mengunci mutex. Saat ini tidak diimplementasikan. | Sinkronisasi |
UnlockMutexFunc |
Membuka kunci mutex. | Sinkronisasi |
ClientReadyFunc |
Dipanggil ketika klien memasuki keadaan siap. | Notifikasi |
DroppedFrameReportFunc |
Melaporkan saat bingkai dijatuhkan. | Notifikasi |
DroppedFragmentReportFunc |
Melaporkan saat fragmen dijatuhkan. Fungsi ini saat ini tidak digunakan dan dicadangkan untuk penggunaan masa depan. | Notifikasi |
FragmentAckReceivedFunc |
Dipanggil ketika fragmen ACK (buffering, diterima, bertahan, dan kesalahan) diterima. | Notifikasi |
StorageOverflowPressureFunc |
Disebut ketika pemanfaatan penyimpanan turun di bawah STORAGE_PRESSURE_NOTIFICATION_THRESHOLD nilai, yang didefinisikan sebagai 5 persen dari ukuran penyimpanan keseluruhan. |
Notifikasi |
StreamClosedFunc |
Disebut ketika bit terakhir dari frame yang tersisa dialirkan. | Notifikasi |
StreamConnectionStaleFunc |
Dipanggil ketika aliran memasuki status koneksi basi. Dalam kondisi ini, produsen mengirimkan data ke layanan tetapi tidak menerima pengakuan. | Notifikasi |
StreamDataAvailableFunc |
Dipanggil saat data streaming tersedia. | Notifikasi |
StreamErrorReportFunc |
Dipanggil ketika terjadi kesalahan aliran. PICSecara otomatis menutup aliran dalam kondisi ini. | Notifikasi |
StreamLatencyPressureFunc |
Dipanggil ketika aliran memasuki kondisi latensi, yaitu ketika ukuran buffer akumulasi lebih besar dari nilaimax_latency . Untuk informasi selengkapnya, lihat StreamDefinition/StreamInfo. |
Notifikasi |
StreamReadyFunc |
Dipanggil ketika aliran memasuki keadaan siap. | Notifikasi |
StreamUnderflowReportFunc |
Fungsi ini saat ini tidak digunakan dan dicadangkan untuk penggunaan masa depan. | Notifikasi |
DeviceCertToTokenFunc |
Mengembalikan sertifikat koneksi sebagai token. | Integrasi platform |
GetCurrentTimeFunc |
Mengembalikan waktu saat ini. | Integrasi platform |
GetDeviceCertificateFunc |
Mengembalikan sertifikat perangkat. Fungsi ini saat ini tidak digunakan dan dicadangkan untuk penggunaan masa depan. | Integrasi platform |
GetDeviceFingerprintFunc |
Mengembalikan sidik jari perangkat. Fungsi ini saat ini tidak digunakan dan dicadangkan untuk penggunaan masa depan. | Integrasi platform |
GetRandomNumberFunc |
Mengembalikan nomor acak antara 0 danRAND_MAX . |
Integrasi platform |
GetSecurityTokenFunc |
Mengembalikan token keamanan yang diteruskan ke fungsi yang berkomunikasi dengan backendAPI. Implementasi dapat menentukan serialAccessKeyId ,SecretKeyId , dan token sesi. |
Integrasi platform |
LogPrintFunc |
Log baris teks dengan tag dan tingkat log. Untuk informasi selengkapnya, lihat PlatformUtils.h . |
Integrasi platform |
Untuk fungsi integrasi platform di tabel sebelumnya, parameter terakhir adalah ServiceCallContext
struktur, yang memiliki bidang berikut:
-
version
: Versi struct. -
callAfter
: Waktu absolut setelah itu untuk memanggil fungsi. -
timeout
: Batas waktu operasi dalam 100 unit nanodetik. -
customData
: Nilai yang ditentukan pengguna untuk diteruskan kembali ke klien. -
pAuthInfo
: Kredensi untuk panggilan tersebut. Untuk informasi selengkapnya, lihat struktur (__AuthInfo
) berikut.
Informasi otorisasi disediakan menggunakan __AuthInfo
struktur, yang dapat berupa kredensyal serial atau token otentikasi khusus penyedia. Struktur ini memiliki bidang-bidang berikut:
-
version
: Versi__AuthInfo
struktur. -
type
:AUTH_INFO_TYPE
Nilai yang menentukan jenis kredensi (sertifikat atau token keamanan). -
data
: Sebuah array byte yang berisi informasi otentikasi. -
size
: Ukurandata
parameter. -
expiration
: Kedaluwarsa kredensil dalam 100 unit nanodetik.
Implementasi callback untuk mencoba lagi streaming
Kinesis Video Producer SDK menyediakan status streaming melalui fungsi callback. Kami menyarankan Anda menerapkan mekanisme callback berikut untuk memulihkan dari masalah jaringan sesaat yang dihadapi selama streaming.
-
Streaming latency pressure callback - mekanisme callback ini akan dimulai ketika SDK menemukan kondisi latensi aliran. Ini terjadi ketika ukuran buffer akumulasi lebih besar dari LATENCY nilai MAX _. Saat streaming dibuat, aplikasi streaming menetapkan MAX _ LATENCY ke nilai default 60 detik. Implementasi khas untuk panggilan balik ini adalah mengatur ulang koneksi. Anda dapat menggunakan implementasi sampel di https://github.com/awslabs/amazon-kinesis-video-streams- producer-sdk-cpp /blob/master/ kinesis-video-c-producer /src/source/ StreamLatencyStateMachine .c sesuai kebutuhan
. Perhatikan bahwa tidak ada opsi untuk menyimpan frame yang tidak terkirim karena pemadaman jaringan ke penyimpanan sekunder untuk pengisian ulang. -
Streaming staleness callback - callback ini akan dimulai ketika produsen dapat mengirim data ke layanan Amazon Kinesis Data Streams (uplink) tetapi tidak bisa mendapatkan pengakuan (buffer) kembali tepat waktu (ACKdefault adalah 60 detik). Bergantung pada pengaturan jaringan, panggilan balik tekanan latensi aliran atau callback staleness aliran, atau keduanya dapat dimulai. Mirip dengan implementasi coba ulang panggilan balik tekanan latensi aliran, implementasi tipikal adalah mengatur ulang koneksi dan memulai koneksi baru untuk streaming. Anda dapat menggunakan implementasi sampel di https://github.com/awslabs/amazon-kinesis-video-streamsConnectionStaleStateMachine-producer-c/blob/master/src/source/
.c sesuai kebutuhan. -
Stream error callback - callback ini akan dimulai ketika SDK menemukan batas waktu pada koneksi jaringan atau kesalahan lainnya selama panggilan ke panggilan layanan. KVS API
-
Panggilan balik bingkai yang dijatuhkan - panggilan balik ini dimulai ketika ukuran penyimpanan penuh baik karena kecepatan jaringan yang lambat atau kesalahan aliran. Jika kecepatan jaringan menghasilkan frame yang turun, Anda dapat meningkatkan ukuran penyimpanan, mengurangi ukuran bingkai video, atau kecepatan bingkai agar sesuai dengan kecepatan jaringan.