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:
- Enums:
AoqTrackMode,AoqScreenCaptureStateCode. - Interfaces:
AoqAudioVolumeIndicationConfig,AoqAudioVolume,AoqScreenCaptureConfig,AoqScreenCaptureState.
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
-
AoqXComponentController: Estende
XComponentControllere substituiçõesonSurfaceCreated,onSurfaceChangedeonSurfaceDestroyed. Crie uma instância, anexe-a a umXComponent, e passe-o comocanvas.viewao ligarsetLocalViewousetRemoteView. -
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. -
Monitoramento do dispositivo (interno):
AoqDeviceMonitorinicia automaticamente apóscreateEnginee encaminha o estado da rede e o estado de primeiro/segundo plano do aplicativo para o mecanismo C++. -
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.
-
Semântica da carga útil do quadro:
Uint8Arraybuffers 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.