QwenCloudBRASIL
Tradução de apoio para consulta. Código e identificadores técnicos preservados. Consultar referência original ↗

SDK HarmonyOS

Referência da API AOQ HarmonyOS SDK

índice API

Ciclo de vida do motor

API Descrição
criarEngine Crie a instância do mecanismo (singleton)
destruir Destrua a instância do mecanismo
getVersão Obtenha a string da versão do SDK
conectar Conecte-se ao servidor de retransmissão
desconectar Desconectar do servidor

Gerenciamento de dispositivos de áudio

API Descrição
iniciarAudioCapture Abra o dispositivo de captura de áudio (microfone)
pararAudioCaptura Feche o dispositivo de captura de áudio
muteAudioCapture Ativar ou ativar captura de áudio
iniciarAudioPlayer Iniciar a reprodução de áudio (reproduzir áudio remoto)
pararAudioPlayer Pare a reprodução de áudio
pausaAudioPlayer Pause a reprodução de áudio com fade-out opcional
retomarAudioPlayer Retomar a reprodução de áudio com fade-in opcional
interromperAudioPlayer Interromper a chamada de áudio atual
ativar viva-voz Alternar a saída de áudio entre alto-falante e fone de ouvido
está viva-voz habilitado Consultar se o alto-falante está atualmente ativo
enableLocalAudioVolumeIndicação Configurar indicação de volume de captura local

Configuração do codec de áudio

API Descrição
setAudioEncoderConfig Definir parâmetros de codificação de áudio
setAudioDecoderConfig Definir parâmetros de decodificação de áudio

Gerenciamento de dispositivos de vídeo

API Descrição
iniciarVideoCapture Abra o dispositivo de captura de vídeo (câmera)
pararVideoCapture Feche o dispositivo de captura de vídeo
mudarCâmera Alternar entre câmeras frontal e traseira
definirLocalView Definir ou remover a visualização de renderização de vídeo local
definirRemoteView Definir ou remover a visualização de renderização remota de vídeo
iniciarScreenCapture Iniciar captura de tela
pararScreenCapture Pare a captura de tela

Codificação de vídeo e entrada externa

API Descrição
setVideoEncoderConfig Definir parâmetros de codificação de vídeo
pushExternalVideoCapturedFrame Enviar um quadro de vídeo bruto capturado externamente
pushExternalVideoEncodedFrame Enviar um quadro de vídeo codificado externamente
setVideoDecoderConfig Definir parâmetros de decodificação de vídeo

Controle de fluxo de mídia

API Descrição
ativarSendMediaStream Habilitar ou desabilitar envio de fluxo de mídia local

Reprodução de arquivo de áudio

API Descrição
startAudioFile Comece a transmitir um arquivo de áudio local
pararAudioFile Pare a reprodução do arquivo de áudio
pausaAudioFile Pausar a reprodução do arquivo de áudio
retomarÁudioArquivo Retomar a reprodução do arquivo de áudio
getAudioFileDuration Obtenha a duração total do arquivo de áudio
getAudioFileCurrentPosition Obtenha a posição de reprodução atual
setAudioFilePositionMillis Busque uma posição no arquivo de áudio
setAudioFileVolume Defina o volume do arquivo de áudio
getAudioFileVolume Obtenha o volume atual do arquivo de áudio

Fluxos de áudio externos

API Descrição
addAudioExternalStream Adicione um fluxo de áudio externo
removerAudioExternalStream Remover um fluxo de áudio externo
pushAudioExternalStreamData Enviar dados de áudio PCM externos
setAudioExternalStreamVolume Definir o volume para um fluxo de áudio externo
getAudioExternalStreamVolume Obtenha o volume de um fluxo de áudio externo
clearAudioExternalStreamBuffer Limpe o buffer para um fluxo de áudio externo

Mensagens em tempo real

API Descrição
enviarDataMsg Envie uma mensagem de dados em tempo real

Retornos de chamada de quadro de áudio

API Descrição
setAudioFrameObserver Definir o observador de retorno de chamada de dados do quadro de áudio
ativarAudioFrameObserver Habilitar ou desabilitar retornos de chamada de quadro de áudio em um ponto especificado

Retornos de chamada de quadro de vídeo

API Descrição
setVideoFrameObserver Defina o observador de retorno de chamada de dados do quadro de vídeo
ativarVideoFrameObserver Ativar ou desativar retornos de chamada de quadro de vídeo em um ponto especificado

Retornos de chamada AoqEngineEventListener

Retorno de chamada Descrição
onError Retorno de chamada de erro do mecanismo
emAviso Retorno de chamada de aviso do motor
onConnectionStatusAlterar Retorno de chamada de mudança de estado de conexão
onStats Retorno de chamada de estatísticas
onAudioDeviceStateChanged Retorno de chamada de mudança de estado do dispositivo de áudio
onAudioDeviceRouteChanged Retorno de chamada de mudança de rota de saída de áudio
onAudioDeviceInterrompido Retorno de chamada de interrupção de dispositivo de áudio
onVideoDeviceStateChanged Retorno de chamada de mudança de estado do dispositivo de vídeo
onAudioFileState Retorno de chamada do estado de reprodução do arquivo de áudio
onDataMsg Mensagem de dados em tempo real recebeu retorno de chamada
IAudioFrameObserver Interface de observador de dados de quadro de áudio
IVideoFrameObserver Interface de observador de dados de quadro de vídeo
onLocalAudioVolumeIndicação Retorno de chamada de volume de captura local
onScreenCaptureStateChanged Retorno de chamada do estado de captura de tela

Detalhes da API

Requisitos de entrada de vídeo externa

pushExternalVideoCapturedFrame suporta vídeo e tela. Habilite primeiro a captura externa na trilha correspondente; caso contrário, ele retorna AoqECVideoExternalCaptureNotEnabled (211). pushExternalVideoEncodedFrame requer codificação externa na faixa correspondente; caso contrário, ele retorna AoqECVideoExternalEncoderNotEnabled (212).

Captura de tela

startScreenCapture(config: AoqScreenCaptureConfig): number
stopScreenCapture(): number

config especifica configurações de captura de tela. O conteúdo da tela é enviado no AoqTrackTypeScreen pista.

Para começar, 0 significa que a solicitação foi aceita; onScreenCaptureStateChanged relata o resultado de forma assíncrona. Um retorno diferente de zero rejeita a solicitação de forma síncrona sem um evento de falha duplicado. Stop retorna 0 em caso de sucesso ou um valor diferente de zero em caso de falha e relata o estado interrompido por meio desse retorno de chamada.

Com isExternal=false, o SDK captura a tela e o sistema solicita permissão. Você não precisa esperar por Iniciado antes de ativar a transmissão ou produzir quadros externos.

Para quadros brutos externos, defina isExternal=true e fornecer molduras de tela brutas através pushExternalVideoCapturedFrame para codificação SDK. Para quadros codificados externos, configure a trilha Screen para codificação externa com setVideoEncoderConfig, então ligue pushExternalVideoEncodedFrame; startScreenCapture não é obrigatório.

onScreenCaptureStateChanged

onScreenCaptureStateChanged?: (state: AoqScreenCaptureState) => void;

state contém o estado da captura de tela. Iniciado significa que a captura ou entrada externa está pronta, e não que a mídia foi enviada. Falhas de captura de tela também não são relatadas por meio de onError. Os retornos de chamada são entregues de forma assíncrona no thread JS.

###setVideoDecoderConfig

setVideoDecoderConfig(config: AoqVideoCodecConfig): number

config especifica configurações de decodificação de vídeo. Somente os seguintes campos terão efeito: trackType, codecType, width, height, fps, bitrate. Outros campos aplicam-se apenas à codificação.

A tela não suporta decodificação downstream. Se config.trackType é Tela, o método retorna AoqECUnSupport sem aplicar a configuração.

Retorna 0 em caso de sucesso ou um valor diferente de zero em caso de falha.

enableLocalAudioVolumeIndication

enableLocalAudioVolumeIndication(config: AoqAudioVolumeIndicationConfig): number

config especifica configurações de indicação de volume. Os retornos de chamada são emitidos em config.interval. Chame esse método depois startAudioCapture.

Retorna 0 em caso de sucesso ou um valor diferente de zero em caso de falha.

onLocalAudioVolumeIndication?: (volume: AoqAudioVolume) => void;

O volume argumento de retorno de chamada contém o volume de captura local.

Ciclo de vida do motor

####criarEngine

Crie a instância do mecanismo. O SDK mantém o mecanismo como um singleton global; chamar esse método novamente retorna a instância existente. Retorna nulo se o mecanismo nativo falhar na inicialização.

static createEngine(config: AoqCreateConfig, listener: AoqEngineEventListener, context: common.Context): AoqClientEngine | null
Parâmetro Tipo Descrição
configuração AoqCreateConfig Configuração de criação do motor
ouvinte AoqEngineEventListener Ouvinte de retorno de chamada de evento do mecanismo (interface; todos os retornos de chamada são opcionais)
contexto comum.Contexto Contexto UIAbility/Page, usado para inicialização aki+ACPM

Retornos: AoqClientEngine | null -- null se a criação nativa falhar.

Observação: Ao contrário do Android, este SDK retorna nulo em caso de falha. Sempre verifique nulo o valor de retorno. O context deve ser um contexto UIability ou Page válido.

destruir

Destrua o singleton do motor e libere todos os recursos. Você deve ligar 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".

conectar

Conecte-se ao servidor de retransmissão. Os parâmetros de conexão são alocados pelo servidor de aplicação via /api/v1/allocate e entregue ao cliente.

connect(config: AoqConnectConfig): number
Parâmetro Tipo Descrição
configuração AoqConnectConfig Configuração de conexão, incluindo token, SID e lista de endpoints de retransmissão

Retorna: 0 se a chamada foi despachada (assíncrona); diferente de zero se a validação do parâmetro falhou.

Observação: As alterações no estado da conexão são relatadas de forma assíncrona por meio de onConnectionStatusChange. Recomenda-se ligar enableSendMediaStream(false) antes de ligar connect.

desconectar

Desconecte-se do servidor e libere recursos relacionados à conexão. 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
configuração 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

Ative ou desative a captura de áudio.

muteAudioCapture(mute: boolean): number
Parâmetro Tipo Descrição
mudo booleano verdadeiro: mudo; falso: ativar o som

iniciarAudioPlayer

Inicie a reprodução de áudio (reproduza áudio remoto através do alto-falante ou fone de ouvido).

startAudioPlayer(config: AoqAudioPlaybackConfig): number
Parâmetro Tipo Descrição
configuração AoqAudioPlaybackConfig Configuração de reprodução

pararAudioPlayer

Pare a reprodução de áudio.

stopAudioPlayer(): number

pausaAudioPlayer

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 número Duração do fade-out (milissegundos); 0 significa imediato

retomarAudioPlayer

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 número Duração do fade-in (milissegundos); 0 significa imediato

interromperAudioPlayer

Interromper a chamada de áudio atual.

interruptAudioPlayer(trackType: AoqTrackType, fadeMs: number): number
Parâmetro Tipo Descrição
trackType AoqTrackType Tipo de trilha alvo; normalmente AoqTrackTypeAudio
fadeMs número Duração do fade-out (milissegundos)

ativar viva-voz

Alterne a rota de saída de áudio entre o alto-falante e o fone de ouvido.

enableSpeakerphone(enable: boolean): number
Parâmetro Tipo Descrição
habilitar booleano verdadeiro: use alto-falante; falso: use fone de ouvido

está habilitado para viva-voz

Consulte se o alto-falante está ativo no momento.

isSpeakerphoneEnabled(): boolean

Retorna: verdadeiro se o alto-falante estiver ativo; false se o fone de ouvido estiver ativo.

Configuração do codec de áudio

####setAudioEncoderConfig

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

setAudioEncoderConfig(config: AoqAudioCodecConfig): number

####setAudioDecoderConfig

Defina 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 está aberta; o chamador fornece frames via pushExternalVideoCapturedFrame.

startVideoCapture(config: AoqVideoCaptureConfig): number

pararVideoCapture

Feche o dispositivo de captura de vídeo.

stopVideoCapture(): number

mudarCâmera

Alterne entre as câmeras frontal e traseira.

switchCamera(direction: AoqCameraDirection): number
Parâmetro Tipo Descrição
direção AoqCameraDireção 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
tela AoqVideoCanvas \ nulo

Nota: No HarmonyOS, isso deve ser chamado após o XComponent.onLoad retorno de chamada. Passe um AoqXComponentController instância como canvas.view.

definirRemoteView

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

setRemoteView(trackType: AoqTrackType, canvas: AoqVideoCanvas | null): number
Parâmetro Tipo Descrição
trackType AoqTrackType AoqTrackTypeVideo
tela AoqVideoCanvas \ nulo

Codificação de vídeo e entrada externa

####setVideoEncoderConfig

Defina parâmetros de codificação de vídeo. A chamada é roteada para a trilha 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
moldura AoqVideoFrame Dados de quadro de vídeo

Para vídeo, ligue startVideoCapture(isExternal=true) primeiro. Para tela, ligue startScreenCapture(isExternal=true) primeiro. Formatos suportados: NV12, NV21, BGRA, RGBA, I420.

Se o buffer interno estiver cheio, o método retornará AoqECVideoExternalBufferFull(210). Durma e tente novamente; não faça loop ocupado.

pushExternalVideoEncodedFrame

Envie um quadro de vídeo codificado externamente. O SDK envia diretamente sem recodificação.

pushExternalVideoEncodedFrame(trackType: AoqTrackType, frame: AoqVideoEncodedFrame): number
Parâmetro Tipo Descrição
trackType AoqTrackType AoqTrackTypeVideo
moldura AoqVideoEncodedFrame Dados de quadro codificados

Só consumido depois setVideoEncoderConfig(isExternal=true) está configurado.

Controle de fluxo de mídia

ativarSendMediaStream

Ative ou desative o envio de fluxo de mídia local. A chamada é roteada para a trilha especificada por trackType.

enableSendMediaStream(trackType: AoqTrackType, enable: boolean): number
Parâmetro Tipo Descrição
trackType AoqTrackType AoqTrackTypeAudio ou AoqTrackTypeVideo
habilitar booleano verdadeiro: habilita o envio; falso: desabilitar envio

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

Reprodução de arquivo de áudio

startAudioFile

Comece a transmitir um arquivo de áudio local. A reprodução do arquivo de áudio é mixada no fluxo publicado e na reprodução local.

startAudioFile(fileId: string, config: AoqAudioFileMixConfig): number
Parâmetro Tipo Descrição
ID do arquivo corda Identificador exclusivo do arquivo de áudio, especificado pelo chamador
configuração 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. Devoluções 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 de fluxo de áudio externo. Nenhum valor de retorno; executa de forma assíncrona.

clearAudioExternalStreamBuffer(streamId: string, fadeoutMs: number): void
Parâmetro Tipo Descrição
fadeoutMs número -1: fade-out padrão; 0: limpar imediatamente; >0: retém a duração especificada e depois desaparece

removeAudioExternalStream

removeAudioExternalStream(streamId: string): number

Mensagens em tempo real

enviarDataMsg

Envie uma mensagem de dados em tempo real pelo canal de dados MoQT.

sendDataMsg(msg: AoqDataMsg): number

Retornos de chamada de quadro de áudio

####setAudioFrameObserver

Defina o observador de retorno de chamada de dados do quadro de áudio. Registre o observador primeiro e depois ligue enableAudioFrameObserver para começar a receber retornos de chamada.

setAudioFrameObserver(observer: IAudioFrameObserver | null): number

enableAudioFrameObserver

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

Retornos de chamada de quadro de vídeo

####setVideoFrameObserver

setVideoFrameObserver(observer: IVideoFrameObserver | null): number

enableVideoFrameObserver

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

Retornos de chamada AoqEngineEventListener

Todos os retornos de chamada 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 é um Uint8Array cópia da memória nativa e atualmente é somente leitura (as modificações não são gravadas no SDK).

IVideoFrameObserver

export interface IVideoFrameObserver {
  onCapturedVideoFrame?: (trackType: AoqTrackType, frame: AoqVideoFrame) => boolean;
  onPreEncodeVideoFrame?: (trackType: AoqTrackType, frame: AoqVideoFrame) => boolean;
  onRemoteVideoFrame?: (trackType: AoqTrackType, frame: AoqVideoFrame) => boolean;
}

Os buffers de quadro são Uint8Array cópias da memória nativa, válidas apenas durante o retorno de chamada. Atualmente, eles são equivalentes a somente leitura; o suporte de write-back está planejado para uma versão futura.

Tipos de dados e enumerações

Na v1.3.0, Index.ets exporta as seguintes enums e interfaces:

AoqScreenCaptureState

Campo Tipo Padrão Descrição
estado AoqScreenCaptureStateCode — Estado de captura de tela.
motivo número — 0 para estados normais; um AoqErrorCode em caso de falha.

AoqScreenCaptureStateCode

Valor enum Valor Descrição
AoqScreenCaptureNone 0 Nenhum
AoqScreenCaptureIniciando 1 Iniciando
AoqScreenCaptureiniciado 2 Entrada pronta; não indica transmissão
AoqScreenCaptureStopping 3 Parando
AoqScreenCaptureStopped 4 Parado
AoqScreenCaptureFail 5 Falha no início ou no tempo de execução

AoqScreenCaptureConfig

Campo Tipo Padrão Descrição
éExterno booleano falso Se o aplicativo fornece quadros de tela brutos.

AoqAudioVolume

Campo Tipo Descrição
éFala booleano Se a fala foi detectada.
volume número Volume instantâneo suavizado, de 0 a 255.

AoqAudioVolumeIndicaçãoConfig

Campo Tipo Padrão Descrição
relatórioDiscurso booleano falso Seja para detectar fala.
intervalo número 0 Intervalo de retorno de chamada em milissegundos. Valores de 0 ou menos desabilitam retornos de chamada; valores entre 0 e 10 usam 10.
suave número 3 Fator de suavização, de 0 a 10. Valores mais altos produzem resultados mais suaves.

Modo AoqTrack

Valor enum Valor Descrição
AoqTrackModeSegmento 0 Modo segmento: entrega dados em segmentos semânticos, como frases. Aplica-se apenas ao áudio downstream.
AoqTrackModeStream 1 Modo Stream: fornece dados continuamente. Aplica-se apenas ao áudio downstream.

Tipos gerais

AoqCreateConfig

Campo Tipo Padrão Descrição
trabalhoDir corda "" Diretório de trabalho do SDK
habilitarDumpÁudio booleano falso Habilitar despejo de áudio bruto (para depuração)
extras corda "" String de parâmetros extras
maxEncodedVideoFrameBytes número 190×1024 Tamanho máximo do quadro codificado em bytes. Aplica-se apenas ao codificador JPEG interno do SDK.
enableDropOversizedVideoFrame booleano falso Para o codificador JPEG interno do SDK, é necessário descartar um quadro que permanece superdimensionado com a qualidade mais baixa.

Ao contrário do Android, AoqCreateConfig no HarmonyOS não inclui isBTScoMode.

AoqConnectConfig

subscribeTracks não deve incluir AoqTrackTypeScreen; caso contrário, connect retorna AoqECUnSupport sem iniciar uma conexão. setRemoteView também retorna AoqECUnSupport para tela.

Campo Tipo Padrão Descrição
ficha corda "" Token de autenticação
sid corda "" ID da sessão
certificadoImpressão digital corda "" Impressão digital do certificado do servidor
pontos finais de retransmissão AoqRelayEndpoint[] [] Lista de terminais de retransmissão
espaço de trabalhoIdHash corda "" Hash de ID do espaço de trabalho
publicar Trilhas AoqTrackParam[] [] Faixas locais para publicar
inscrever-seFaixas AoqTrackParam[] [] Faixas remotas para assinar

AoqRelayEndpoint

Campo Tipo Descrição
ponto final corda Nome de host ou IP do servidor de retransmissão
porto número Porta do servidor de retransmissão
índice de rota número Índice de rota. Padrão: -1.
tcpPort número Padrão: 0. Porta substituta TCP. Um valor 0 usa a porta padrão do SDK, 443.

AoqTrackParam

Campo Tipo Descrição
trackType AoqTrackType Tipo de trilha
modo de trilha Modo AoqTrack Padrão: AoqTrackModeSegment. Aplica-se apenas ao áudio downstream.

AoqErrorCode

Valor enum Valor Descrição
AoqECOK 0 Sucesso
AoqECParamInválido 1 Parâmetro inválido
AoqECStateInválido 2 Estado inválido
AoqECUnSupport 3 Não suportado
AoqECÁudio 100 Erro genérico de áudio
AoqECAudioExternalBufferFull 110 Buffer de áudio externo cheio
AoqECAudioDispositivo 120 Erro genérico do dispositivo de áudio
AoqECAudioDeviceRecordingAuthFailed 121 Permissão de gravação não concedida
AoqECAudioDeviceRecordingOcupado 122 Dispositivo de gravação em uso
AoqECAudioDeviceRecordingBackgroundIniciar 123 Falha ao iniciar a gravação em segundo plano
AoqECAudioDeviceRecordingStartFail 124 Falha no início da gravação
AoqECAudioDevicePlayoutOcupado 125 Dispositivo de reprodução em uso
AoqECAudioDevicePlayoutBackgroundStart 126 Falha ao iniciar a reprodução em segundo plano
AoqECAudioDevicePlayoutStartFail 127 Falha no início da reprodução
AoqECAudioDeviceFone de ouvidoRequerVoipMode 128 Fone de ouvido requer modo VoIP
AoqECVídeo 200 Erro genérico de vídeo
AoqECVideoExternalBufferFull 210 Buffer de vídeo externo cheio
AoqECVideoExternalCaptureNotEnabled 211 Captura de vídeo externa não habilitada
AoqECVideoExternalEncoderNotEnabled 212 Codificador de vídeo externo não ativado
AoqECVideoDispositivo 220 Erro genérico do dispositivo de vídeo
AoqECVideoDeviceCameraOpenFail 221 Falha ao abrir a câmera
AoqECVideoDeviceCameraAuthFalha 222 Permissão de câmera não concedida
AoqECVideoDispositivoCâmeraOcupado 223 Câmera em uso
AoqECVideoDeviceCameraRunningError 224 Erro de tempo de execução da câmera
AoqECVideoCodec 230 Erro genérico do 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 renderização de vídeo
AoqECScreen 300 Erro geral de compartilhamento de tela
AoqECScreenAuthFailed 310 Permissão de compartilhamento de tela negada
AoqECScreenStartFailed 311 Falha ao iniciar o compartilhamento de tela

AoqWarningCode

Valor enum Valor Descrição
AoqWCOK 0 Nenhum aviso
AoqWCAudio 100 Aviso genérico de áudio
AoqWCAudioUivo 101 Uivo de áudio detectado
AoqWCAudioDispositivo 120 Aviso genérico do dispositivo de áudio
AoqWCAudioDeviceMicEnumerateError 121 Erro de enumeração de microfone
AoqWCAudioDeviceMicStartTimeout 122 Tempo limite de início do microfone
AoqWCAudioDeviceRecordingError 123 Erro de gravação
AoqWCAudioDeviceSpeakerEnumerateError 124 Erro de enumeração de alto-falantes
AoqWCAudioDeviceSpeakerStartTimeout 125 Tempo limite de início do alto-falante
AoqWCAudioDevicePlayoutError 126 Erro de reprodução
AoqWCVídeo 200 Aviso genérico de vídeo
AoqWCVideoCameraEnumerateError 201 Erro de enumeração de câmera
AoqWCVideoEncoderSwitched 202 Codificador de vídeo comutado
AoqWCVideoRenderDowngrade 203 Renderização de vídeo rebaixada

AoqTrackType

Valor enum Valor Descrição
AoqTrackTypeÁudio 0 Faixa de áudio
AoqTrackTypeVídeo 1 Faixa de vídeo
AoqTrackTypeData 2 Faixa de mensagens de dados
AoqTrackTypeScreen 3 Faixa de compartilhamento de tela. Somente uplink.

AoqConnectionStatus

Valor enum Valor Descrição
AoqConnectionStatusDisconnected 0 Desconectado
AoqConnectionStatusConectando 1 Conectando
AoqConnectionStatusConectado 2 Conectado
AoqConnectionStatusFalha 3 Falha na conexão

AoqEncoderType / AoqMirrorMode / AoqOrientationMode

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

Tipos de áudio

AoqAudioCaptureConfig

Campo Tipo Padrão Descrição
éExterno booleano falso verdadeiro: use entrada de áudio externa
isVoipMode booleano falso verdadeiro: habilite o modo VoIP (hardware AEC)
canal número 1 Contagem de canais: 1 ou 2

AoqAudioPlaybackConfig

Campo Tipo Padrão Descrição
isVoipMode booleano falso verdadeiro: habilita o modo VoIP (hardware AEC); first-write-wins entre configuração de captura e reprodução
isDefaultSpeaker booleano verdade verdadeiro: padrão para alto-falante; falso: padrão para fone de ouvido
éExterno booleano falso verdadeiro: use saída de áudio externa
canal número 1 Contagem de canais: 1 ou 2

AoqAudioCodecConfig

Campo Tipo Padrão Descrição
trackType AoqTrackType AoqTrackTypeÁudio Trilha alvo
tipo de codec AoqEncoderType AoqEncoderTypeAudioOpus Formato de codec
taxa de amostra número 48.000 Taxa de amostragem (Hz)
canal número 1 Contagem de canais
taxa de bits número 32.000 Taxa de bits (bps)

Tipos de vídeo

AoqVideoCaptureConfig

Campo Tipo Padrão Descrição
largura número 1280 Largura de captura; ignorado quando isExternal=true
altura número 720 Altura de captura
FPS número 15 Taxa de quadros de captura
éExterno booleano falso verdadeiro: não abra a câmera; fornecer quadros via pushExternalVideoCapturedFrame
direção da câmera AoqCameraDireção Frente Direção da câmera

AoqVideoCodecConfig

Campo Tipo Padrão Descrição
trackType AoqTrackType AoqTrackTypeVídeo Trilha alvo
tipo de codec AoqEncoderType AoqEncoderTypeVideoH264 Formato de codec
largura número 540 Largura de codificação
altura número 960 Altura de codificação
FPS número 5 Taxa de quadros
taxa de bits número 500000 Taxa de bits (bps)
minTaxa de bits número 128.000 Taxa de bits mínima (bps)
keyframeInterval número 2 Intervalo de quadro-chave (segundos)
modo espelho AoqMirrorMode Desativado Modo espelho
modo de orientação AoqOrientationMode Automóvel Orientação de vídeo
éExterno booleano falso true: o SDK ignora a recodificação

####AoqVideoCanvas

Campo Tipo Padrão Descrição
ver Objeto \ nulo nulo
modo de renderização AoqRenderMode AoqRenderModeAuto Modo de exibição

####AoqVideoPixelFormat

Valor enum 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
formato AoqVideoPixelFormat Formato de pixels
largura número Largura (pixels)
altura número Altura (pixels)
dataPtr ArrayBuffer \ Uint8Array \
tamanho dos dados número Tamanho dos dados compactados (bytes)
dadosY / dadosU / dadosV ArrayBuffer \ Uint8Array \
passadaY / passadaU / passadaV número Passo plano
carimbo de data / hora número 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)
dados ArrayBuffer \ Uint8Array
largura número Largura
altura número Altura
carimbo de data / hora número Carimbo de data/hora (ms)

Arquivo de áudio e tipos de stream externo

AoqAudioFileMixConfig

Campo Tipo Padrão Descrição
nome do arquivo corda "" Nome do arquivo (incluindo caminho)
ciclos número -1 Contagem de loops; -1 significa loop indefinidamente
startPosMs número 0 Posição inicial de reprodução (ms)
publicarVolume número 100 Volume de publicação [0, 100]
volume de reprodução número 100 Volume de reprodução local [0, 100]

AoqAudioExternalStreamConfig

Campo Tipo Padrão Descrição
trackType AoqTrackType AoqTrackTypeÁudio Tipo de trilha
tipo de codec AoqEncoderType AoqEncoderTypeAudioPCM Formato de áudio
canais número 1 Contagem de canais
taxa de amostra número 48.000 Taxa de amostragem (Hz)
volume de reprodução número 100 Volume de reprodução [0, 100]
publicarVolume número 100 Volume de publicação [0, 100]
maxBufferDuration número 1000 Duração máxima da memória intermédia (ms)
habilitar3A booleano falso Se deve aplicar o processamento 3A ao PCM de entrada

AoqAudioFrameData

Campo Tipo Descrição
dataPtr ArrayBuffer \ Uint8Array \
tamanho dos dados número Tamanho dos dados PCM (bytes)
numOfSamples número Contagem de amostras (mono)
bytesPerSample número Bytes por amostra
numOfCanais número Contagem de canais
amostrasPerSec número Taxa de amostragem
pushSequência número Número de sequência de envio PCM
carimbo de data / hora número Carimbo de data/hora
autoGenMute booleano verdadeiro: estes são dados de silêncio gerados pelo SDK

Tipos de configuração do observador

AoqAudioObserverConfig

Campo Tipo Padrão Descrição
taxa de amostra número 48.000 Taxa de amostragem de retorno de chamada
canais número 1 Contagem de canais de retorno de chamada
modo AoqAudioObserverMode Somente leitura Modo de leitura/gravação

AoqVideoObserverConfig

Campo Tipo Padrão Descrição
formato AoqVideoPixelFormat I420 Formato de pixel de retorno de chamada
alinhamento AoqVideoObserverAlinhamento Padrão Alinhamento de largura
modo AoqVideoObserverMode Somente leitura Modo de leitura/gravação
espelhoAplicado booleano falso Se deve aplicar espelhamento
trackType AoqTrackType AoqTrackTypeVídeo Trilha de vídeo para observar. Suporta apenas vídeo e tela.

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
áudioSubscribeStats AoqAudioSubscribeStats[] Estatísticas de assinatura de áudio
vídeoSubscribeStats AoqVideoSubscribeStats[] Estatísticas de assinatura de vídeo
dataMsgSubscribeStats AoqDataMsgSubscribeStats[] Estatísticas de assinatura de mensagens de dados
estatísticas da rede AoqNetworkStats \ nulo

Subtipos de estatísticas

AoqAudioPublishStats: trackType / taxa de bits / bytes / encodeVolume

AoqVideoPublishStats: trackType / taxa de bits / bytes / encodeFps

AoqAudioSubscribeStats: trackType / taxa de bits / bytes / playVolume

AoqVideoSubscribeStats: trackType / taxa de bits / bytes / decodeFps / renderFps

AoqDataMsgPublishStats/AoqDataMsgSubscribeStats: trackType/taxa de bits/bytes

AoqNetworkStats: sendBitrate / sendBytes / recvBitrate / recvBytes / loss / rtt

Principais diferenças do Android SDK

Categoria Android HarmonyOS
Linguagem de implementação Java ArkTS (.ets), ponte NAPI para C++
Tipo de valor de retorno int/longo/booleano número / booleano
retorno createEngine @NonNull AoqClientEngine AoqClientEngine \
Contexto createEngine android.content.Context common.Context (UIAbility/Página)
Formulário de ouvinte Classe abstrata com métodos vazios padrão Interface TS; todos os retornos de chamada são opcionais (?)
Formulário de observador de quadro Interface com métodos padrão Interface TS; todos os retornos de chamada são opcionais (?)
AoqCreateConfig Inclui isBTScoMode Não inclui isBTScoMode
AoqAudioPlaybackConfig Não isVoipMode Inclui isVoipMode; first-write-wins entre captura e reprodução
onAudioDeviceFocusAlterado Fornecido Não fornecido (sem abstração de foco de áudio)
Visualização de renderização de vídeo Visualizar (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 texturaId/transformMatrix/eglContext Não incluído
Recipiente de dados de quadro byte[] /ByteBuffer ArrayBuffer/Uint8Array
Resposta do observador Write-back I420 suportado Atualmente equivalente a somente leitura; write-back planejado para lançamento futuro
Segurança no novo registo do observador Depende de componentes internos do SDK Proteção UAF usando padrão de lápide
Monitoramento de dispositivos Implícito na camada Java AoqDeviceMonitor (interno) inicia automaticamente
Espaço para nome do código de erro AoqErrorCodeXxx AoqECXxx (por exemplo, AoqECOK, AoqECParamInvalid)

Notas de arquitetura

  1. AoqXComponentController: Estende XComponentController e substituições onSurfaceCreated, onSurfaceChangede onSurfaceDestroyed. Crie uma instância, anexe-a a um XComponent, e passe-o como canvas.view ao ligar 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 nivelados em parâmetros individuais na camada de implementação.

  3. Monitoramento do dispositivo (interno): AoqDeviceMonitor inicia automaticamente após createEngine e encaminha o estado da rede e o estado de primeiro/segundo plano do aplicativo para o mecanismo C++.

  4. Proteção UAF do observador: O novo registro segue uma sequência de três etapas: cortar a referência antiga em C++ -> enviar o observador antigo para a lápide -> apontar para o novo observador.

  5. Semântica da carga útil do quadro: Uint8Array buffers em retornos de chamada de quadro de áudio/vídeo são cópias da memória nativa. O write-back não é suportado em P1; cópia zero está planejada para P2.