Skip to main content
Ikhtisar SDK AOQ

Referensi API AOQ Client SDK HarmonyOS

Referensi API AOQ Client SDK HarmonyOS (OHOS). Bahasa platform adalah ArkTS (.ets), yang dijembatani ke engine C++ melalui NAPI.

HarmonyOS SDK

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.
static createEngine(config: AoqCreateConfig, listener: AoqEngineEventListener, context: common.Context): AoqClientEngine | null

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

Mengembalikan: 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.
static destroy(): number
Mengembalikan: 0 jika berhasil; bukan nol jika gagal.

getVersion

Ambil string versi SDK saat ini.
static getVersion(): string
Mengembalikan: String versi, contohnya "1.0.0".

connect

Hubungkan ke server Relay. Parameter koneksi dialokasikan oleh server aplikasi melalui /api/v1/allocate dan dikirimkan ke klien.
connect(config: AoqConnectConfig): number

Parameter

Type

Deskripsi

config

AoqConnectConfig

Konfigurasi koneksi, termasuk token, SID, dan daftar titik akhir Relay

Mengembalikan: 0 jika panggilan dikirim (asinkron); bukan nol jika validasi parameter gagal. Catatan: Perubahan status koneksi dilaporkan secara asinkron melalui 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.
disconnect(): number
Mengembalikan: 0 jika panggilan dikirim (asinkron); bukan nol jika gagal.

Manajemen perangkat audio

startAudioCapture

Buka perangkat capture audio (mikrofon).
startAudioCapture(config: AoqAudioCaptureConfig): number

Parameter

Tipe

Deskripsi

config

AoqAudioCaptureConfig

Konfigurasi capture

Mengembalikan: 0 jika berhasil; bukan nol jika gagal.

stopAudioCapture

Tutup perangkat capture audio.
stopAudioCapture(): number

muteAudioCapture

Bisukan atau aktifkan kembali capture audio.
muteAudioCapture(mute: boolean): number

Parameter

Tipe

Deskripsi

mute

boolean

true: bisukan; false: aktifkan kembali

startAudioPlayer

Mulai pemutaran audio (mainkan audio remote melalui speaker atau earpiece).
startAudioPlayer(config: AoqAudioPlaybackConfig): number

Parameter

Type

Deskripsi

config

AoqAudioPlaybackConfig

Konfigurasi pemutaran

stopAudioPlayer

Hentikan pemutaran audio.
stopAudioPlayer(): number

pauseAudioPlayer

Jeda pemutaran audio dengan fade-out opsional untuk transisi yang mulus.
pauseAudioPlayer(fadeMs: number): number

Parameter

Tipe

Deskripsi

fadeMs

number

Durasi fade-out (milidetik); 0 berarti langsung

resumeAudioPlayer

Lanjutkan pemutaran audio dengan fade-in opsional untuk transisi yang mulus.
resumeAudioPlayer(fadeMs: number): number

Parameter

Type

Deskripsi

fadeMs

number

Durasi fade-in (milidetik); 0 berarti langsung

interruptAudioPlayer

Interupsi giliran panggilan audio saat ini.
interruptAudioPlayer(trackType: AoqTrackType, fadeMs: number): number

Parameter

Tipe

Deskripsi

trackType

AoqTrackType

Tipe track target; biasanya AoqTrackTypeAudio

fadeMs

number

Durasi fade-out (milidetik)

enableSpeakerphone

Alihkan rute output audio antara speaker dan earpiece.
enableSpeakerphone(enable: boolean): number

Parameter

Tipe

Deskripsi

enable

boolean

true: gunakan speaker; false: gunakan earpiece

isSpeakerphoneEnabled

Periksa apakah speaker sedang aktif.
isSpeakerphoneEnabled(): boolean
Mengembalikan: true jika speaker aktif; false jika earpiece aktif.

Konfigurasi kodek audio

setAudioEncoderConfig

Atur parameter encoding audio.
setAudioEncoderConfig(config: AoqAudioCodecConfig): number

setAudioDecoderConfig

Atur parameter decoding audio.
setAudioDecoderConfig(config: AoqAudioCodecConfig): number

Manajemen perangkat video

startVideoCapture

Buka perangkat capture video (kamera). Ketika config.isExternal = true, kamera tidak dibuka; pemanggil menyediakan frame melalui pushExternalVideoCapturedFrame.
startVideoCapture(config: AoqVideoCaptureConfig): number

stopVideoCapture

Tutup perangkat capture video.
stopVideoCapture(): number

switchCamera

Alihkan antara kamera depan dan belakang.
switchCamera(direction: AoqCameraDirection): number

Parameter

Type

Deskripsi

direction

AoqCameraDirection

AoqCameraDirectionFront atau AoqCameraDirectionBack

setLocalView

Atur atau hapus tampilan rendering video lokal.
setLocalView(trackType: AoqTrackType, canvas: AoqVideoCanvas | null): number

Parameter

Type

Deskripsi

trackType

AoqTrackType

AoqTrackTypeVideo

canvas

AoqVideoCanvas \

null

Konfigurasi kanvas rendering; berikan null atau atur canvas.view ke null untuk menghapus tampilan rendering

Catatan: Pada HarmonyOS, ini harus dipanggil setelah callback XComponent.onLoad. Berikan instans AoqXComponentController sebagai canvas.view.

setRemoteView

Atur atau hapus tampilan rendering video remote.
setRemoteView(trackType: AoqTrackType, canvas: AoqVideoCanvas | null): number

Parameter

Type

Deskripsi

trackType

AoqTrackType

AoqTrackTypeVideo

canvas

AoqVideoCanvas \

null

Konfigurasi kanvas rendering; berikan null atau atur canvas.view ke null untuk menghapus tampilan rendering

Encoding video dan input eksternal

setVideoEncoderConfig

Atur parameter encoding video. Panggilan diarahkan ke track yang ditentukan oleh config.trackType.
setVideoEncoderConfig(config: AoqVideoCodecConfig): number

pushExternalVideoCapturedFrame

Dorong frame video mentah yang ditangkap secara eksternal.
pushExternalVideoCapturedFrame(trackType: AoqTrackType, frame: AoqVideoFrame): number

Parameter

Type

Deskripsi

trackType

AoqTrackType

AoqTrackTypeVideo

frame

AoqVideoFrame

Data frame video

Hanya dikonsumsi setelah 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.
pushExternalVideoEncodedFrame(trackType: AoqTrackType, frame: AoqVideoEncodedFrame): number

Parameter

Tipe

Deskripsi

trackType

AoqTrackType

AoqTrackTypeVideo

frame

AoqVideoEncodedFrame

Data frame yang telah diencode

Hanya dikonsumsi setelah setVideoEncoderConfig(isExternal=true) dikonfigurasi.

Kontrol aliran media

enableSendMediaStream

Aktifkan atau nonaktifkan pengiriman aliran media lokal. Panggilan diarahkan ke track yang ditentukan oleh trackType.
enableSendMediaStream(trackType: AoqTrackType, enable: boolean): number

Parameter

Tipe

Deskripsi

trackType

AoqTrackType

AoqTrackTypeAudio atau AoqTrackTypeVideo

enable

boolean

true: aktifkan pengiriman; false: nonaktifkan pengiriman

Pola yang disarankan: panggil 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.
startAudioFile(fileId: string, config: AoqAudioFileMixConfig): number

Parameter

Type

Deskripsi

fileId

string

Identifier unik untuk file audio, ditentukan oleh pemanggil

config

AoqAudioFileMixConfig

Konfigurasi pemutaran

stopAudioFile / pauseAudioFile / resumeAudioFile

stopAudioFile(fileId: string): number
pauseAudioFile(fileId: string): number
resumeAudioFile(fileId: string): number

getAudioFileDuration / getAudioFileCurrentPosition

getAudioFileDuration(fileId: string): number      // Mengembalikan durasi total (ms); negatif jika gagal
getAudioFileCurrentPosition(fileId: string): number // Mengembalikan posisi saat ini (ms); negatif jika gagal

setAudioFilePositionMillis

setAudioFilePositionMillis(fileId: string, positionMillis: number): number

setAudioFileVolume / getAudioFileVolume

setAudioFileVolume(fileId: string, type: AoqAudioStreamDirection, volume: number): number
getAudioFileVolume(fileId: string, type: AoqAudioStreamDirection): number // Mengembalikan [0, 100]; negatif jika gagal

Aliran audio eksternal

addAudioExternalStream

Tambahkan aliran audio eksternal.
addAudioExternalStream(streamId: string, config: AoqAudioExternalStreamConfig): number

pushAudioExternalStreamData

Dorong data audio PCM eksternal. Mengembalikan AoqECAudioExternalBufferFull (110) jika buffer internal penuh.
pushAudioExternalStreamData(streamId: string, data: AoqAudioFrameData): number

setAudioExternalStreamVolume / getAudioExternalStreamVolume

setAudioExternalStreamVolume(streamId: string, type: AoqAudioStreamDirection, vol: number): number
getAudioExternalStreamVolume(streamId: string, type: AoqAudioStreamDirection): number

clearAudioExternalStreamBuffer

Bersihkan buffer aliran audio eksternal. Tidak ada nilai kembalian; dieksekusi secara asinkron.
clearAudioExternalStreamBuffer(streamId: string, fadeoutMs: number): void

Parameter

Tipe

Deskripsi

fadeoutMs

number

-1: fade-out default; 0: bersihkan langsung; >0: pertahankan durasi yang ditentukan lalu fade out

removeAudioExternalStream

removeAudioExternalStream(streamId: string): number

Pesan real-time

sendDataMsg

Kirim pesan data real-time melalui saluran data MoQT.
sendDataMsg(msg: AoqDataMsg): number

Callback frame audio

setAudioFrameObserver

Atur observer callback data frame audio. Daftarkan observer terlebih dahulu, lalu panggil enableAudioFrameObserver untuk mulai menerima callback.
setAudioFrameObserver(observer: IAudioFrameObserver | null): number

enableAudioFrameObserver

enableAudioFrameObserver(enabled: boolean, audioSource: AoqAudioSource, config: AoqAudioObserverConfig): number

Callback frame video

setVideoFrameObserver

setVideoFrameObserver(observer: IVideoFrameObserver | null): number

enableVideoFrameObserver

enableVideoFrameObserver(enabled: boolean, videoSource: AoqVideoSource, config: AoqVideoObserverConfig): number

Callback AoqEngineEventListener

Semua callback adalah properti opsional (?).
export interface AoqEngineEventListener {
  onError?: (code: number, message: string) => void;
  onWarning?: (code: number, message: string) => void;
  onConnectionStatusChange?: (status: AoqConnectionStatus) => void;
  onStats?: (stats: AoqStats) => void;
  onAudioDeviceStateChanged?: (state: AoqAudioDeviceState) => void;
  onAudioDeviceRouteChanged?: (routeType: number) => void;
  onAudioDeviceInterrupted?: (interrupt: boolean) => void;
  onVideoDeviceStateChanged?: (state: AoqVideoDeviceState) => void;
  onAudioFileState?: (state: AoqAudioFileState) => void;
  onDataMsg?: (msg: AoqDataMsg) => void;
}

IAudioFrameObserver

export interface IAudioFrameObserver {
  onCapturedAudioFrame?: (frame: AoqAudioFrameData) => void;
  onProcessCapturedAudioFrame?: (frame: AoqAudioFrameData) => void;
  onPublishAudioFrame?: (trackType: AoqTrackType, frame: AoqAudioFrameData) => void;
  onPlaybackAudioFrame?: (frame: AoqAudioFrameData) => void;
}
frame.dataPtr adalah salinan Uint8Array dari memori native dan saat ini read-only (modifikasi tidak ditulis kembali ke SDK).

IVideoFrameObserver

export interface IVideoFrameObserver {
  onCapturedVideoFrame?: (frame: AoqVideoFrame) => boolean;
  onPreEncodeVideoFrame?: (trackType: AoqTrackType, frame: AoqVideoFrame) => boolean;
  onRemoteVideoFrame?: (trackType: AoqTrackType, frame: AoqVideoFrame) => boolean;
}
Buffer frame adalah salinan 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

Berbeda dengan Android, 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

Berbeda dengan Android, 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 isExternal=true

height

number

720

Tinggi capture

fps

number

15

Laju frame capture

isExternal

boolean

false

true: jangan buka kamera; berikan frame melalui pushExternalVideoCapturedFrame

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

Berbeda dengan Android, satuan bitrate pada HarmonyOS adalah kbps (default: 500/128). Pada Android satuan bitrate adalah bps (default: 500000/128000).

AoqVideoCanvas

Bidang

Tipe

Default

Deskripsi

view

Object \

null

null

Instans AoqXComponentController; berikan null untuk menghapus binding rendering

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

TextureOES dan Texture2D tidak didukung pada HarmonyOS.

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 (AoqVideoCodecTypeJPEG = 0)

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 isBTScoMode

Tidak mencakup isBTScoMode

AoqAudioPlaybackConfig

Tidak ada isVoipMode

Mencakup isVoipMode; konfigurasi pertama yang ditulis menang antara capture dan playback

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

  1. AoqXComponentController: Memperluas XComponentController dan meng-override onSurfaceCreated, onSurfaceChanged, dan onSurfaceDestroyed. Buat instans, lampirkan ke XComponent, dan berikan sebagai canvas.view saat memanggil setLocalView atau setRemoteView.
  2. Arsitektur NAPI: facade (AoqClientEngine.ets) → implementasi (AoqClientEngineImpl.ets) → NAPI (libaoq_client_sdk.so). Objek konfigurasi diratakan menjadi parameter individual di layer implementasi.
  3. Pemantauan perangkat (internal): AoqDeviceMonitor dimulai secara otomatis setelah createEngine dan meneruskan status jaringan serta status foreground/background aplikasi ke engine C++.
  4. Perlindungan UAF observer: Registrasi ulang mengikuti urutan tiga langkah: potong referensi lama di C++ → dorong observer lama ke tombstone → arahkan ke observer baru.
  5. Semantik muatan frame: Buffer Uint8Array dalam callback frame audio/video adalah salinan memori native. Write-back tidak didukung di P1; zero-copy direncanakan untuk P2.
Pembuatan Gambar
  • FAQ
Video Generation
Model Dunia
Audio
  • Pembuatan audio
Realtime API
Penyematan Teks
TokenPlan
Model production