Skip to main content
AOQ SDK overview

Referência da API do AOQ Client SDK para HarmonyOS

Referência da API do AOQ Client SDK para HarmonyOS (OHOS). A linguagem da plataforma é ArkTS (.ets), integrada ao mecanismo C++ via NAPI.

SDK para HarmonyOS

Índice de APIs

Ciclo de vida do mecanismo

API

Descrição

createEngine

Crie a instância do mecanismo (singleton)

destroy

Destrói a instância do mecanismo

getVersion

Obtém a string de versão do SDK

connect

Conecta ao servidor Relay

disconnect

Desconecta do servidor

Gerenciamento de dispositivos de áudio

API

Descrição

startAudioCapture

Abre o dispositivo de captura de áudio (microfone)

stopAudioCapture

Fecha o dispositivo de captura de áudio

muteAudioCapture

Silencia ou reativa a captura de áudio

startAudioPlayer

Inicia a reprodução de áudio (reproduz áudio remoto)

stopAudioPlayer

Interrompe a reprodução de áudio

pauseAudioPlayer

Pausa a reprodução de áudio com fade-out opcional

resumeAudioPlayer

Retoma a reprodução de áudio com fade-in opcional

interruptAudioPlayer

Interrompe o turno atual da chamada de áudio

enableSpeakerphone

Alterna a saída de áudio entre alto-falante e auricular

isSpeakerphoneEnabled

Consulta se o alto-falante está ativo no momento

Configuração de codec de áudio

API

Descrição

setAudioEncoderConfig

Defina os parâmetros de codificação de áudio

setAudioDecoderConfig

Defina os parâmetros de decodificação de áudio

Gerenciamento de dispositivos de vídeo

API

Descrição

startVideoCapture

Abre o dispositivo de captura de vídeo (câmera)

stopVideoCapture

Fecha o dispositivo de captura de vídeo

switchCamera

Alterna entre as câmeras frontal e traseira

setLocalView

Defina ou remova a visualização de renderização de vídeo local

setRemoteView

Defina ou remova a visualização de renderização de vídeo remoto

Codificação de vídeo e entrada externa

API

Descrição

setVideoEncoderConfig

Defina os parâmetros de codificação de vídeo

pushExternalVideoCapturedFrame

Envia um quadro de vídeo bruto capturado externamente

pushExternalVideoEncodedFrame

Envia um quadro de vídeo codificado externamente

Controle de fluxo de mídia

API

Descrição

enableSendMediaStream

Ative ou desative o envio de fluxo de mídia local

Reprodução de arquivos de áudio

API

Descrição

startAudioFile

Inicia o streaming de um arquivo de áudio local

stopAudioFile

Interrompe a reprodução do arquivo de áudio

pauseAudioFile

Pausa a reprodução do arquivo de áudio

resumeAudioFile

Retoma a reprodução do arquivo de áudio

getAudioFileDuration

Obtém a duração total do arquivo de áudio

getAudioFileCurrentPosition

Obtém a posição atual da reprodução

setAudioFilePositionMillis

Busca uma posição específica no arquivo de áudio

setAudioFileVolume

Defina o volume do arquivo de áudio

getAudioFileVolume

Obtém o volume atual do arquivo de áudio

Fluxos de áudio externos

API

Descrição

addAudioExternalStream

Adiciona um fluxo de áudio externo

removeAudioExternalStream

Remove um fluxo de áudio externo

pushAudioExternalStreamData

Envia dados de áudio PCM externos

setAudioExternalStreamVolume

Defina o volume de um fluxo de áudio externo

getAudioExternalStreamVolume

Obtém o volume de um fluxo de áudio externo

clearAudioExternalStreamBuffer

Limpa o buffer de um fluxo de áudio externo

Mensagens em tempo real

API

Descrição

sendDataMsg

Envia uma mensagem de dados em tempo real

Callbacks de quadros de áudio

API

Descrição

setAudioFrameObserver

Defina o observador de callback de dados de quadro de áudio

enableAudioFrameObserver

Ative ou desative callbacks de quadro de áudio em um ponto especificado

Callbacks de quadros de vídeo

API

Descrição

setVideoFrameObserver

Defina o observador de callback de dados de quadro de vídeo

enableVideoFrameObserver

Ative ou desative callbacks de quadro de vídeo em um ponto especificado

Callbacks do AoqEngineEventListener

Callback

Descrição

onError

Callback de erro do mecanismo

onWarning

Callback de aviso do mecanismo

onConnectionStatusChange

Callback de alteração de status de conexão

onStats

Callback de estatísticas

onAudioDeviceStateChanged

Callback de alteração de estado do dispositivo de áudio

onAudioDeviceRouteChanged

Callback de alteração de rota de saída de áudio

onAudioDeviceInterrupted

Callback de interrupção do dispositivo de áudio

onVideoDeviceStateChanged

Callback de alteração de estado do dispositivo de vídeo

onAudioFileState

Callback de estado de reprodução de arquivo de áudio

onDataMsg

Callback de recebimento de mensagem de dados em tempo real

IAudioFrameObserver

Interface do observador de dados de quadro de áudio

IVideoFrameObserver

Interface do observador de dados de quadro de vídeo

Detalhes das APIs

Ciclo de vida do mecanismo

createEngine

Crie a instância do mecanismo. O SDK mantém o mecanismo como um singleton global; chamar este método novamente retorna a instância existente. Retorna null se o mecanismo nativo falhar ao inicializar.
static createEngine(config: AoqCreateConfig, listener: AoqEngineEventListener, context: common.Context): AoqClientEngine | null

Parâmetro

Tipo

Descrição

config

AoqCreateConfig

Configuração de criação do mecanismo

listener

AoqEngineEventListener

Listener de callback de eventos do mecanismo (interface; todos os callbacks são opcionais)

context

common.Context

Contexto UIAbility/Page, usado para inicialização aki+ACPM

Retorna: AoqClientEngine | null — null se a criação nativa falhar. Nota: Diferente do Android, este SDK retorna null em caso de falha. Sempre verifique se o valor de retorno é null. O context deve ser um contexto válido de UIAbility ou Page.

destroy

Destrua o singleton do mecanismo e libere todos os recursos. É necessário chamar createEngine novamente antes de retomar o uso.
static destroy(): number
Retorna: 0 em caso de sucesso; diferente de zero em caso de falha.

getVersion

Obtenha a string da versão atual do SDK.
static getVersion(): string
Retorna: String de versão, por exemplo "1.0.0".

connect

Conecte-se ao servidor Relay. Os parâmetros de conexão são alocados pelo servidor de aplicativos via /api/v1/allocate e entregues ao cliente.
connect(config: AoqConnectConfig): number

Parâmetro

Tipo

Descrição

config

AoqConnectConfig

Configuração de conexão, incluindo token, SID e lista de endpoints Relay

Retorna: 0 se a chamada foi despachada (assíncrona); diferente de zero se a validação de parâmetros falhar. Nota: As alterações de status de conexão são relatadas de forma assíncrona via onConnectionStatusChange. Recomenda-se chamar enableSendMediaStream(false) antes de chamar connect.

disconnect

Desconecte-se do servidor e libere os recursos relacionados à conexão. Os dispositivos de captura/reprodução de áudio e vídeo não são interrompidos automaticamente.
disconnect(): number
Retorna: 0 se a chamada foi despachada (assíncrona); diferente de zero em caso de falha.

Gerenciamento de dispositivos de áudio

startAudioCapture

Abra o dispositivo de captura de áudio (microfone).
startAudioCapture(config: AoqAudioCaptureConfig): number

Parâmetro

Tipo

Descrição

config

AoqAudioCaptureConfig

Configuração de captura

Retorna: 0 em caso de sucesso; diferente de zero em caso de falha.

stopAudioCapture

Feche o dispositivo de captura de áudio.
stopAudioCapture(): number

muteAudioCapture

Silencie ou reative a captura de áudio.
muteAudioCapture(mute: boolean): number

Parâmetro

Tipo

Descrição

mute

boolean

true: silenciar; false: reativar

startAudioPlayer

Inicie a reprodução de áudio (reproduza áudio remoto pelo alto-falante ou auricular).
startAudioPlayer(config: AoqAudioPlaybackConfig): number

Parâmetro

Tipo

Descrição

config

AoqAudioPlaybackConfig

Configuração de reprodução

stopAudioPlayer

Interrompa a reprodução de áudio.
stopAudioPlayer(): number

pauseAudioPlayer

Pause a reprodução de áudio com um fade-out opcional para uma transição suave.
pauseAudioPlayer(fadeMs: number): number

Parâmetro

Tipo

Descrição

fadeMs

number

Duração do fade-out (milissegundos); 0 significa imediato

resumeAudioPlayer

Retome a reprodução de áudio com um fade-in opcional para uma transição suave.
resumeAudioPlayer(fadeMs: number): number

Parâmetro

Tipo

Descrição

fadeMs

number

Duração do fade-in (milissegundos); 0 significa imediato

interruptAudioPlayer

Interrompa o turno atual da chamada de áudio.
interruptAudioPlayer(trackType: AoqTrackType, fadeMs: number): number

Parâmetro

Tipo

Descrição

trackType

AoqTrackType

Tipo de faixa alvo; tipicamente AoqTrackTypeAudio

fadeMs

number

Duração do fade-out (milissegundos)

enableSpeakerphone

Alterne a rota de saída de áudio entre o alto-falante e o auricular.
enableSpeakerphone(enable: boolean): number

Parâmetro

Tipo

Descrição

enable

boolean

true: usar alto-falante; false: usar auricular

isSpeakerphoneEnabled

Consulte se o alto-falante está ativo no momento.
isSpeakerphoneEnabled(): boolean
Retorna: true se o alto-falante estiver ativo; false se o auricular estiver ativo.

Configuração de codec de áudio

setAudioEncoderConfig

Defina os parâmetros de codificação de áudio.
setAudioEncoderConfig(config: AoqAudioCodecConfig): number

setAudioDecoderConfig

Defina os parâmetros de decodificação de áudio.
setAudioDecoderConfig(config: AoqAudioCodecConfig): number

Gerenciamento de dispositivos de vídeo

startVideoCapture

Abra o dispositivo de captura de vídeo (câmera). Quando config.isExternal = true, a câmera não é aberta; o chamador fornece os quadros via pushExternalVideoCapturedFrame.
startVideoCapture(config: AoqVideoCaptureConfig): number

stopVideoCapture

Feche o dispositivo de captura de vídeo.
stopVideoCapture(): number

switchCamera

Alterne entre as câmeras frontal e traseira.
switchCamera(direction: AoqCameraDirection): number

Parâmetro

Tipo

Descrição

direction

AoqCameraDirection

AoqCameraDirectionFront ou AoqCameraDirectionBack

setLocalView

Defina ou remova a visualização de renderização de vídeo local.
setLocalView(trackType: AoqTrackType, canvas: AoqVideoCanvas | null): number

Parâmetro

Tipo

Descrição

trackType

AoqTrackType

AoqTrackTypeVideo

canvas

AoqVideoCanvas \

null

Configuração do canvas de renderização; passe null ou defina canvas.view como null para remover a visualização de renderização

Nota: No HarmonyOS, esta chamada deve ser feita após o callback XComponent.onLoad. Passe uma instância de AoqXComponentController como canvas.view.

setRemoteView

Defina ou remova a visualização de renderização de vídeo remoto.
setRemoteView(trackType: AoqTrackType, canvas: AoqVideoCanvas | null): number

Parâmetro

Tipo

Descrição

trackType

AoqTrackType

AoqTrackTypeVideo

canvas

AoqVideoCanvas \

null

Configuração do canvas de renderização; passe null ou defina canvas.view como null para remover a visualização de renderização

Codificação de vídeo e entrada externa

setVideoEncoderConfig

Defina os parâmetros de codificação de vídeo. A chamada é roteada para a faixa especificada por config.trackType.
setVideoEncoderConfig(config: AoqVideoCodecConfig): number

pushExternalVideoCapturedFrame

Envie um quadro de vídeo bruto capturado externamente.
pushExternalVideoCapturedFrame(trackType: AoqTrackType, frame: AoqVideoFrame): number

Parâmetro

Tipo

Descrição

trackType

AoqTrackType

AoqTrackTypeVideo

frame

AoqVideoFrame

Dados do quadro de vídeo

Consumido apenas após startVideoCapture(isExternal=true). Formatos suportados: NV12, NV21, BGRA, RGBA, I420. Se o buffer interno estiver cheio, o método retorna AoqECVideoExternalBufferFull (210). Aguarde e tente novamente; não use busy-loop.

pushExternalVideoEncodedFrame

Envie um quadro de vídeo codificado externamente. O SDK o envia diretamente sem recodificar.
pushExternalVideoEncodedFrame(trackType: AoqTrackType, frame: AoqVideoEncodedFrame): number

Parâmetro

Tipo

Descrição

trackType

AoqTrackType

AoqTrackTypeVideo

frame

AoqVideoEncodedFrame

Dados do quadro codificado

Consumido apenas após configurar setVideoEncoderConfig(isExternal=true).

Controle de fluxo de mídia

enableSendMediaStream

Ative ou desative o envio de fluxo de mídia local. A chamada é roteada para a faixa especificada por trackType.
enableSendMediaStream(trackType: AoqTrackType, enable: boolean): number

Parâmetro

Tipo

Descrição

trackType

AoqTrackType

AoqTrackTypeAudio ou AoqTrackTypeVideo

enable

boolean

true: ativar envio; false: desativar envio

Padrão recomendado: chame enableSendMediaStream(trackType, false) após a inicialização e ative assim que a conexão for estabelecida e o handshake da sessão for concluído (onConnectionStatusChange relata AoqConnectionStatusConnected).

Reprodução de arquivos de áudio

startAudioFile

Inicie o streaming de um arquivo de áudio local. A reprodução do arquivo de áudio é mixada tanto no fluxo publicado quanto na reprodução local.
startAudioFile(fileId: string, config: AoqAudioFileMixConfig): number

Parâmetro

Tipo

Descrição

fileId

string

Identificador exclusivo para o arquivo de áudio, especificado pelo chamador

config

AoqAudioFileMixConfig

Configuração de reprodução

stopAudioFile / pauseAudioFile / resumeAudioFile

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

getAudioFileDuration / getAudioFileCurrentPosition

getAudioFileDuration(fileId: string): number      // Returns total duration (ms); negative on failure
getAudioFileCurrentPosition(fileId: string): number // Returns current position (ms); negative on failure

setAudioFilePositionMillis

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

setAudioFileVolume / getAudioFileVolume

setAudioFileVolume(fileId: string, type: AoqAudioStreamDirection, volume: number): number
getAudioFileVolume(fileId: string, type: AoqAudioStreamDirection): number // Returns [0, 100]; negative on failure

Fluxos de áudio externos

addAudioExternalStream

Adicione um fluxo de áudio externo.
addAudioExternalStream(streamId: string, config: AoqAudioExternalStreamConfig): number

pushAudioExternalStreamData

Envie dados de áudio PCM externos. Retorna AoqECAudioExternalBufferFull (110) se o buffer interno estiver cheio.
pushAudioExternalStreamData(streamId: string, data: AoqAudioFrameData): number

setAudioExternalStreamVolume / getAudioExternalStreamVolume

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

clearAudioExternalStreamBuffer

Limpe o buffer do fluxo de áudio externo. Não há valor de retorno; a execução é assíncrona.
clearAudioExternalStreamBuffer(streamId: string, fadeoutMs: number): void

Parâmetro

Tipo

Descrição

fadeoutMs

number

-1: fade-out padrão; 0: limpar imediatamente; >0: manter a duração especificada e depois aplicar fade-out

removeAudioExternalStream

removeAudioExternalStream(streamId: string): number

Mensagens em tempo real

sendDataMsg

Envie uma mensagem de dados em tempo real pelo canal de dados MoQT.
sendDataMsg(msg: AoqDataMsg): number

Callbacks de quadros de áudio

setAudioFrameObserver

Defina o observador de callback de dados de quadro de áudio. Registre o observador primeiro e depois chame enableAudioFrameObserver para começar a receber callbacks.
setAudioFrameObserver(observer: IAudioFrameObserver | null): number

enableAudioFrameObserver

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

Callbacks de quadros de vídeo

setVideoFrameObserver

setVideoFrameObserver(observer: IVideoFrameObserver | null): number

enableVideoFrameObserver

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

Callbacks do AoqEngineEventListener

Todos os callbacks são propriedades opcionais (?).
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 é uma cópia Uint8Array da memória nativa e atualmente é somente leitura (modificações não são gravadas de volta no SDK).

IVideoFrameObserver

export interface IVideoFrameObserver {
  onCapturedVideoFrame?: (frame: AoqVideoFrame) => boolean;
  onPreEncodeVideoFrame?: (trackType: AoqTrackType, frame: AoqVideoFrame) => boolean;
  onRemoteVideoFrame?: (trackType: AoqTrackType, frame: AoqVideoFrame) => boolean;
}
Os buffers de quadros são cópias Uint8Array da memória nativa, válidas apenas durante o callback. Atualmente equivalem a somente leitura; o suporte a gravação de volta está planejado para uma versão futura.

Tipos de dados e enumerações

Tipos gerais

AoqCreateConfig

Campo

Tipo

Padrão

Descrição

workDir

string

""

Diretório de trabalho do SDK

enableDumpAudio

boolean

false

Ativar dump de áudio bruto (para depuração)

extras

string

""

String de parâmetros extras

Diferente do Android, o AoqCreateConfig no HarmonyOS não inclui isBTScoMode.

AoqConnectConfig

Campo

Tipo

Padrão

Descrição

token

string

""

Token de autenticação

sid

string

""

ID da sessão

certFingerprint

string

""

Impressão digital do certificado do servidor

relayEndpoints

AoqRelayEndpoint[]

[]

Lista de endpoints Relay

workspaceIdHash

string

""

Hash do ID do workspace

publishTracks

AoqTrackParam[]

[]

Faixas locais a serem publicadas

subscribeTracks

AoqTrackParam[]

[]

Faixas remotas para assinatura

AoqRelayEndpoint

Campo

Tipo

Descrição

endpoint

string

Nome do host ou IP do servidor Relay

port

number

Porta do servidor Relay

AoqTrackParam

Campo

Tipo

Descrição

trackType

AoqTrackType

Tipo de faixa

AoqErrorCode

Valor da enumeração

Valor

Descrição

AoqECOK

0

Sucesso

AoqECParamInvalid

1

Parâmetro inválido

AoqECStateInvalid

2

Estado inválido

AoqECUnSupport

3

Não suportado

AoqECAudio

100

Erro genérico de áudio

AoqECAudioExternalBufferFull

110

Buffer de áudio externo cheio

AoqECAudioDevice

120

Erro genérico de dispositivo de áudio

AoqECAudioDeviceRecordingAuthFailed

121

Permissão de gravação não concedida

AoqECAudioDeviceRecordingOccupied

122

Dispositivo de gravação em uso

AoqECAudioDeviceRecordingBackgroundStart

123

Falha ao iniciar gravação em segundo plano

AoqECAudioDeviceRecordingStartFail

124

Falha ao iniciar gravação

AoqECAudioDevicePlayoutOccupied

125

Dispositivo de reprodução em uso

AoqECAudioDevicePlayoutBackgroundStart

126

Falha ao iniciar reprodução em segundo plano

AoqECAudioDevicePlayoutStartFail

127

Falha ao iniciar reprodução

AoqECAudioDeviceEarpieceRequiresVoipMode

128

Auricular requer modo VoIP

AoqECVideo

200

Erro genérico de vídeo

AoqECVideoExternalBufferFull

210

Buffer de vídeo externo cheio

AoqECVideoExternalCaptureNotEnabled

211

Captura de vídeo externa não ativada

AoqECVideoExternalEncoderNotEnabled

212

Codificador de vídeo externo não ativado

AoqECVideoDevice

220

Erro genérico de dispositivo de vídeo

AoqECVideoDeviceCameraOpenFail

221

Falha ao abrir a câmera

AoqECVideoDeviceCameraAuthFailed

222

Permissão da câmera não concedida

AoqECVideoDeviceCameraOccupied

223

Câmera em uso

AoqECVideoDeviceCameraRunningError

224

Erro de execução da câmera

AoqECVideoCodec

230

Erro genérico de codec de vídeo

AoqECVideoCodecEncoderInitFail

231

Falha na inicialização do codificador de vídeo

AoqECVideoRender

240

Erro genérico de renderização de vídeo

AoqECVideoRenderCreateFail

241

Falha na criação do renderizador de vídeo

AoqECVideoRenderDrawError

242

Erro de desenho na renderização de vídeo

AoqWarningCode

Valor da enumeração

Valor

Descrição

AoqWCOK

0

Sem avisos

AoqWCAudio

100

Aviso genérico de áudio

AoqWCAudioHowling

101

Microfonia detectada

AoqWCAudioDevice

120

Aviso genérico de dispositivo de áudio

AoqWCAudioDeviceMicEnumerateError

121

Erro de enumeração do microfone

AoqWCAudioDeviceMicStartTimeout

122

Tempo limite de início do microfone

AoqWCAudioDeviceRecordingError

123

Erro de gravação

AoqWCAudioDeviceSpeakerEnumerateError

124

Erro de enumeração do alto-falante

AoqWCAudioDeviceSpeakerStartTimeout

125

Tempo limite de início do alto-falante

AoqWCAudioDevicePlayoutError

126

Erro de reprodução

AoqWCVideo

200

Aviso genérico de vídeo

AoqWCVideoCameraEnumerateError

201

Erro de enumeração da câmera

AoqWCVideoEncoderSwitched

202

Codificador de vídeo alternado

AoqWCVideoRenderDowngrade

203

Renderização de vídeo rebaixada

AoqTrackType

Valor da enumeração

Valor

Descrição

AoqTrackTypeAudio

0

Faixa de áudio

AoqTrackTypeVideo

1

Faixa de vídeo

AoqTrackTypeData

2

Faixa de mensagens de dados

Diferente do Android, AoqTrackTypeScreen (3) não está incluído no HarmonyOS. A captura de tela ainda não está disponível.

AoqConnectionStatus

Valor da enumeração

Valor

Descrição

AoqConnectionStatusDisconnected

0

Desconectado

AoqConnectionStatusConnecting

1

Conectando

AoqConnectionStatusConnected

2

Conectado

AoqConnectionStatusFailed

3

Falha na conexão

AoqEncoderType / AoqMirrorMode / AoqOrientationMode

Igual ao SDK para Android; sem alterações.

Tipos de áudio

AoqAudioCaptureConfig

Campo

Tipo

Padrão

Descrição

isExternal

boolean

false

true: usar entrada de áudio externa

isVoipMode

boolean

false

true: ativar modo VoIP (AEC de hardware)

channel

number

1

Contagem de canais: 1 ou 2

AoqAudioPlaybackConfig

Campo

Tipo

Padrão

Descrição

isVoipMode

boolean

false

true: ativar modo VoIP (AEC de hardware); prevalece a primeira configuração entre captura e reprodução

isDefaultSpeaker

boolean

true

true: padrão para alto-falante; false: padrão para auricular

isExternal

boolean

false

true: usar saída de áudio externa

channel

number

1

Contagem de canais: 1 ou 2

AoqAudioCodecConfig

Campo

Tipo

Padrão

Descrição

trackType

AoqTrackType

AoqTrackTypeAudio

Faixa alvo

codecType

AoqEncoderType

AoqEncoderTypeAudioPCM

Formato do codec

sampleRate

number

48000

Taxa de amostragem (Hz)

channel

number

1

Contagem de canais

bitrate

number

32000

Taxa de bits (bps)

Tipos de vídeo

AoqVideoCaptureConfig

Campo

Tipo

Padrão

Descrição

width

number

1280

Largura de captura; ignorado quando isExternal=true

height

number

720

Altura de captura

fps

number

15

Taxa de quadros de captura

isExternal

boolean

false

true: não abrir a câmera; fornecer quadros via pushExternalVideoCapturedFrame

cameraDirection

AoqCameraDirection

Front

Direção da câmera

AoqVideoCodecConfig

Campo

Tipo

Padrão

Descrição

trackType

AoqTrackType

AoqTrackTypeVideo

Faixa alvo

codecType

AoqEncoderType

AoqEncoderTypeVideoH264

Formato do codec

width

number

720

Largura de codificação

height

number

1280

Altura de codificação

fps

number

15

Taxa de quadros

bitrate

number

500

Taxa de bits (kbps)

minBitrate

number

128

Taxa de bits mínima (kbps)

keyframeInterval

number

2

Intervalo de quadros-chave (segundos)

mirrorMode

AoqMirrorMode

Disabled

Modo espelho

orientationMode

AoqOrientationMode

Auto

Orientação do vídeo

isExternal

boolean

false

true: o SDK ignora a recodificação

Diferente do Android, as unidades de taxa de bits no HarmonyOS são kbps (padrões: 500/128). No Android, são bps (padrões: 500000/128000).

AoqVideoCanvas

Campo

Tipo

Padrão

Descrição

view

Object \

null

null

Instância de AoqXComponentController; passe null para remover a vinculação de renderização

renderMode

AoqRenderMode

AoqRenderModeAuto

Modo de exibição

AoqVideoPixelFormat

Valor da enumeração

Valor

Descrição

AoqVideoPixelFormatUnknown

0

Desconhecido

AoqVideoPixelFormatI420

1

I420

AoqVideoPixelFormatNV12

2

NV12

AoqVideoPixelFormatNV21

3

NV21

AoqVideoPixelFormatBGRA

4

BGRA

AoqVideoPixelFormatRGBA

5

RGBA

TextureOES e Texture2D não são suportados no HarmonyOS.

AoqVideoFrame

Campo

Tipo

Descrição

format

AoqVideoPixelFormat

Formato de pixel

width

number

Largura (pixels)

height

number

Altura (pixels)

dataPtr

ArrayBuffer \

Uint8Array \

null

Dados de formato compactado

dataSize

number

Tamanho dos dados compactados (bytes)

dataY / dataU / dataV

ArrayBuffer \

Uint8Array \

null

Planos I420

strideY / strideU / strideV

number

Passo do plano

timeStamp

number

Carimbo de data/hora (ms); quando 0, o SDK usa o relógio local

AoqVideoEncodedFrame

Campo

Tipo

Descrição

codec

AoqVideoCodecType

Formato de codificação (AoqVideoCodecTypeJPEG = 0)

data

ArrayBuffer \

Uint8Array

Dados do quadro codificado

width

number

Largura

height

number

Altura

timeStamp

number

Carimbo de data/hora (ms)

Tipos de arquivo de áudio e fluxo externo

AoqAudioFileMixConfig

Campo

Tipo

Padrão

Descrição

fileName

string

""

Nome do arquivo (incluindo caminho)

cycles

number

-1

Contagem de loops; -1 significa loop infinito

startPosMs

number

0

Posição inicial de reprodução (ms)

publishVolume

number

100

Volume de publicação [0, 100]

playoutVolume

number

100

Volume de reprodução local [0, 100]

AoqAudioExternalStreamConfig

Campo

Tipo

Padrão

Descrição

trackType

AoqTrackType

AoqTrackTypeAudio

Tipo de faixa

codecType

AoqEncoderType

AoqEncoderTypeAudioPCM

Formato de áudio

channels

number

1

Contagem de canais

sampleRate

number

48000

Taxa de amostragem (Hz)

playoutVolume

number

100

Volume de reprodução [0, 100]

publishVolume

number

100

Volume de publicação [0, 100]

maxBufferDuration

number

1000

Duração máxima do buffer (ms)

enable3A

boolean

false

Se deve aplicar processamento 3A ao PCM de entrada

AoqAudioFrameData

Campo

Tipo

Descrição

dataPtr

ArrayBuffer \

Uint8Array \

null

Dados de áudio PCM brutos

dataSize

number

Tamanho dos dados PCM (bytes)

numOfSamples

number

Contagem de amostras (mono)

bytesPerSample

number

Bytes por amostra

numOfChannels

number

Contagem de canais

samplesPerSec

number

Taxa de amostragem

pushSequence

number

Número de sequência de envio PCM

timeStamp

number

Carimbo de data/hora

autoGenMute

boolean

true: estes são dados de silêncio gerados pelo SDK

Tipos de configuração do observador

AoqAudioObserverConfig

Campo

Tipo

Padrão

Descrição

sampleRate

number

48000

Taxa de amostragem do callback

channels

number

1

Contagem de canais do callback

mode

AoqAudioObserverMode

ReadOnly

Modo de leitura/gravação

AoqVideoObserverConfig

Campo

Tipo

Padrão

Descrição

format

AoqVideoPixelFormat

I420

Formato de pixel do callback

alignment

AoqVideoObserverAlignment

Default

Alinhamento de largura

mode

AoqVideoObserverMode

ReadOnly

Modo de leitura/gravação

mirrorApplied

boolean

false

Se deve aplicar espelhamento

Tipos de estatísticas

AoqStats

Campo

Tipo

Descrição

audioPublishStats

AoqAudioPublishStats[]

Estatísticas de publicação de áudio

videoPublishStats

AoqVideoPublishStats[]

Estatísticas de publicação de vídeo

dataMsgPublishStats

AoqDataMsgPublishStats[]

Estatísticas de publicação de mensagens de dados

audioSubscribeStats

AoqAudioSubscribeStats[]

Estatísticas de assinatura de áudio

videoSubscribeStats

AoqVideoSubscribeStats[]

Estatísticas de assinatura de vídeo

dataMsgSubscribeStats

AoqDataMsgSubscribeStats[]

Estatísticas de assinatura de mensagens de dados

networkStats

AoqNetworkStats \

null

Estatísticas de rede

Subtipos de estatísticas

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

Principais diferenças em relação ao SDK para Android

Categoria

Android

HarmonyOS

Linguagem de implementação

Java

ArkTS (.ets), integrado via NAPI ao C++

Tipo de valor de retorno

int / long / boolean

number / boolean

Retorno de createEngine

@NonNull AoqClientEngine

AoqClientEngine \

null

Contexto de createEngine

android.content.Context

common.Context (UIAbility/Page)

Forma do Listener

Classe abstrata com métodos vazios padrão

Interface TS; todos os callbacks são opcionais (?)

Forma do observador de quadros

Interface com métodos padrão

Interface TS; todos os callbacks são opcionais (?)

AoqCreateConfig

Inclui isBTScoMode

Não inclui isBTScoMode

AoqAudioPlaybackConfig

Sem isVoipMode

Inclui isVoipMode; prevalece a primeira configuração entre captura e reprodução

onAudioDeviceFocusChanged

Fornecido

Não fornecido (sem abstração de foco de áudio)

Visualização de renderização de vídeo

View (SurfaceView/TextureView)

AoqXComponentController (estende XComponentController)

Enumeração de formato de pixel

Inclui TextureOES (7) / Texture2D (8)

Não inclui formatos de textura

Campos extras do quadro de vídeo

textureId / transformMatrix / eglContext

Não incluídos

Contêiner de dados do quadro

byte[] / ByteBuffer

ArrayBuffer / Uint8Array

Unidade de taxa de bits de codificação de vídeo

bps (padrões: 500000/128000)

kbps (padrões: 500/128)

AoqTrackType

Inclui AoqTrackTypeScreen (3)

Não inclui AoqTrackTypeScreen; captura de tela ainda não disponível

APIs de captura de tela

startScreenCapture / stopScreenCapture

Ainda não fornecidas

Gravação de volta do observador

Suporte a gravação de volta I420

Atualmente equivalente a somente leitura; gravação de volta planejada para versão futura

Segurança de reregistro do observador

Depende de internos do SDK

Proteção UAF usando padrão tombstone

Monitoramento de dispositivo

Implícito na camada Java

AoqDeviceMonitor (interno) inicia automaticamente

Namespace de código de erro

AoqErrorCodeXxx

AoqECXxx (ex.: AoqECOK, AoqECParamInvalid)

Notas de arquitetura

  1. AoqXComponentController: Estende XComponentController e substitui onSurfaceCreated, onSurfaceChanged e onSurfaceDestroyed. Crie uma instância, anexe-a a um XComponent e passe-a como canvas.view ao chamar setLocalView ou setRemoteView.
  2. Arquitetura NAPI: fachada (AoqClientEngine.ets) → implementação (AoqClientEngineImpl.ets) → NAPI (libaoq_client_sdk.so). Os objetos de configuração são achatados em parâmetros individuais na camada de implementação.
  3. Monitoramento de dispositivo (interno): O AoqDeviceMonitor inicia automaticamente após createEngine e encaminha o estado da rede e o estado de primeiro plano/segundo plano do aplicativo para o mecanismo C++.
  4. Proteção UAF do observador: O reregistro segue uma sequência de três etapas: cortar referência antiga em C++ → enviar observador antigo para tombstone → apontar para novo observador.
  5. Semântica de payload do quadro: Os buffers Uint8Array nos callbacks de quadros de áudio/vídeo são cópias da memória nativa. A gravação de volta não é suportada na P1; zero-copy está planejado para a P2.
Referência da API de Geração de Texto
Geração de Imagens
  • FAQ
Geração de Vídeo
Áudio
Incorporação de Texto
Produção de Modelos