Referensi API AOQ Client SDK HarmonyOS (OHOS). Bahasa platform adalah ArkTS (.ets), yang dijembatani ke engine C++ melalui NAPI.
Indeks API
Siklus hidup engine
API | Deskripsi |
|---|---|
createEngine | Buat instans engine (singleton) |
destroy | Hapus instans engine |
getVersion | Ambil string versi SDK |
connect | Hubungkan ke server Relay |
disconnect | Putuskan koneksi dari server |
Manajemen perangkat audio
API | Deskripsi |
|---|---|
startAudioCapture | Buka perangkat capture audio (mikrofon) |
stopAudioCapture | Tutup perangkat capture audio |
muteAudioCapture | Bisukan atau aktifkan kembali capture audio |
startAudioPlayer | Mulai pemutaran audio (mainkan audio remote) |
stopAudioPlayer | Hentikan pemutaran audio |
pauseAudioPlayer | Jeda pemutaran audio dengan fade-out opsional |
resumeAudioPlayer | Lanjutkan pemutaran audio dengan fade-in opsional |
interruptAudioPlayer | Interupsi giliran panggilan audio saat ini |
enableSpeakerphone | Alihkan output audio antara speaker dan earpiece |
isSpeakerphoneEnabled | Periksa apakah speaker sedang aktif |
Konfigurasi kodek audio
API | Deskripsi |
|---|---|
setAudioEncoderConfig | Atur parameter encoding audio |
setAudioDecoderConfig | Atur parameter decoding audio |
Manajemen perangkat video
API | Deskripsi |
|---|---|
startVideoCapture | Buka perangkat capture video (kamera) |
stopVideoCapture | Tutup perangkat capture video |
switchCamera | Alihkan antara kamera depan dan belakang |
setLocalView | Atur atau hapus tampilan rendering video lokal |
setRemoteView | Atur atau hapus tampilan rendering video remote |
Encoding video dan input eksternal
API | Deskripsi |
|---|---|
setVideoEncoderConfig | Atur parameter encoding video |
pushExternalVideoCapturedFrame | Dorong frame video mentah yang ditangkap secara eksternal |
pushExternalVideoEncodedFrame | Dorong frame video yang telah diencode secara eksternal |
Kontrol aliran media
API | Deskripsi |
|---|---|
enableSendMediaStream | Aktifkan atau nonaktifkan pengiriman aliran media lokal |
Pemutaran file audio
API | Deskripsi |
|---|---|
startAudioFile | Mulai streaming file audio lokal |
stopAudioFile | Hentikan pemutaran file audio |
pauseAudioFile | Jeda pemutaran file audio |
resumeAudioFile | Lanjutkan pemutaran file audio |
getAudioFileDuration | Ambil durasi total file audio |
getAudioFileCurrentPosition | Ambil posisi pemutaran saat ini |
setAudioFilePositionMillis | Lompat ke posisi tertentu dalam file audio |
setAudioFileVolume | Atur volume file audio |
getAudioFileVolume | Ambil volume file audio saat ini |
Aliran audio eksternal
API | Deskripsi |
|---|---|
addAudioExternalStream | Tambahkan aliran audio eksternal |
removeAudioExternalStream | Hapus aliran audio eksternal |
pushAudioExternalStreamData | Dorong data audio PCM eksternal |
setAudioExternalStreamVolume | Atur volume untuk aliran audio eksternal |
getAudioExternalStreamVolume | Ambil volume untuk aliran audio eksternal |
clearAudioExternalStreamBuffer | Bersihkan buffer untuk aliran audio eksternal |
Pesan real-time
API | Deskripsi |
|---|---|
sendDataMsg | Kirim pesan data real-time |
Callback frame audio
API | Deskripsi |
|---|---|
setAudioFrameObserver | Atur observer callback data frame audio |
enableAudioFrameObserver | Aktifkan atau nonaktifkan callback frame audio pada titik tertentu |
Callback frame video
API | Deskripsi |
|---|---|
setVideoFrameObserver | Atur observer callback data frame video |
enableVideoFrameObserver | Aktifkan atau nonaktifkan callback frame video pada titik tertentu |
Callback AoqEngineEventListener
Callback | Deskripsi |
|---|---|
onError | Callback error engine |
onWarning | Callback peringatan engine |
onConnectionStatusChange | Callback perubahan status koneksi |
onStats | Callback statistik |
onAudioDeviceStateChanged | Callback perubahan status perangkat audio |
onAudioDeviceRouteChanged | Callback perubahan rute output audio |
onAudioDeviceInterrupted | Callback interupsi perangkat audio |
onVideoDeviceStateChanged | Callback perubahan status perangkat video |
onAudioFileState | Callback status pemutaran file audio |
onDataMsg | Callback pesan data real-time diterima |
IAudioFrameObserver | Antarmuka observer data frame audio |
IVideoFrameObserver | Antarmuka observer data frame video |
Detail API
Siklus hidup engine
createEngine
Buat instans engine. SDK menyimpan engine sebagai singleton global; pemanggilan ulang metode ini akan mengembalikan instans yang sudah ada. Mengembalikan null jika inisialisasi engine native gagal.
Parameter | Tipe | Deskripsi |
|---|---|---|
config | AoqCreateConfig | Konfigurasi pembuatan engine |
listener | AoqEngineEventListener | Pendengar callback event engine (antarmuka; semua callback opsional) |
context | common.Context | Konteks UIAbility/Halaman, digunakan untuk inisialisasi aki+ACPM |
AoqClientEngine | null — null jika pembuatan native gagal.
Catatan: Berbeda dengan Android, SDK ini mengembalikan null saat gagal. Selalu periksa nilai kembalian terhadap null. context harus berupa konteks UIAbility atau Halaman yang valid.
destroy
Hapus singleton engine dan lepaskan semua sumber daya. Anda harus memanggil createEngine lagi sebelum melanjutkan penggunaan.
getVersion
Ambil string versi SDK saat ini.
"1.0.0".
connect
Hubungkan ke server Relay. Parameter koneksi dialokasikan oleh server aplikasi melalui /api/v1/allocate dan dikirimkan ke klien.
Parameter | Type | Deskripsi |
|---|---|---|
config | AoqConnectConfig | Konfigurasi koneksi, termasuk token, SID, dan daftar titik akhir Relay |
onConnectionStatusChange. Disarankan untuk memanggil enableSendMediaStream(false) sebelum memanggil connect.
disconnect
Putuskan koneksi dari server dan lepaskan sumber daya terkait koneksi. Perangkat capture/pemutaran audio dan video tidak dihentikan secara otomatis.
Manajemen perangkat audio
startAudioCapture
Buka perangkat capture audio (mikrofon).
Parameter | Tipe | Deskripsi |
|---|---|---|
config | AoqAudioCaptureConfig | Konfigurasi capture |
stopAudioCapture
Tutup perangkat capture audio.
muteAudioCapture
Bisukan atau aktifkan kembali capture audio.
Parameter | Tipe | Deskripsi |
|---|---|---|
mute | boolean | true: bisukan; false: aktifkan kembali |
startAudioPlayer
Mulai pemutaran audio (mainkan audio remote melalui speaker atau earpiece).
Parameter | Type | Deskripsi |
|---|---|---|
config | AoqAudioPlaybackConfig | Konfigurasi pemutaran |
stopAudioPlayer
Hentikan pemutaran audio.
pauseAudioPlayer
Jeda pemutaran audio dengan fade-out opsional untuk transisi yang mulus.
Parameter | Tipe | Deskripsi |
|---|---|---|
fadeMs | number | Durasi fade-out (milidetik); 0 berarti langsung |
resumeAudioPlayer
Lanjutkan pemutaran audio dengan fade-in opsional untuk transisi yang mulus.
Parameter | Type | Deskripsi |
|---|---|---|
fadeMs | number | Durasi fade-in (milidetik); 0 berarti langsung |
interruptAudioPlayer
Interupsi giliran panggilan audio saat ini.
Parameter | Tipe | Deskripsi |
|---|---|---|
trackType | AoqTrackType | Tipe track target; biasanya |
fadeMs | number | Durasi fade-out (milidetik) |
enableSpeakerphone
Alihkan rute output audio antara speaker dan earpiece.
Parameter | Tipe | Deskripsi |
|---|---|---|
enable | boolean | true: gunakan speaker; false: gunakan earpiece |
isSpeakerphoneEnabled
Periksa apakah speaker sedang aktif.
Konfigurasi kodek audio
setAudioEncoderConfig
Atur parameter encoding audio.
setAudioDecoderConfig
Atur parameter decoding audio.
Manajemen perangkat video
startVideoCapture
Buka perangkat capture video (kamera). Ketika config.isExternal = true, kamera tidak dibuka; pemanggil menyediakan frame melalui pushExternalVideoCapturedFrame.
stopVideoCapture
Tutup perangkat capture video.
switchCamera
Alihkan antara kamera depan dan belakang.
Parameter | Type | Deskripsi |
|---|---|---|
direction | AoqCameraDirection |
|
setLocalView
Atur atau hapus tampilan rendering video lokal.
Parameter | Type | Deskripsi | |
|---|---|---|---|
trackType | AoqTrackType |
| |
canvas | AoqVideoCanvas \ | null | Konfigurasi kanvas rendering; berikan null atau atur |
XComponent.onLoad. Berikan instans AoqXComponentController sebagai canvas.view.
setRemoteView
Atur atau hapus tampilan rendering video remote.
Parameter | Type | Deskripsi | |
|---|---|---|---|
trackType | AoqTrackType |
| |
canvas | AoqVideoCanvas \ | null | Konfigurasi kanvas rendering; berikan null atau atur |
Encoding video dan input eksternal
setVideoEncoderConfig
Atur parameter encoding video. Panggilan diarahkan ke track yang ditentukan oleh config.trackType.
pushExternalVideoCapturedFrame
Dorong frame video mentah yang ditangkap secara eksternal.
Parameter | Type | Deskripsi |
|---|---|---|
trackType | AoqTrackType |
|
frame | AoqVideoFrame | Data frame video |
startVideoCapture(isExternal=true). Format yang didukung: NV12, NV21, BGRA, RGBA, I420.
Jika buffer internal penuh, metode ini mengembalikan AoqECVideoExternalBufferFull (210). Tunggu sebentar lalu coba lagi; jangan gunakan busy-loop.
pushExternalVideoEncodedFrame
Dorong frame video yang telah diencode secara eksternal. SDK mengirimkannya langsung tanpa melakukan re-encoding.
Parameter | Tipe | Deskripsi |
|---|---|---|
trackType | AoqTrackType |
|
frame | AoqVideoEncodedFrame | Data frame yang telah diencode |
setVideoEncoderConfig(isExternal=true) dikonfigurasi.
Kontrol aliran media
enableSendMediaStream
Aktifkan atau nonaktifkan pengiriman aliran media lokal. Panggilan diarahkan ke track yang ditentukan oleh trackType.
Parameter | Tipe | Deskripsi |
|---|---|---|
trackType | AoqTrackType |
|
enable | boolean | true: aktifkan pengiriman; false: nonaktifkan pengiriman |
enableSendMediaStream(trackType, false) setelah inisialisasi, lalu aktifkan setelah koneksi terbentuk dan handshake sesi selesai (onConnectionStatusChange melaporkan AoqConnectionStatusConnected).
Pemutaran file audio
startAudioFile
Mulai streaming file audio lokal. Pemutaran file audio dicampur ke dalam aliran yang dipublikasikan dan pemutaran lokal.
Parameter | Type | Deskripsi |
|---|---|---|
fileId | string | Identifier unik untuk file audio, ditentukan oleh pemanggil |
config | AoqAudioFileMixConfig | Konfigurasi pemutaran |
stopAudioFile / pauseAudioFile / resumeAudioFile
getAudioFileDuration / getAudioFileCurrentPosition
setAudioFilePositionMillis
setAudioFileVolume / getAudioFileVolume
Aliran audio eksternal
addAudioExternalStream
Tambahkan aliran audio eksternal.
pushAudioExternalStreamData
Dorong data audio PCM eksternal. Mengembalikan AoqECAudioExternalBufferFull (110) jika buffer internal penuh.
setAudioExternalStreamVolume / getAudioExternalStreamVolume
clearAudioExternalStreamBuffer
Bersihkan buffer aliran audio eksternal. Tidak ada nilai kembalian; dieksekusi secara asinkron.
Parameter | Tipe | Deskripsi |
|---|---|---|
fadeoutMs | number | -1: fade-out default; 0: bersihkan langsung; >0: pertahankan durasi yang ditentukan lalu fade out |
removeAudioExternalStream
Pesan real-time
sendDataMsg
Kirim pesan data real-time melalui saluran data MoQT.
Callback frame audio
setAudioFrameObserver
Atur observer callback data frame audio. Daftarkan observer terlebih dahulu, lalu panggil enableAudioFrameObserver untuk mulai menerima callback.
enableAudioFrameObserver
Callback frame video
setVideoFrameObserver
enableVideoFrameObserver
Callback AoqEngineEventListener
Semua callback adalah properti opsional (?).
IAudioFrameObserver
frame.dataPtr adalah salinan Uint8Array dari memori native dan saat ini read-only (modifikasi tidak ditulis kembali ke SDK).
IVideoFrameObserver
Uint8Array dari memori native, hanya valid selama callback. Saat ini setara dengan read-only; dukungan write-back direncanakan untuk rilis mendatang.
Tipe data dan enumerasi
Tipe umum
AoqCreateConfig
Bidang | Tipe | Default | Deskripsi |
|---|---|---|---|
workDir | string | "" | Direktori kerja SDK |
enableDumpAudio | boolean | false | Aktifkan dump audio mentah (untuk debugging) |
extras | string | "" | String parameter tambahan |
AoqCreateConfig pada HarmonyOS tidak mencakup isBTScoMode.
AoqConnectConfig
Bidang | Tipe | Default | Deskripsi |
|---|---|---|---|
token | string | "" | Token autentikasi |
sid | string | "" | ID sesi |
certFingerprint | string | "" | Sidik jari sertifikat server |
relayEndpoints | AoqRelayEndpoint[] | [] | Daftar titik akhir Relay |
workspaceIdHash | string | "" | Hash ID ruang kerja |
publishTracks | AoqTrackParam[] | [] | Track lokal yang akan dipublikasikan |
subscribeTracks | AoqTrackParam[] | [] | Track remote yang akan disubscribe |
AoqRelayEndpoint
Bidang | Type | Deskripsi |
|---|---|---|
endpoint | string | Hostname atau IP server Relay |
port | number | Port server Relay |
AoqTrackParam
Bidang | Tipe | Deskripsi |
|---|---|---|
trackType | AoqTrackType | Tipe track |
AoqErrorCode
Nilai enum | Nilai | Deskripsi |
|---|---|---|
AoqECOK | 0 | Berhasil |
AoqECParamInvalid | 1 | Parameter tidak valid |
AoqECStateInvalid | 2 | Status tidak valid |
AoqECUnSupport | 3 | Tidak didukung |
AoqECAudio | 100 | Error generik audio |
AoqECAudioExternalBufferFull | 110 | Buffer audio eksternal penuh |
AoqECAudioDevice | 120 | Error generik perangkat audio |
AoqECAudioDeviceRecordingAuthFailed | 121 | Izin perekaman tidak diberikan |
AoqECAudioDeviceRecordingOccupied | 122 | Perangkat perekaman sedang digunakan |
AoqECAudioDeviceRecordingBackgroundStart | 123 | Gagal memulai perekaman di latar belakang |
AoqECAudioDeviceRecordingStartFail | 124 | Gagal memulai perekaman |
AoqECAudioDevicePlayoutOccupied | 125 | Perangkat pemutaran sedang digunakan |
AoqECAudioDevicePlayoutBackgroundStart | 126 | Gagal memulai pemutaran di latar belakang |
AoqECAudioDevicePlayoutStartFail | 127 | Gagal memulai pemutaran |
AoqECAudioDeviceEarpieceRequiresVoipMode | 128 | Earpiece memerlukan mode VoIP |
AoqECVideo | 200 | Error generik video |
AoqECVideoExternalBufferFull | 210 | Buffer video eksternal penuh |
AoqECVideoExternalCaptureNotEnabled | 211 | Capture video eksternal tidak diaktifkan |
AoqECVideoExternalEncoderNotEnabled | 212 | Encoder video eksternal tidak diaktifkan |
AoqECVideoDevice | 220 | Error generik perangkat video |
AoqECVideoDeviceCameraOpenFail | 221 | Gagal membuka kamera |
AoqECVideoDeviceCameraAuthFailed | 222 | Izin kamera tidak diberikan |
AoqECVideoDeviceCameraOccupied | 223 | Kamera sedang digunakan |
AoqECVideoDeviceCameraRunningError | 224 | Error runtime kamera |
AoqECVideoCodec | 230 | Error generik kodek video |
AoqECVideoCodecEncoderInitFail | 231 | Gagal inisialisasi encoder video |
AoqECVideoRender | 240 | Error generik rendering video |
AoqECVideoRenderCreateFail | 241 | Gagal membuat renderer video |
AoqECVideoRenderDrawError | 242 | Galat rendering gambar video |
AoqWarningCode
Nilai enum | Nilai | Deskripsi |
|---|---|---|
AoqWCOK | 0 | Tidak ada peringatan |
AoqWCAudio | 100 | Peringatan generik audio |
AoqWCAudioHowling | 101 | Terdeteksi howling audio |
AoqWCAudioDevice | 120 | Peringatan generik perangkat audio |
AoqWCAudioDeviceMicEnumerateError | 121 | Error enumerasi mikrofon |
AoqWCAudioDeviceMicStartTimeout | 122 | Timeout memulai mikrofon |
AoqWCAudioDeviceRecordingError | 123 | Error perekaman |
AoqWCAudioDeviceSpeakerEnumerateError | 124 | Error enumerasi speaker |
AoqWCAudioDeviceSpeakerStartTimeout | 125 | Timeout memulai speaker |
AoqWCAudioDevicePlayoutError | 126 | Error pemutaran |
AoqWCVideo | 200 | Peringatan generik video |
AoqWCVideoCameraEnumerateError | 201 | Error enumerasi kamera |
AoqWCVideoEncoderSwitched | 202 | Encoder video beralih |
AoqWCVideoRenderDowngrade | 203 | Rendering video diturunkan |
AoqTrackType
Nilai enum | Nilai | Deskripsi |
|---|---|---|
AoqTrackTypeAudio | 0 | Track audio |
AoqTrackTypeVideo | 1 | Track video |
AoqTrackTypeData | 2 | Track pesan data |
AoqTrackTypeScreen (3) tidak disertakan pada HarmonyOS. Capture layar belum tersedia.
AoqConnectionStatus
Nilai enum | Nilai | Deskripsi |
|---|---|---|
AoqConnectionStatusDisconnected | 0 | Terputus |
AoqConnectionStatusConnecting | 1 | Menghubungkan |
AoqConnectionStatusConnected | 2 | Terkoneksi |
AoqConnectionStatusFailed | 3 | Koneksi gagal |
AoqEncoderType / AoqMirrorMode / AoqOrientationMode
Sama seperti SDK Android; tidak ada perubahan.
Tipe audio
AoqAudioCaptureConfig
Bidang | Tipe | Default | Deskripsi |
|---|---|---|---|
isExternal | boolean | false | true: gunakan input audio eksternal |
isVoipMode | boolean | false | true: aktifkan mode VoIP (AEC hardware) |
channel | number | 1 | Jumlah channel: 1 atau 2 |
AoqAudioPlaybackConfig
Bidang | Tipe | Default | Deskripsi |
|---|---|---|---|
isVoipMode | boolean | false | true: aktifkan mode VoIP (AEC hardware); konfigurasi pertama yang ditulis menang antara capture dan playback |
isDefaultSpeaker | boolean | true | true: default ke speaker; false: default ke earpiece |
isExternal | boolean | false | true: gunakan output audio eksternal |
channel | number | 1 | Jumlah channel: 1 atau 2 |
AoqAudioCodecConfig
Bidang | Tipe | Default | Deskripsi |
|---|---|---|---|
trackType | AoqTrackType | AoqTrackTypeAudio | Track target |
codecType | AoqEncoderType | AoqEncoderTypeAudioPCM | Format kodek |
sampleRate | number | 48000 | Laju sampel (Hz) |
channel | number | 1 | Jumlah channel |
bitrate | number | 32000 | Bitrate (bps) |
Tipe video
AoqVideoCaptureConfig
Bidang | Tipe | Default | Deskripsi |
|---|---|---|---|
width | number | 1280 | Lebar capture; diabaikan ketika |
height | number | 720 | Tinggi capture |
fps | number | 15 | Laju frame capture |
isExternal | boolean | false | true: jangan buka kamera; berikan frame melalui |
cameraDirection | AoqCameraDirection | Front | Arah kamera |
AoqVideoCodecConfig
Bidang | Type | Default | Deskripsi |
|---|---|---|---|
trackType | AoqTrackType | AoqTrackTypeVideo | Target Track |
codecType | AoqEncoderType | AoqEncoderTypeVideoH264 | Format kodek |
width | number | 720 | Lebar encoding |
height | number | 1280 | Tinggi pengodean |
fps | number | 15 | Laju frame |
bitrate | number | 500 | Bitrate (kbps) |
minBitrate | number | 128 | Bitrate minimum (kbps) |
keyframeInterval | number | 2 | Interval keyframe (detik) |
mirrorMode | AoqMirrorMode | Disabled | Mode cermin |
orientationMode | AoqOrientationMode | Auto | Orientasi video |
isExternal | boolean | false | true: SDK melewati re-encoding |
AoqVideoCanvas
Bidang | Tipe | Default | Deskripsi | |
|---|---|---|---|---|
view | Object \ | null | null | Instans |
renderMode | AoqRenderMode | AoqRenderModeAuto | Mode tampilan |
AoqVideoPixelFormat
Nilai enum | Nilai | Deskripsi |
|---|---|---|
AoqVideoPixelFormatUnknown | 0 | Tidak diketahui |
AoqVideoPixelFormatI420 | 1 | I420 |
AoqVideoPixelFormatNV12 | 2 | NV12 |
AoqVideoPixelFormatNV21 | 3 | NV21 |
AoqVideoPixelFormatBGRA | 4 | BGRA |
AoqVideoPixelFormatRGBA | 5 | RGBA |
AoqVideoFrame
Bidang | Tipe | Deskripsi | ||
|---|---|---|---|---|
format | AoqVideoPixelFormat | Format piksel | ||
width | number | Lebar (piksel) | ||
height | number | Tinggi (piksel) | ||
dataPtr | ArrayBuffer \ | Uint8Array \ | null | Data format terpaket |
dataSize | number | Ukuran data terpaket (byte) | ||
dataY / dataU / dataV | ArrayBuffer \ | Uint8Array \ | null | Bidang I420 |
strideY / strideU / strideV | number | Stride plane | ||
timeStamp | number | Timestamp (ms); ketika 0, SDK menggunakan jam lokal |
AoqVideoEncodedFrame
Bidang | Tipe | Deskripsi | |
|---|---|---|---|
codec | AoqVideoCodecType | Format encoding ( | |
data | ArrayBuffer \ | Uint8Array | Data frame yang telah diencode |
width | number | Lebar | |
height | number | Tinggi | |
timeStamp | number | Timestamp (ms) |
Tipe file audio dan aliran eksternal
AoqAudioFileMixConfig
Bidang | Tipe | Default | Deskripsi |
|---|---|---|---|
fileName | string | "" | Nama file (termasuk path) |
cycles | number | -1 | Jumlah loop; -1 berarti loop tanpa henti |
startPosMs | number | 0 | Posisi awal pemutaran (ms) |
publishVolume | number | 100 | Volume publikasi [0, 100] |
playoutVolume | number | 100 | Volume pemutaran lokal [0, 100] |
AoqAudioExternalStreamConfig
Bidang | Tipe | Default | Deskripsi |
|---|---|---|---|
trackType | AoqTrackType | AoqTrackTypeAudio | Tipe track |
codecType | AoqEncoderType | AoqEncoderTypeAudioPCM | Format audio |
channels | number | 1 | Jumlah channel |
sampleRate | number | 48000 | Laju sampel (Hz) |
playoutVolume | number | 100 | Volume pemutaran [0, 100] |
publishVolume | number | 100 | Volume publikasi [0, 100] |
maxBufferDuration | number | 1000 | Durasi buffer maksimum (ms) |
enable3A | boolean | false | Apakah menerapkan pemrosesan 3A pada PCM input |
AoqAudioFrameData
Bidang | Tipe | Deskripsi | ||
|---|---|---|---|---|
dataPtr | ArrayBuffer \ | Uint8Array \ | null | Data audio PCM mentah |
dataSize | number | Ukuran data PCM (byte) | ||
numOfSamples | number | Jumlah sampel (mono) | ||
bytesPerSample | number | Byte per sampel | ||
numOfChannels | number | Jumlah channel | ||
samplesPerSec | number | Laju sampel | ||
pushSequence | number | Nomor urut dorong PCM | ||
timeStamp | number | Timestamp | ||
autoGenMute | boolean | true: ini adalah data diam yang dihasilkan SDK |
Tipe konfigurasi observer
AoqAudioObserverConfig
Bidang | Tipe | Default | Deskripsi |
|---|---|---|---|
sampleRate | number | 48000 | Laju sampel callback |
channels | number | 1 | Jumlah channel callback |
mode | AoqAudioObserverMode | ReadOnly | Mode baca/tulis |
AoqVideoObserverConfig
Bidang | Tipe | Default | Deskripsi |
|---|---|---|---|
format | AoqVideoPixelFormat | I420 | Format piksel callback |
alignment | AoqVideoObserverAlignment | Default | Penyelarasan lebar |
mode | AoqVideoObserverMode | ReadOnly | Mode baca/tulis |
mirrorApplied | boolean | false | Apakah menerapkan pencerminan |
Tipe statistik
AoqStats
Bidang | Tipe | Deskripsi | |
|---|---|---|---|
audioPublishStats | AoqAudioPublishStats[] | Statistik publikasi audio | |
videoPublishStats | AoqVideoPublishStats[] | Statistik publikasi video | |
dataMsgPublishStats | AoqDataMsgPublishStats[] | Statistik publikasi pesan data | |
audioSubscribeStats | AoqAudioSubscribeStats[] | Statistik subscribe audio | |
videoSubscribeStats | AoqVideoSubscribeStats[] | Statistik subscribe video | |
dataMsgSubscribeStats | AoqDataMsgSubscribeStats[] | Statistik subscribe pesan data | |
networkStats | AoqNetworkStats \ | null | Statistik jaringan |
Subtipe Statistik
AoqAudioPublishStats: trackType / bitrate / bytes / encodeVolume
AoqVideoPublishStats: trackType / bitrate / bytes / encodeFps
AoqAudioSubscribeStats: trackType / bitrate / bytes / playVolume
AoqVideoSubscribeStats: trackType / bitrate / bytes / decodeFps / renderFps
AoqDataMsgPublishStats / AoqDataMsgSubscribeStats: trackType / bitrate / bytes
AoqNetworkStats: sendBitrate / sendBytes / recvBitrate / recvBytes / loss / rtt
Perbedaan utama dari SDK Android
Kategori | Android | HarmonyOS | |
|---|---|---|---|
Bahasa Implementasi | Java | ArkTS (.ets), dijembatani NAPI ke C++ | |
Tipe nilai kembalian | int / long / boolean | number / boolean | |
Nilai kembalian createEngine | @NonNull AoqClientEngine | AoqClientEngine \ | null |
Konteks createEngine | android.content.Context | common.Context (UIAbility/Halaman) | |
Bentuk listener | Kelas abstrak dengan metode kosong default | Antarmuka TS; semua callback opsional (?) | |
Bentuk observer frame | Antarmuka dengan metode default | Antarmuka TS; semua callback opsional (?) | |
AoqCreateConfig | Mencakup | Tidak mencakup | |
AoqAudioPlaybackConfig | Tidak ada | Mencakup | |
onAudioDeviceFocusChanged | Tersedia | Tidak tersedia (tidak ada abstraksi fokus audio) | |
Tampilan rendering video | View (SurfaceView/TextureView) | AoqXComponentController (memperluas XComponentController) | |
Enum format piksel | Mencakup TextureOES (7) / Texture2D (8) | Tidak mencakup format tekstur | |
Bidang tambahan frame video | textureId / transformMatrix / eglContext | Tidak disertakan | |
Kontainer data frame | byte[] / ByteBuffer | ArrayBuffer / Uint8Array | |
Satuan bitrate encoding video | bps (default: 500000/128000) | kbps (default: 500/128) | |
AoqTrackType | Mencakup AoqTrackTypeScreen (3) | Tidak mencakup AoqTrackTypeScreen; capture layar belum tersedia | |
API capture layar | startScreenCapture / stopScreenCapture | Belum tersedia | |
Write-back observer | Write-back I420 didukung | Saat ini setara dengan read-only; write-back direncanakan untuk rilis mendatang | |
Keamanan registrasi ulang observer | Mengandalkan internal SDK | Perlindungan UAF menggunakan pola tombstone | |
Pemantauan perangkat | Implisit di layer Java | AoqDeviceMonitor (internal) dimulai secara otomatis | |
Ruang nama kode error | AoqErrorCodeXxx | AoqECXxx (misalnya, AoqECOK, AoqECParamInvalid) |
Catatan arsitektur
- AoqXComponentController: Memperluas
XComponentControllerdan meng-overrideonSurfaceCreated,onSurfaceChanged, danonSurfaceDestroyed. Buat instans, lampirkan keXComponent, dan berikan sebagaicanvas.viewsaat memanggilsetLocalViewatausetRemoteView. - Arsitektur NAPI: facade (
AoqClientEngine.ets) → implementasi (AoqClientEngineImpl.ets) → NAPI (libaoq_client_sdk.so). Objek konfigurasi diratakan menjadi parameter individual di layer implementasi. - Pemantauan perangkat (internal):
AoqDeviceMonitordimulai secara otomatis setelahcreateEnginedan meneruskan status jaringan serta status foreground/background aplikasi ke engine C++. - Perlindungan UAF observer: Registrasi ulang mengikuti urutan tiga langkah: potong referensi lama di C++ → dorong observer lama ke tombstone → arahkan ke observer baru.
- Semantik muatan frame: Buffer
Uint8Arraydalam callback frame audio/video adalah salinan memori native. Write-back tidak didukung di P1; zero-copy direncanakan untuk P2.