Referência da API do AOQ Client SDK para HarmonyOS (OHOS). A linguagem da plataforma é ArkTS (.ets), integrada ao mecanismo C++ via NAPI.
Í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.
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 |
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.
getVersion
Obtenha a string da versão atual do SDK.
"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.
Parâmetro | Tipo | Descrição |
|---|---|---|
config | AoqConnectConfig | Configuração de conexão, incluindo token, SID e lista de endpoints Relay |
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.
Gerenciamento de dispositivos de áudio
startAudioCapture
Abra o dispositivo de captura de áudio (microfone).
Parâmetro | Tipo | Descrição |
|---|---|---|
config | AoqAudioCaptureConfig | Configuração de captura |
stopAudioCapture
Feche o dispositivo de captura de áudio.
muteAudioCapture
Silencie ou reative a captura de áudio.
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).
Parâmetro | Tipo | Descrição |
|---|---|---|
config | AoqAudioPlaybackConfig | Configuração de reprodução |
stopAudioPlayer
Interrompa a reprodução de áudio.
pauseAudioPlayer
Pause a reprodução de áudio com um fade-out opcional para uma transição suave.
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.
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.
Parâmetro | Tipo | Descrição |
|---|---|---|
trackType | AoqTrackType | Tipo de faixa alvo; tipicamente |
fadeMs | number | Duração do fade-out (milissegundos) |
enableSpeakerphone
Alterne a rota de saída de áudio entre o alto-falante e o auricular.
Parâmetro | Tipo | Descrição |
|---|---|---|
enable | boolean | true: usar alto-falante; false: usar auricular |
isSpeakerphoneEnabled
Consulte se o alto-falante está ativo no momento.
Configuração de codec de áudio
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
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.
stopVideoCapture
Feche o dispositivo de captura de vídeo.
switchCamera
Alterne entre as câmeras frontal e traseira.
Parâmetro | Tipo | Descrição |
|---|---|---|
direction | AoqCameraDirection |
|
setLocalView
Defina ou remova a visualização de renderização de vídeo local.
Parâmetro | Tipo | Descrição | |
|---|---|---|---|
trackType | AoqTrackType |
| |
canvas | AoqVideoCanvas \ | null | Configuração do canvas de renderização; passe null ou defina |
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.
Parâmetro | Tipo | Descrição | |
|---|---|---|---|
trackType | AoqTrackType |
| |
canvas | AoqVideoCanvas \ | null | Configuração do canvas de renderização; passe null ou defina |
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.
pushExternalVideoCapturedFrame
Envie um quadro de vídeo bruto capturado externamente.
Parâmetro | Tipo | Descrição |
|---|---|---|
trackType | AoqTrackType |
|
frame | AoqVideoFrame | Dados do quadro de vídeo |
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.
Parâmetro | Tipo | Descrição |
|---|---|---|
trackType | AoqTrackType |
|
frame | AoqVideoEncodedFrame | Dados do quadro codificado |
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.
Parâmetro | Tipo | Descrição |
|---|---|---|
trackType | AoqTrackType |
|
enable | boolean | true: ativar envio; false: desativar envio |
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.
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
getAudioFileDuration / getAudioFileCurrentPosition
setAudioFilePositionMillis
setAudioFileVolume / getAudioFileVolume
Fluxos de áudio externos
addAudioExternalStream
Adicione um fluxo de áudio externo.
pushAudioExternalStreamData
Envie dados de áudio PCM externos. Retorna AoqECAudioExternalBufferFull (110) se o buffer interno estiver cheio.
setAudioExternalStreamVolume / getAudioExternalStreamVolume
clearAudioExternalStreamBuffer
Limpe o buffer do fluxo de áudio externo. Não há valor de retorno; a execução é assíncrona.
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
Mensagens em tempo real
sendDataMsg
Envie uma mensagem de dados em tempo real pelo canal de dados MoQT.
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.
enableAudioFrameObserver
Callbacks de quadros de vídeo
setVideoFrameObserver
enableVideoFrameObserver
Callbacks do AoqEngineEventListener
Todos os callbacks são propriedades opcionais (?).
IAudioFrameObserver
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
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 |
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 |
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 |
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 |
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 |
AoqVideoCanvas
Campo | Tipo | Padrão | Descrição | |
|---|---|---|---|---|
view | Object \ | null | null | Instância de |
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 |
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 ( | |
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 | Não inclui | |
AoqAudioPlaybackConfig | Sem | Inclui | |
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
- AoqXComponentController: Estende
XComponentControllere substituionSurfaceCreated,onSurfaceChangedeonSurfaceDestroyed. Crie uma instância, anexe-a a umXComponente passe-a comocanvas.viewao chamarsetLocalViewousetRemoteView. - 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. - Monitoramento de dispositivo (interno): O
AoqDeviceMonitorinicia automaticamente apóscreateEnginee encaminha o estado da rede e o estado de primeiro plano/segundo plano do aplicativo para o mecanismo C++. - 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.
- Semântica de payload do quadro: Os buffers
Uint8Arraynos 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.