SDK eletrônico
Referência da API Electron do SDK do cliente AOQ
Este tópico descreve as APIs TypeScript, eventos e tipos de dados do AOQ Client SDK for Electron. O SDK é compatível com macOS x64/arm64 e Windows x64 e requer Node.js 16 ou posterior.
Pacote aplicável: aoq-electron-sdk (npm). Plataformas suportadas: macOS (x64/arm64) e Windows x64. Node.js >= 16.
índice API
Entrada e ciclo de vida do motor
| API | Descrição |
|---|---|
| criarAoqClientEngine | Obtenha a instância do wrapper do mecanismo (um singleton inicializado lentamente em nível de módulo) |
| criarEngine | Crie a instância do mecanismo nativo |
| destruir | Destrua a instância do mecanismo |
| getVersão | Obtenha a 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) |
| pararAudioCapture | Feche o dispositivo de captura de áudio |
| muteAudioCapture | Ativar ou ativar captura de áudio |
| iniciarAudioPlayer | Inicie a renderização de áudio para reproduzir áudio remoto |
| pararAudioPlayer | Pare a renderização de áudio |
| pausaAudioPlayer | Pause a renderização de áudio, com suporte para fade-out |
| retomarAudioPlayer | Retomar a renderização de áudio, com suporte para fade-in |
| interromperAudioPlayer | Interromper a sessão de áudio atual |
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 |
| getScreenSourceList | Enumerar telas e janelas |
| iniciarScreenCapture | Iniciar captura de tela |
| pararScreenCapture | Pare a captura de tela |
Codec de vídeo e entrada externa
| API | Descrição |
|---|---|
| setVideoEncoderConfig | Definir parâmetros de codificação de vídeo |
| setVideoDecoderConfig | Definir parâmetros de decodificação de vídeo |
| pushExternalVideoCapturedFrame | Enviar um quadro de vídeo capturado externamente |
| pushExternalVideoEncodedFrame | Enviar um quadro de vídeo codificado externamente |
Controle de fluxo de mídia
| API | Descrição |
|---|---|
| ativarSendMediaStream | Habilitar ou desabilitar o envio de um fluxo de mídia local |
Reprodução de arquivo de áudio
| API | Descrição |
|---|---|
| startAudioFile | Comece a reproduzir um arquivo de áudio local no fluxo de publicação |
| 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 | Consultar a duração total do arquivo de áudio |
| getAudioFileCurrentPosition | Consultar a posição atual de reprodução do arquivo de áudio |
| setAudioFilePositionMillis | Defina a posição de reprodução do arquivo de áudio (busca) |
| setAudioFileVolume | Defina o volume do arquivo de áudio |
| getAudioFileVolume | Consultar 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 | Alimentar dados PCM de áudio externo |
| setAudioExternalStreamVolume | Definir o volume de um fluxo de áudio externo |
| getAudioExternalStreamVolume | Consultar o volume de um fluxo de áudio externo |
| clearAudioExternalStreamBuffer | Limpar o buffer de 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 | Habilitar ou desabilitar o observador de dados de quadro de áudio |
| ativarAudioFrameObserver | Ativar ou desativar o retorno de chamada do quadro de áudio em uma posição especificada |
Indicação de volume local
| API | Descrição |
|---|---|
| enableLocalAudioVolumeIndicação | Habilitar ou desabilitar o retorno de chamada de indicação de volume de captura local |
Retornos de chamada de quadro de vídeo
| API | Descrição |
|---|---|
| setVideoFrameObserver | Ativar ou desativar o observador de dados de quadro de vídeo |
| ativarVideoFrameObserver | Ativar ou desativar o retorno de chamada do quadro de vídeo em uma posição especificada |
Renderização de vídeo (YUVCanvasRenderer)
| API | Descrição |
|---|---|
| vincular | Vincular um elemento de tela |
| desvincular | Desvincule e limpe a imagem |
| vinculado | Consultar se uma vinculação está atualmente estabelecida |
| drawFrame | Desenhe um quadro de dados de vídeo I420 |
Eventos do mecanismo (IAoqEngineEvents)
| Evento | Descrição |
|---|---|
| onError | Retorno de chamada de erro do mecanismo |
| emAviso | Retorno de chamada de aviso do motor |
| onConnectionStatusAlterar | Retorno de chamada de alteração de status de conexão |
| onStats | Retorno de chamada de estatísticas do mecanismo |
| onAudioDeviceStateChanged | Retorno de chamada de mudança de status de operação do dispositivo de áudio |
| onAudioDeviceRouteChanged | Retorno de chamada de mudança de rota de saída de áudio |
| onAudioFileState | Retorno de chamada de status de reprodução de arquivo de áudio |
| onLocalAudioVolumeIndicação | Retorno de chamada de indicação de volume de captura local |
| onVideoDeviceStateChanged | Retorno de chamada de mudança de status de operação do dispositivo de vídeo |
| onDataMsg | Retorno de chamada para uma mensagem de dados recebida em tempo real |
| onCapturedAudioFrame | Retorno de chamada para dados de áudio brutos capturados |
| onProcessCapturedAudioFrame | Retorno de chamada para dados de áudio após processamento 3A |
| onPublishAudioFrame | Retorno de chamada para publicação de dados de áudio |
| onPlaybackAudioFrame | Retorno de chamada para reprodução de dados de áudio |
| onCapturedVideoFrame | Retorno de chamada para dados de vídeo brutos locais após a captura |
| onPreEncodeVideoFrame | Retorno de chamada para dados de vídeo brutos locais antes da codificação |
| onRemoteVideoFrame | Retorno de chamada para dados de vídeo remotos após a decodificação e antes da renderização |
Detalhes da API
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.
Retorna 0 em caso de sucesso ou um valor diferente de zero em caso de falha.
Ligar getScreenSourceList para enumerar telas e janelas e depois passar o selecionado sourceId e sourceType na configuração de captura.
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.
getScreenSourceList
getScreenSourceList(): AoqScreenSourceInfo[]
Retorna uma matriz de fontes de tela. Disponível apenas no Electron macOS e Windows.
Entrada e ciclo de vida do motor
criarAoqClientEngine
Obtém a instância do wrapper do mecanismo. É um singleton inicializado lentamente em nível de módulo. Chamar esse método novamente retorna a mesma instância, que se alinha com a semântica singleton do mecanismo nativo. É também a exportação padrão do pacote.
import createAoqClientEngine from 'aoq-electron-sdk';
export function createAoqClientEngine(): IAoqClientEngine
Retorna: O IAoqClientEngine instância do motor. Observe que este método cria apenas a camada wrapper JS e a ponte nativa. Para realmente criar o mecanismo, você também deve chamar createEngine().
criarEngine
Cria a instância do mecanismo nativo. O mecanismo é um singleton global, portanto, chamar esse método novamente retorna sucesso diretamente.
createEngine(config: AoqCreateConfig): number
| Parâmetro | Tipo | Descrição |
|---|---|---|
| configuração | AoqCreateConfig | Configuração de criação do motor |
Retorna: 0 no sucesso; -1 indica que a criação falhou ou que o parâmetro não é JSON válido.
No Windows, createEngine() anexa uma bomba de mensagem Win32 de 16 ms ao loop libuv do thread JS atual (necessário para captura da câmera) e o interrompe destroy(). Portanto, não bloqueie de forma síncrona o thread JS por muito tempo após createEngine().
destruir
Destrói a instância do mecanismo e libera todos os recursos.
destroy(): number
Retorna: 0 indica sucesso; não-0 indica uma falha. Se o mecanismo não for criado, 0 é retornado.
obter versão
Obtém a versão atual do SDK. Você não precisa ligar createEngine() primeiro.
getVersion(): string
Retorna: A string da versão, como "1.2.0". Uma string vazia será retornada se a versão não puder ser obtida.
conectar
Conecta-se ao servidor de retransmissão. O servidor de aplicação obtém parâmetros de conexão AOQ temporários com base no protocolo em uso e os envia ao cliente.
connect(config: AoqConnectConfig): number
| Parâmetro | Tipo | Descrição |
|---|---|---|
| configuração | AoqConnectConfig | Configuração de conexão, que inclui o token, o SID, a lista de pontos de acesso de retransmissão e as listas de faixas de publicação e assinatura |
Retorna: 0 indica que a chamada é despachada e executada de forma assíncrona; não-0 indica que a validação do parâmetro falhou. O resultado da conexão é notificado pelo onConnectionStatusChange evento.
desconectar
Desconecta do servidor e libera os recursos associados à conexão.
disconnect(): number
Retorna: 0 indica que a chamada é despachada e executada de forma assíncrona; não-0 indica uma falha.
Gerenciamento de dispositivos de áudio
iniciar Captura de Áudio
startAudioCapture(config: AoqAudioCaptureConfig): number
Abre o dispositivo de captura de áudio (microfone). A primeira captura aciona uma solicitação de autorização do sistema. No macOS, você deve declarar NSMicrophoneUsageDescription no Info.plist arquivo do aplicativo.
pararCaptura de Áudio
stopAudioCapture(): number
Fecha o dispositivo de captura de áudio.
muteAudioCapture
muteAudioCapture(mute: boolean): number
Ativa ou desativa a captura de áudio. mute=true mudos, e false ativa o som.
iniciarAudioPlayer
startAudioPlayer(config: AoqAudioPlaybackConfig): number
Inicia a renderização de áudio para reproduzir áudio remoto.
stopAudioPlayer / pauseAudioPlayer / resumeAudioPlayer
stopAudioPlayer(): number
pauseAudioPlayer(fadeMs: number): number
resumeAudioPlayer(fadeMs: number): number
fadeMs: a duração do fade-out ou fade-in, em milissegundos. 0 indica execução imediata.
interromperAudioPlayer
interruptAudioPlayer(trackType: AoqTrackType, fadeMs: number): number
Interrompe a sessão de áudio atual e descarta os dados de downlink armazenados em buffer da sessão atual.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| trackType | AoqTrackType | Tipo de trilha |
| fadeMs | número | Duração do fade-out, em milissegundos |
Configuração do codec de áudio
setAudioEncoderConfig(config: AoqAudioCodecConfig): number
setAudioDecoderConfig(config: AoqAudioCodecConfig): number
Recomendamos que você chame esse método antes connect(). Para usar o Opus (AoqEncoderTypeAudioOpus), o plug-in PluginOpus deverá ser integrado ao SDK ou distribuído com o pacote.
Gerenciamento de dispositivos de vídeo
startVideoCapture(config: AoqVideoCaptureConfig): number
stopVideoCapture(): number
Abre ou fecha o dispositivo de captura de vídeo. No macOS, você deve declarar NSCameraUsageDescription em Info.plist. Quando config.isExternal=true, a câmera não é aberta e os quadros são entregues por pushExternalVideoCapturedFrame.
O renderizador Electron é um ambiente Chromium e não pode incorporar visualizações nativas, portanto setLocalView / setRemoteView / switchCamera não são fornecidos. Para visualização, use o observador de quadros com YUVCanvasRenderer (consulte Renderização de vídeo).
Codec de vídeo e entrada externa
setVideoEncoderConfig(config: AoqVideoCodecConfig): number
setVideoDecoderConfig(config: AoqVideoCodecConfig): number
pushExternalVideoCapturedFrame(meta: AoqExternalVideoFrameMeta, buffer: Uint8Array): number
pushExternalVideoEncodedFrame(meta: AoqExternalVideoEncodedFrameMeta, buffer: Uint8Array): number
| Parâmetro | Tipo | Descrição |
|---|---|---|
| meta | AoqExternalVideoFrameMeta / AoqExternalVideoEncodedFrameMeta | Metadados do quadro (dimensões, formato e carimbo de data/hora) |
| buffer | Uint8Array | Dados de quadro (dados de pixel ou dados codificados) |
Notas:
pushExternalVideoCapturedFrameconsome quadros de vídeo depoisstartVideoCapture({ isExternal: true })e quadros de tela depoisstartScreenCapture({ isExternal: true }). Ele retorna211quando a captura externa não está habilitada e210quando o buffer está cheio.AoqVideoPixelFormatI420e formatos compactados (NV12/NV21/BGRA/RGBA) são suportados. Para I420,bufferdeve utilizar um layout compacto (passada = largura), com os planos Y/U/V concatenados em ordem.pushExternalVideoEncodedFramerequersetVideoEncoderConfig({ isExternal: true })primeiro. Ele retorna212quando não está habilitado. Atualmente, apenas JPEG é compatível.- Quando
meta.timeStampé0, o SDK o preenche com a hora local.
Controle de fluxo de mídia
enableSendMediaStream(trackType: AoqTrackType, enable: boolean): number
trackType suporta AoqTrackTypeAudio, AoqTrackTypeVideoe AoqTrackTypeScreen.
Especifica se um fluxo de mídia local específico deve ser enviado. Recomendamos que você ligue enableSendMediaStream(trackType, false) após a inicialização e habilite o envio somente após onConnectionStatusChange relatórios AoqConnectionStatusConnected.
Reprodução de arquivo de áudio
startAudioFile(config: AoqAudioFileMixConfig): number
stopAudioFile(fileId: string): number
pauseAudioFile(fileId: string): number
resumeAudioFile(fileId: string): number
getAudioFileDuration(fileId: string): number
getAudioFileCurrentPosition(fileId: string): number
setAudioFilePositionMillis(fileId: string, positionMs: number): number
setAudioFileVolume(fileId: string, type: AoqAudioStreamDirection, volume: number): number
getAudioFileVolume(fileId: string, type: AoqAudioStreamDirection): number
| Parâmetro | Tipo | Descrição |
|---|---|---|
| configuração | AoqAudioFileMixConfig | Configuração de mixagem de arquivos. fileId é transportado como um campo de configuração. |
| ID do arquivo | corda | Identificador de arquivo, que é definido pelo chamador. As chamadas de API subsequentes usam-no para localizar o arquivo. |
| posiçãoMs | número | Posição alvo de reprodução, em milissegundos |
| tipo | AoqAudioStreamDireção | Volume de publicação ou volume de reprodução local |
| volume | número | Volume. Valores válidos: 0 a 100. |
Descrição do valor de retorno:
getAudioFileDuration/getAudioFileCurrentPositionretorne o número de milissegundos;getAudioFileVolumeretorna o volume atual;- Os getters acima retornam
-1quando o mecanismo não é criado.
As alterações no estado de reprodução são relatadas através do onAudioFileState evento.
Fluxos de áudio externos
addAudioExternalStream(config: AoqAudioExternalStreamConfig): number
removeAudioExternalStream(streamId: string): number
pushAudioExternalStreamData(meta: AoqAudioExternalFrameMeta, buffer: Uint8Array): number
setAudioExternalStreamVolume(streamId: string, type: AoqAudioStreamDirection, volume: number): number
getAudioExternalStreamVolume(streamId: string, type: AoqAudioStreamDirection): number
clearAudioExternalStreamBuffer(streamId: string, fadeoutMs: number): number
| Parâmetro | Tipo | Descrição |
|---|---|---|
| configuração | AoqAudioExternalStreamConfig | Configuração de fluxo de áudio externo. streamId é transportado como um campo de configuração. |
| ID de fluxo | corda | Identificador de fluxo, que é definido pelo chamador |
| meta | AoqAudioExternalFrameMeta | Metadados do quadro PCM. streamId é transportado como um campo de metadados. |
| buffer | Uint8Array | Dados PCM |
| fadeoutMs | número | Duração do fade-out quando o buffer é limpo, em milissegundos |
Notas:
pushAudioExternalStreamDataretorna110(buffer de áudio externo está cheio) quando a duração do buffer excedemaxBufferDuration.getAudioExternalStreamVolumeretorna o volume atual. Ele retorna-1quando o mecanismo não é criado.clearAudioExternalStreamBuffernão tem valor de retorno no lado nativo e sempre retorna0em uma chamada bem-sucedida.
Mensagens em tempo real
sendDataMsg(data: Uint8Array | string): number
Envia uma mensagem de dados em tempo real. Se você passar um string, ele é codificado em UTF-8 em um Buffer internamente antes de ser enviado. As mensagens do par são relatadas através do onDataMsg retorno de chamada do evento.
Retornos de chamada de quadro de áudio
setAudioFrameObserver(enable: boolean): number
enableAudioFrameObserver(params: AoqAudioObserverParams): number
| Parâmetro | Tipo | Descrição |
|---|---|---|
| habilitar | booleano | true registra o observador de quadro de áudio integrado; false cancela o registro |
| parâmetros | AoqAudioObserverParams | Especifique a posição do retorno de chamada, o estado ativado/desativado e o formato do retorno de chamada |
Uso: Primeiro, ligue setAudioFrameObserver(true) para registrar o observador. Então ligue enableAudioFrameObserver para cada posição que você precisa. Os dados são entregues por meio dos eventos correspondentes.
engine.setAudioFrameObserver(true)
engine.enableAudioFrameObserver({
enabled: true,
audioSource: AoqAudioSource.AoqAudioSourceCaptured,
sampleRate: 48000,
channels: 1
})
engine.on('onCapturedAudioFrame', (frame) => { /* frame.buffer contains PCM data */ })
O observador de quadro no lado do Electron suporta apenas o modo somente leitura e não suporta a gravação de dados do quadro no retorno de chamada (o lado nativo é fixado em ReadOnly).
Indicação de volume local
enableLocalAudioVolumeIndication(config: AoqAudioVolumeIndicationConfig): number
Habilita ou desabilita a indicação do volume de captura local. Se config.interval<= 0, o retorno de chamada será desativado. Depois de habilitado, onLocalAudioVolumeIndication é acionado no intervalo especificado por config.interval. Você deve chamar esse método depois startAudioCapture() para obter dados de volume.
Retornos de chamada de quadro de vídeo
setVideoFrameObserver(enable: boolean): number
enableVideoFrameObserver(params: AoqVideoObserverParams): number
| Parâmetro | Tipo | Descrição |
|---|---|---|
| habilitar | booleano | true registra o observador de quadro de vídeo integrado; false cancela o registro |
| parâmetros | AoqVideoObserverParams | Especifique a posição do retorno de chamada, o estado ativado/desativado, o formato do pixel e a política de alinhamento |
Os dados de retorno de chamada são entregues como AoqVideoFrameEvent através onCapturedVideoFrame / onPreEncodeVideoFrame / onRemoteVideoFrame. Para I420, buffer são os planos Y/U/V concatenados com base na passada. Outros formatos compactados são transmitidos como dados originais. O modo somente leitura também é suportado.
Renderização de vídeo (YUVCanvasRenderer)
O renderizador de software integrado ao SDK. Ele assume as responsabilidades de visualização de setLocalView / setRemoteView em plataformas móveis.
import { YUVCanvasRenderer } from 'aoq-electron-sdk';
class YUVCanvasRenderer {
bind(canvas: HTMLCanvasElement): void
unbind(): void
get bound(): boolean
drawFrame(frame: AoqVideoFrameEvent): void
}
| API | Descrição |
|---|---|
| vincular | Encadernar uma tela (a encadernação substitui novamente a pia) |
| desvincular | Desvincule e limpe a imagem |
| vinculado | Especifica se uma ligação foi estabelecida |
| drawFrame | Desenhe um quadro; apenas I420 é suportado e o método retorna silenciosamente para formatos não I420 ou quando o tamanho ou comprimento do buffer é insuficiente |
const renderer = new YUVCanvasRenderer()
renderer.bind(document.getElementById('preview'))
engine.setVideoFrameObserver(true)
engine.enableVideoFrameObserver({
enabled: true,
videoSource: AoqVideoSource.AoqVideoSourceCaptured,
format: AoqVideoPixelFormat.AoqVideoPixelFormatI420
})
engine.on('onCapturedVideoFrame', (frame) => renderer.drawFrame(frame))
Para o modo de preenchimento de renderização (como esticar ou cortar), use o CSS object-fit propriedade para controlar a tela.
Eventos do mecanismo (IAoqEngineEvents)
O motor herda de EventEmitter<IAoqEngineEvents>. Os eventos são a saída unificada para todas as notificações assíncronas do SDK e mapeiam um a um para o nativo AoqEngineEventListener retornos de chamada. Você não precisa registrar os eventos que não lhe interessam.
engine.on('onError', (code, message) => {})
engine.off('onError', handler)
engine.once('onStats', (stats) => {})
engine.removeAllListeners()
onError
onError: (code: number, message: string) => void
Retorno de chamada de erro do mecanismo. code corresponde a um valor AoqErrorCode (consulte AoqErrorCode).
emAviso
onWarning: (code: number, message: string) => void
Retorno de chamada de aviso do motor. code corresponde a um valor AoqWarningCode (consulte AoqWarningCode).
onConnectionStatusChange
onConnectionStatusChange: (status: AoqConnectionStatus) => void
Retorno de chamada de alteração do status da conexão. Transições de estado: Desconectado -> Conectando -> Conectado/Falha -> Desconectado.
nas estatísticas
onStats: (stats: AoqStats) => void
Retorno de chamada de estatísticas do mecanismo. O SDK relata periodicamente estatísticas de publicação e assinatura de áudio e vídeo e estatísticas de rede, que você pode usar para monitorar a qualidade da chamada e o status da rede em tempo real e para diagnosticar problemas de áudio e vídeo.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| estatísticas | AoqEstatísticas | Publicação e assinatura de estatísticas e estatísticas de rede para mensagens de áudio, vídeo e dados |
onAudioDeviceStateChanged
onAudioDeviceStateChanged: (state: AoqAudioDeviceState) => void
Retorno de chamada para captura de dispositivo de áudio e alterações de status de operação de reprodução.
onAudioDeviceRouteAlterado
onAudioDeviceRouteChanged: (routeType: number) => void
Retorno de chamada de alteração da rota de saída de áudio. routeType corresponde a um valor AoqAudioDeviceRouteType (consulte AoqAudioDeviceRouteType).
onAudioFileState
onAudioFileState: (state: AoqAudioFileState) => void
Retorno de chamada para status de reprodução de arquivo de áudio.
onLocalAudioVolumeIndicação
onLocalAudioVolumeIndication: (volume: AoqAudioVolume) => void
Retorno de chamada de indicação de volume de captura local. Para habilitá-lo, ligue enableLocalAudioVolumeIndication.
onVideoDeviceStateChanged
onVideoDeviceStateChanged: (state: AoqVideoDeviceState) => void
Retorno de chamada para alterações no status da operação de captura do dispositivo de vídeo.
onDataMsg
onDataMsg: (data: Uint8Array) => void
Retorno de chamada para uma mensagem de dados em tempo real recebida. data é um Buffer copiado no lado nativo e pode ser mantido de forma assíncrona com segurança. Para mensagens de texto, use Buffer.from(data).toString() para converter os dados em uma string.
Eventos de quadro de áudio
onCapturedAudioFrame: (frame: AoqAudioFrameEvent) => void /* raw captured data */
onProcessCapturedAudioFrame: (frame: AoqAudioFrameEvent) => void /* data after 3A processing */
onPublishAudioFrame: (frame: AoqAudioFrameEvent) => void /* publishing data */
onPlaybackAudioFrame: (frame: AoqAudioFrameEvent) => void /* playback data */
Você deve primeiro ligar setAudioFrameObserver(true) e enableAudioFrameObserver para habilitá-lo.
Eventos de quadro de vídeo
onCapturedVideoFrame: (frame: AoqVideoFrameEvent) => void /* after capture, before preprocessing */
onPreEncodeVideoFrame: (frame: AoqVideoFrameEvent) => void /* before encoding, after preprocessing */
onRemoteVideoFrame: (frame: AoqVideoFrameEvent) => void /* remote, after decoding and before rendering */
Você deve primeiro ligar setVideoFrameObserver(true) e enableVideoFrameObserver para habilitá-lo. Os eventos de quadro são somente leitura. Modificações para buffer no retorno de chamada não são gravados no SDK.
Evite computação pesada em retornos de chamada de eventos: retornos de chamada nativos são despachados para o thread principal JS por meio de um thread assíncrono, e operações demoradas em eventos de quadro de alta frequência causam um backlog.
Tipos de dados e enumerações
Todos os tipos são exportados da raiz do pacote, então você pode usar diretamente import { ... } from 'aoq-electron-sdk'. As enumerações são TypeScript enum tipos e estão disponíveis em tempo de execução, enquanto interfaces (interface) são apenas restrições de tipo. Se um campo marcado como opcional não for especificado, o valor padrão da tabela será usado.
AoqScreenSourceInfo
| Campo | Tipo | Descrição |
|---|---|---|
| fonteTipo | AoqScreenShareSourceType | Tipo de fonte |
| ID de origem | corda | ID da fonte; retornado como uma string para preservar a precisão int64. |
| origemNome | corda | Nome da fonte |
| fonteIsSelf | booleano | Se a janela pertence ao processo atual |
AoqScreenShareSourceType
| Valor enum | Valor | Descrição |
|---|---|---|
| AoqScreenShareSourceTypeDesktop | 0 | Área de trabalho inteira |
| AoqScreenShareSourceTypeWindow | 1 | Uma janela específica |
AoqScreenCaptureConfig
Todos os campos são opcionais. isExternal o padrão é falso.
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
| éExterno | booleano | falso | Se o aplicativo fornece quadros de tela brutos. |
| ID de origem | cadeia \ | número | — |
| fonteTipo | AoqScreenShareSourceType | — | Tipo de origem da tela. |
Tipos gerais
AoqCreateConfig
| Campo | Tipo | Obrigatório | Valor padrão | Descrição |
|---|---|---|---|---|
| trabalhoDir | corda | Não | "" | Diretório de trabalho do SDK (para logs e arquivos temporários) |
| habilitarDumpÁudio | booleano | Não | falso | Especifica se os dados de áudio devem ser salvos (para depuração) |
| extras | corda | Não | "" | Parâmetros estendidos (uma string JSON) |
O isBTScoMode O campo no Android é apenas para dispositivos móveis e não é fornecido pela Electron.
AoqConnectConfig
| Campo | Tipo | Obrigatório | Valor padrão | Descrição |
|---|---|---|---|---|
| ficha | corda | Sim | - | Token de autenticação de conexão |
| sid | corda | Sim | - | ID da sessão |
| certificadoImpressão digital | corda | Não | "" | Impressão digital do certificado do servidor |
| espaço de trabalhoIdHash | corda | Não | Nenhum | Hash de ID do espaço de trabalho. Uma string vazia equivale a não passar o parâmetro. |
| pontos finais de retransmissão | Matriz\ | |||
| Sim | - | Lista de pontos de acesso de retransmissão | ||
| publicar Trilhas | Matriz\ |
| Sim | - | Lista de faixas publicadas localmente |
| inscrever-seFaixas | Matriz
| Sim | - | Lista de faixas locais inscritas |
Ponto final AoqRelay
| Campo | Tipo | Obrigatório | Valor padrão | Descrição |
|---|---|---|---|---|
| índice de rota | número | Não | -1 | Índice de rota |
| ponto final | corda | Sim | - | Nome de domínio ou endereço IP do servidor de retransmissão |
| porto | número | Sim | - | Porta do servidor de retransmissão |
| tcpPort | número | Não | 0 | Porta de reserva TCP. Um valor 0 usa a porta padrão do SDK, 443. |
AoqTrackParam
| Campo | Tipo | Obrigatório | Valor padrão | Descrição |
|---|---|---|---|---|
| trackType | AoqTrackType | Sim | - | Tipo de trilha |
| modo de trilha | Modo AoqTrack | Não | AoqTrackModeSegmento | Modo de streaming ou não streaming. Efetivo apenas para downlink de áudio. |
Tipos de estatísticas
Estatísticas Aoq
Um resumo das estatísticas do motor, que é reportado periodicamente através onStats. Um campo de array é um array vazio quando não possui dados, e networkStats não é entregue quando não possui dados.
| Campo | Tipo | Descrição |
|---|---|---|
| audioPublishStats | Matriz\ |
| Publicação de estatísticas para áudio |
| videoPublishStats | Matriz
| Publicação de estatísticas para vídeo |
| dataMsgPublishStats | Matriz
| Publicação de estatísticas para mensagens de dados |
| áudioSubscribeStats | Matriz
| Assinando estatísticas para áudio |
| vídeoSubscribeStats | Matriz
| Inscrever estatísticas para vídeo |
| dataMsgSubscribeStats | Matriz
| Assinando estatísticas para mensagens de dados |
| estatísticas da rede | AoqNetworkStats | Estatísticas da rede |
AoqAudioPublishStats
| Campo | Tipo | Descrição |
|---|---|---|
| trackType | AoqTrackType | Tipo de trilha |
| taxa de bits | número | Taxa de bits, em bits/s |
| bytes | número | Bytes cumulativos enviados |
| codificarVolume | número | Volume de codificação do fluxo de publicação |
AoqAudioSubscribeStats
| Campo | Tipo | Descrição |
|---|---|---|
| trackType | AoqTrackType | Tipo de trilha |
| taxa de bits | número | Taxa de bits, em bits/s |
| bytes | número | Bytes acumulados recebidos |
| volume de reprodução | número | Volume de reprodução |
AoqVideoPublishStats
| Campo | Tipo | Descrição |
|---|---|---|
| trackType | AoqTrackType | Tipo de trilha |
| taxa de bits | número | Taxa de bits, em bits/s |
| bytes | número | Bytes cumulativos enviados |
| codificarFps | número | Taxa de quadros de codificação |
AoqVideoSubscribeStats
| Campo | Tipo | Descrição |
|---|---|---|
| trackType | AoqTrackType | Tipo de trilha |
| taxa de bits | número | Taxa de bits, em bits/s |
| bytes | número | Bytes acumulados recebidos |
| decodificarFps | número | Taxa de quadros de decodificação |
| renderFps | número | Taxa de quadros de renderização |
AoqDataMsgPublishStats/AoqDataMsgSubscribeStats
| Campo | Tipo | Descrição |
|---|---|---|
| trackType | AoqTrackType | Tipo de trilha |
| taxa de bits | número | Taxa de bits, em bits/s |
| bytes | número | Bytes cumulativos enviados e recebidos |
AoqNetworkStats
| Campo | Tipo | Descrição |
|---|---|---|
| enviarTaxa de bits | número | Taxa de bits de envio, em bit/s |
| enviarBytes | número | Bytes cumulativos enviados |
| taxa de bits recebida | número | Taxa de bits de recepção, em bit/s |
| recvBytes | número | Bytes acumulados recebidos |
| perda | número | Taxa de perda de pacotes, de 0 a 100 |
| rt | número | Latência de ida e volta, em ms |
Enumerações
AoqTrackType
| Valor enum | Valor | Descrição |
|---|---|---|
| AoqTrackTypeÁudio | 0 | Faixa de áudio |
| AoqTrackTypeVídeo | 1 | Faixa de vídeo |
| AoqTrackTypeData | 2 | Rastreamento de mensagens de dados |
| AoqTrackTypeScreen | 3 | Faixa de compartilhamento de tela. Somente uplink. |
Modo AoqTrack
| Valor enum | Valor | Descrição |
|---|---|---|
| AoqTrackModeSegmento | 0 | Segmentado: os dados são empacotados e entregues em segmentos semânticos, como uma frase. |
| AoqTrackModeStream | 1 | Streaming: os dados são entregues continuamente. |
AoqEncoderType
| Valor enum | Valor | Descrição |
|---|---|---|
| AoqEncoderTypeUnknown | 0 | Formato desconhecido |
| AoqEncoderTypeAudioPCM | 1 | Áudio PCM |
| AoqEncoderTypeAudioOpus | 2 | Audio Opus (baseado em plug-in; requer PluginOpus) |
| AoqEncoderTypeVideoH264 | 3 | Vídeo H.264 |
| AoqEncoderTypeVideoJpeg | 4 | Vídeo JPEG |
| AoqEncoderTypeDataText | 5 | Texto da mensagem |
AoqConnectionStatus
| Valor enum | Valor | Descrição |
|---|---|---|
| AoqConnectionStatusDisconnected | 0 | Desconectado |
| AoqConnectionStatusConectando | 1 | Conectando |
| AoqConnectionStatusConectado | 2 | Conectado |
| AoqConnectionStatusFalha | 3 | Falha na conexão |
Modo AoqMirror
| Valor enum | Valor | Descrição |
|---|---|---|
| AoqMirrorModeDesativado | 0 | Desativar espelhamento |
| AoqMirrorModeEnabled | 1 | Habilitar espelhamento |
Modo de Orientação Aoq
| Valor enum | Valor | Descrição |
|---|---|---|
| AoqOrientationModeAuto | 0 | Ajuste automático |
| AoqOrientationModeRetrato | 1 | Retrato |
| AoqOrientationModePaisagem | 2 | Paisagem |
AoqErrorCode
Os códigos de erro são definidos na camada nativa. O code parâmetro de onError e os valores de retorno da API usam esses valores (a camada TS não os exporta como um enum).
| Valor enum | Valor | Descrição |
|---|---|---|
| AoqErrorCodeOK | 0 | Sucesso |
| AoqErrorCodeParamInválido | 1 | Parâmetro inválido |
| AoqErrorCodeStateInválido | 2 | Estado inválido |
| AoqErrorCodeUnSupport | 3 | Não suportado na plataforma atual ou no modo atual |
| AoqErrorCodeÁudio | 100 | Erro genérico de áudio |
| AoqErrorCodeAudioExternalBufferFull | 110 | O buffer de áudio externo está cheio |
| AoqErrorCodeAudioDevice | 120 | Erro genérico do dispositivo de áudio |
| AoqErrorCodeAudioDeviceRecordingAuthFailed | 121 | Permissão de gravação não concedida |
| AoqErrorCodeAudioDeviceRecordingOccupied | 122 | O dispositivo de gravação está em uso |
| AoqErrorCodeAudioDeviceRecordingBackgroundStart | 123 | Falha ao iniciar a gravação em segundo plano |
| AoqErrorCodeAudioDeviceRecordingStartFail | 124 | Falha ao iniciar a gravação |
| AoqErrorCodeAudioDevicePlayoutOccupied | 125 | O dispositivo de reprodução está em uso |
| AoqErrorCodeAudioDevicePlayoutBackgroundStart | 126 | Falha ao iniciar a reprodução em segundo plano |
| AoqErrorCodeAudioDevicePlayoutStartFail | 127 | Falha ao iniciar a reprodução |
| AoqErrorCodeVídeo | 200 | Erro genérico de vídeo |
| AoqErrorCodeVideoExternalBufferFull | 210 | O buffer de vídeo externo está cheio |
| AoqErrorCodeVideoExternalCaptureNotEnabled | 211 | A captura de vídeo externa não está habilitada |
| AoqErrorCodeVideoExternalEncoderNotEnabled | 212 | A codificação de vídeo externa não está habilitada |
| AoqErrorCodeVideoDispositivo | 220 | Erro genérico do dispositivo de vídeo |
| AoqErrorCodeVideoDeviceCameraOpenFail | 221 | Falha ao abrir a câmera |
| AoqErrorCodeVideoDeviceCameraAuthFailed | 222 | Permissão de câmera não concedida |
| AoqErrorCodeVideoDeviceCameraOccupied | 223 | A câmera está em uso |
| AoqErrorCodeVideoDeviceCameraRunningError | 224 | Exceção de tempo de execução da câmera |
| AoqErrorCodeVideoCodec | 230 | Erro genérico de codec de vídeo |
| AoqErrorCodeVideoCodecEncoderInitFail | 231 | Falha ao inicializar o codificador de vídeo |
| AoqErrorCodeVideoRender | 240 | Erro genérico de renderização de vídeo |
| AoqErrorCodeVideoRenderCreateFail | 241 | Falha ao criar renderização de vídeo |
| AoqErrorCodeVideoRenderDrawError | 242 | Erro de desenho 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 |
| AoqECAudioDeviceFone de ouvidoRequerVoipMode | 128 | O fone de ouvido requer modo VoIP. Aplica-se a plataformas móveis e geralmente não é acionado no Electron. |
Além dos códigos de erro nativos acima, a camada Electron retorna -1 quando o mecanismo não foi criado ou foi destruído, ou quando um parâmetro não é JSON válido.
Código de aviso Aoq
| Valor enum | Valor | Descrição |
|---|---|---|
| AoqWCOK | 0 | Nenhum aviso |
| AoqWCAudio | 100 | Aviso sonoro genérico |
| AoqWCAudioUivo | 101 | Uivo de áudio detectado |
| AoqWCAudioDispositivo | 120 | Aviso genérico de dispositivo de áudio |
| AoqWCAudioDeviceMicEnumerateError | 121 | Erro de enumeração de microfone |
| AoqWCAudioDeviceMicStartTimeout | 122 | A inicialização do microfone expirou |
| AoqWCAudioDeviceRecordingError | 123 | Erro durante a gravação |
| AoqWCAudioDeviceSpeakerEnumerateError | 124 | Erro de enumeração de alto-falantes |
| AoqWCAudioDeviceSpeakerStartTimeout | 125 | A inicialização do alto-falante expirou |
| AoqWCAudioDevicePlayoutError | 126 | Erro durante a 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 |
Tipos de áudio
AoqAudioCaptureConfig
| Campo | Tipo | Obrigatório | Valor padrão | Descrição |
|---|---|---|---|---|
| éExterno | booleano | Não | falso | Especifica se deve ser usado o modo de captura externa |
| canal | número | Não | 1 | Número de canais de captura de áudio. 1 e 2 são suportados. |
AoqAudioPlaybackConfig
| Campo | Tipo | Obrigatório | Valor padrão | Descrição |
|---|---|---|---|---|
| éExterno | booleano | Não | falso | Especifica se deve ser usado o modo de reprodução externa |
| canal | número | Não | 1 | Número de canais de reprodução de áudio. 1 e 2 são suportados. |
isVoipMode / isDefaultSpeaker são campos somente móveis e não são fornecidos pela Electron.
AoqAudioCodecConfig
| Campo | Tipo | Obrigatório | Valor padrão | Descrição |
|---|---|---|---|---|
| trackType | AoqTrackType | Não | AoqTrackTypeÁudio | Tipo de trilha |
| tipo de codec | AoqEncoderType | Não | AoqEncoderTypeAudioOpus | Formato de codec |
| taxa de amostra | número | Não | 48.000 | Taxa de amostragem, em Hz. Para codificação, são suportados Opus 8/16/48K e PCM 8/16/32/48K. Para decodificação, 24K também é compatível, mas apenas no modo Segmento. |
| canal | número | Não | 1 | Número de canais. 1 e 2 são suportados. |
| taxa de bits | número | Não | 32.000 | Taxa de bits, em bits/s |
AoqAudioDeviceRouteType
A tabela a seguir lista os valores válidos routeType valores para onAudioDeviceRouteChanged. Esses valores são definidos pela camada nativa e não são exportados como um enum pela camada TypeScript.
| Valor enum | Valor | Descrição |
|---|---|---|
| AoqAudioDeviceRouteDefault | 0 | Rota padrão |
| AoqAudioDeviceRouteHeadset | 1 | Fones de ouvido com microfone |
| AoqAudioDeviceRouteAuricular | 2 | Receptor |
| AoqAudioDeviceRouteHeadsetNoMic | 3 | Fones de ouvido sem microfone |
| AoqAudioDeviceRouteSpeakerPhone | 4 | Palestrante |
| AoqAudioDeviceRouteUsb | 5 | Dispositivo de áudio USB |
| AoqAudioDeviceRouteBluetooth | 6 | Modo Bluetooth SCO |
| AoqAudioDeviceRouteBluetoothA2dp | 7 | Modo Bluetooth A2DP |
AoqAudioDeviceStateCode
| Valor enum | Valor | Descrição |
|---|---|---|
| AoqAudioDeviceNenhum | 0 | Nenhum estado |
| AoqAudioDeviceRecordIniciando | 1 | Captura começando |
| AoqAudioDeviceRecordiniciado | 2 | Captura iniciada |
| AoqAudioDeviceRecordStopping | 3 | Parada de captura |
| AoqAudioDeviceRecordParado | 4 | Captura interrompida |
| AoqAudioDeviceRecordFail | 5 | Falha na captura |
| AoqAudioDevicePlayIniciando | 6 | Início da reprodução |
| AoqAudioDevicePlayiniciado | 7 | A reprodução começou |
| AoqAudioDevicePlayStopping | 8 | Parada de reprodução |
| AoqAudioDevicePlayStopped | 9 | A reprodução parou |
| AoqAudioDevicePlayFail | 10 | Falha na reprodução |
AoqAudioDeviceState
| Campo | Tipo | Descrição |
|---|---|---|
| estado | AoqAudioDeviceStateCode | Status de operação do dispositivo |
| motivo | número | Código de motivo do erro. Consulte AoqErrorCode. |
Tipos de arquivos de áudio
AoqAudioFileMixConfig
| Campo | Tipo | Obrigatório | Valor padrão | Descrição |
|---|---|---|---|---|
| ID do arquivo | corda | Sim | - | Identificador de arquivo. As chamadas de API subsequentes usam-no para localizar o arquivo. |
| nome do arquivo | corda | Sim | - | Nome do arquivo (incluindo o caminho) |
| ciclos | número | Não | -1 | Número de loops. -1 indica loop ilimitado. |
| startPosMs | número | Não | 0 | Posição inicial de reprodução, em milissegundos |
| publicarVolume | número | Não | 100 | Volume de publicação. Valores válidos: 0 a 100. |
| volume de reprodução | número | Não | 100 | Volume de reprodução. Valores válidos: 0 a 100. |
AoqAudioFileStateCode
| Valor enum | Valor | Descrição |
|---|---|---|
| AoqAudioFileNone | 0 | Nenhum estado |
| AoqAudioFileIniciado | 1 | A reprodução começou |
| AoqAudioFileStopped | 2 | A reprodução parou |
| AoqAudioFilePausado | 3 | Reprodução pausada |
| AoqAudioFileRetomado | 4 | A reprodução foi retomada |
| AoqAudioFileEnd | 5 | A reprodução terminou |
| AoqAudioFileBuffering | 6 | Buffer de reprodução |
| AoqAudioFileBufferingEnd | 7 | O buffer terminou |
| AoqAudioFileFalha | 8 | Falha na reprodução |
AoqAudioFileErrorCode
A tabela a seguir lista os valores válidos AoqAudioFileState.errorCode valores. Esses valores são definidos pela camada nativa e são entregues como number valores pela camada TypeScript.
| Valor enum | Valor | Descrição |
|---|---|---|
| AoqAudioFileNoError | 0 | Nenhum erro |
| AoqAudioFileOpenFalha | 1 | Falha ao abrir o arquivo |
| AoqAudioFileDecodeFalha | 2 | Falha ao decodificar o arquivo |
AoqAudioFileState
| Campo | Tipo | Descrição |
|---|---|---|
| ID do arquivo | corda | Identificador de arquivo |
| código do estado | AoqAudioFileStateCode | Código de status de reprodução de arquivo |
| código de erro | número | Código de erro do arquivo. Consulte AoqAudioFileErrorCode. |
Tipos de fluxo de áudio externo
AoqAudioStreamDirection
| Valor enum | Valor | Descrição |
|---|---|---|
| AoqAudioStreamPublicar | 0 | Fluxo de publicação |
| AoqAudioStreamPlayout | 1 | Fluxo de reprodução (reprodução local) |
AoqAudioExternalStreamConfig
| Campo | Tipo | Obrigatório | Valor padrão | Descrição |
|---|---|---|---|---|
| ID de fluxo | corda | Sim | - | Identificador de fluxo |
| trackType | AoqTrackType | Não | AoqTrackTypeÁudio | Tipo de trilha de áudio |
| tipo de codec | AoqEncoderType | Não | AoqEncoderTypeAudioPCM | Formato de fluxo de áudio. PCM é atualmente suportado. |
| canais | número | Não | 1 | Número de canais. É limitado pelo codec do fluxo de publicação. 1 e 2 são suportados. |
| taxa de amostra | número | Não | 48.000 | Taxa de amostragem, em Hz. 8, 12, 16, 24, 32, 44,1, 48, 64, 88,2, 96, 176,4 e 192K são suportados. |
| volume de reprodução | número | Não | 100 | Volume de reprodução. Valores válidos: 0 a 100. |
| publicarVolume | número | Não | 100 | Volume de publicação. Valores válidos: 0 a 100. |
| maxBufferDuration | número | Não | 600000 | Duração máxima do buffer, em milissegundos. Valores válidos: 100 e acima. Se a duração exceder esse valor, o push falhará. |
| habilitar3A | booleano | Não | falso | Especifica se o processamento 3A deve ser aplicado ao PCM de entrada |
AoqAudioExternalFrameMeta
Metadados de um quadro de áudio externo. Os dados PCM são passados separadamente através do buffer parâmetro.
| Campo | Tipo | Obrigatório | Valor padrão | Descrição |
|---|---|---|---|---|
| ID de fluxo | corda | Sim | - | Identificador do fluxo de áudio externo alvo |
| numOfSamples | número | Sim | 0 | Número de amostras (por canal) |
| bytesPerSample | número | Sim | 2 | Bytes por amostra |
| numOfCanais | número | Sim | 1 | Número de canais |
| amostrasPerSec | número | Sim | 48.000 | Número de amostras por segundo (taxa de amostragem) |
| pushSequência | número | Não | 0 | Rodada de entrada PCM |
| carimbo de data / hora | número | Não | 0 | Carimbo de data/hora |
Evento AoqAudioFrame
Dados de evento do observador de quadro de áudio.
| Campo | Tipo | Descrição |
|---|---|---|
| trackType | AoqTrackType | Tipo de trilha |
| numOfSamples | número | Número de amostras (por canal) |
| bytesPerSample | número | Bytes por amostra |
| numOfCanais | número | Número de canais |
| amostrasPerSec | número | Número de amostras por segundo (taxa de amostragem) |
| carimbo de data / hora | número | Carimbo de data/hora |
| autoGenMute | booleano | true indica dados silenciosos gerados pelo SDK |
| buffer | Uint8Array | Dados de áudio PCM (já copiados no lado nativo) |
AoqAudioSource
| Valor enum | Valor | Descrição |
|---|---|---|
| AoqAudioSourceCapturado | 0 | Dados de áudio capturados |
| AoqAudioSourceProcessCapturado | 1 | Dados de áudio após processamento 3A |
| AoqAudioSourcePublicar | 2 | Dados de áudio a serem publicados (requer uma conexão bem-sucedida) |
| AoqAudioSourceReprodução | 3 | Dados de áudio a serem reproduzidos |
AoqAudioObserverParams
| Campo | Tipo | Obrigatório | Valor padrão | Descrição |
|---|---|---|---|---|
| habilitado | booleano | Sim | falso | Habilite ou desabilite o retorno de chamada nesta posição |
| fonte de áudio | AoqAudioFonte | Sim | AoqAudioSourceCapturado | Posição de retorno de chamada |
| taxa de amostra | número | Não | 48.000 | Taxa de amostragem do áudio de retorno de chamada, em Hz. A reamostragem é realizada se as taxas não corresponderem. |
| canais | número | Não | 1 | Número de canais de áudio no retorno de chamada. 1 e 2 são suportados. |
O modo de retorno de chamada é fixado como somente leitura. Electron não fornece modo de leitura e gravação.
AoqAudioVolumeIndicaçãoConfig
| Campo | Tipo | Obrigatório | Valor padrão | Descrição |
|---|---|---|---|---|
| intervalo | número | Não | 0 | Intervalo de retorno de chamada, em milissegundos. Um valor menor ou igual a 0 desativa o retorno de chamada. Um valor maior que 0 e menor que 10 é tratado como 10. |
| suave | número | Não | 3 | Coeficiente de suavização de volume. Um valor maior resulta em uma saída mais suave. Valores válidos: 0 a 10. |
AoqAudioVolume
| Campo | Tipo | Descrição |
|---|---|---|
| volume | número | Volume instantâneo suavizado. Valores válidos: 0 a 255. |
Tipos de vídeo
AoqVideoCaptureConfig
| Campo | Tipo | Obrigatório | Valor padrão | Descrição |
|---|---|---|---|---|
| largura | número | Não | 1280 | Largura da captura, em pixels. Este parâmetro é ineficaz quando isExternal=true. |
| altura | número | Não | 720 | Altura da captura, em pixels. Este parâmetro é ineficaz quando isExternal=true. |
| FPS | número | Não | 15 | Taxa de quadros de captura. Este parâmetro é ineficaz quando isExternal=true (o ritmo é determinado pela entrega do quadro). |
| éExterno | booleano | Não | falso | Especifica se a captura externa deve ser usada. Se for verdade, a câmera não está aberta. |
cameraDirection é um campo apenas para dispositivos móveis e não existe em plataformas de desktop.
AoqVideoCodecConfig
A codificação e a decodificação compartilham a mesma estrutura (setVideoEncoderConfig / setVideoDecoderConfig).
| Campo | Tipo | Obrigatório | Valor padrão | Descrição |
|---|---|---|---|---|
| éExterno | booleano | Não | falso | Quando esse parâmetro é verdadeiro, o SDK não realiza captura ou codificação e os quadros são enviados diretamente por pushExternalVideoEncodedFrame. |
| trackType | AoqTrackType | Não | AoqTrackTypeVídeo | Tipo de trilha |
| tipo de codec | AoqEncoderType | Não | AoqEncoderTypeVideoH264 | Formato de codec |
| largura | número | Não | 540 | Largura de codificação, em pixels |
| altura | número | Não | 960 | Altura de codificação, em pixels |
| FPS | número | Não | 5 | Taxa de quadros de codificação |
| taxa de bits | número | Não | 500000 | Taxa de bits inicial, em bit/s |
| minTaxa de bits | número | Não | 128.000 | Taxa de bits mínima, em bit/s |
| keyframeInterval | número | Não | 2 | Intervalo de quadro-chave, em segundos |
| modo espelho | AoqMirrorMode | Não | AoqMirrorModeDesativado | Modo espelho |
| modo de orientação | AoqOrientationMode | Não | AoqOrientationModeAuto | Modo de orientação de vídeo |
AoqVideoPixelFormat
Formatos de pixel suportados no lado Electron (excluindo os formatos de textura/CVPixelBuffer em plataformas móveis).
| Valor enum | Valor | Descrição |
|---|---|---|
| AoqVideoPixelFormatUnknown | 0 | Formato desconhecido |
| AoqVideoPixelFormatI420 | 1 | I420 (formato plano YUV) |
| AoqVideoPixelFormatNV12 | 2 | NV12 (formato semiplanar YUV) |
| AoqVideoPixelFormatNV21 | 3 | NV21 (formato semiplanar YUV) |
| AoqVideoPixelFormatBGRA | 4 | BGRA (32 bits) |
| AoqVideoPixelFormatRGBA | 5 | RGBA (32 bits) |
AoqExternalVideoFrameMeta
Metadados de um quadro de vídeo bruto externo. Os dados de pixel são passados separadamente através do buffer parâmetro.
| Campo | Tipo | Obrigatório | Valor padrão | Descrição |
|---|---|---|---|---|
| trackType | AoqTrackType | Não | AoqTrackTypeVídeo | Tipo de trilha; suporta roteamento de vídeo/tela |
| formato | AoqVideoPixelFormat | Sim | - | Formato de pixels |
| largura | número | Sim | - | Largura do vídeo, em pixels |
| altura | número | Sim | - | Altura do vídeo, em pixels |
| carimbo de data / hora | número | Não | 0 | Carimbo de data/hora, em milissegundos. Se for 0, o SDK o preenche com a hora local. |
Quando format = I420, buffer deve utilizar um layout compacto (passada = largura), com os planos Y/U/V concatenados em ordem. Para outros formatos compactados, passe diretamente os bytes inteiros do quadro.
AoqVideoCodecType
| Valor enum | Valor | Descrição |
|---|---|---|
| AoqVideoCodecTypeJPEG | 0 | Codificação JPEG |
AoqExternalVideoEncodedFrameMeta
Metadados de um quadro de vídeo codificado externamente. Os dados codificados são passados separadamente através do buffer parâmetro.
| Campo | Tipo | Obrigatório | Valor padrão | Descrição |
|---|---|---|---|---|
| trackType | AoqTrackType | Não | AoqTrackTypeVídeo | Tipo de trilha; suporta roteamento de vídeo/tela |
| codec | AoqVideoCodecType | Não | AoqVideoCodecTypeJPEG | Formato de codec |
| largura | número | Sim | - | Largura, em pixels |
| altura | número | Sim | - | Altura, em pixels |
| carimbo de data / hora | número | Não | 0 | Carimbo de data/hora, em milissegundos. Se for 0, o SDK o preenche com a hora local. |
AoqVideoDeviceStateCode
| Valor enum | Valor | Descrição |
|---|---|---|
| AoqVideoDeviceNone | 0 | Nenhum estado |
| AoqVideoDeviceCaptureIniciando | 1 | Captura começando |
| AoqVideoDeviceCaptureiniciado | 2 | Captura iniciada |
| AoqVideoDeviceCaptureStopping | 3 | Parada de captura |
| AoqVideoDeviceCaptureParado | 4 | Captura interrompida |
| AoqVideoDeviceCaptureFail | 5 | Falha na captura (por exemplo, permissão negada ou dispositivo indisponível) |
AoqVideoDeviceState
| Campo | Tipo | Descrição |
|---|---|---|
| estado | AoqVideoDeviceStateCode | Status da operação de captura do dispositivo |
| motivo | número | Código de motivo do erro. Consulte AoqErrorCode. |
Tipos de retorno de chamada de quadro de vídeo
AoqVideoFonte
| Valor enum | Valor | Descrição |
|---|---|---|
| AoqVideoSourceCapturado | 0 | Dados de vídeo capturados antes do pré-processamento |
| AoqVideoSourcePreEncode | 1 | Dados de vídeo antes da codificação, após o pré-processamento |
| AoqVideoSourceRemoto | 2 | Dados de vídeo remotos após decodificação e antes da renderização |
Alinhamento AoqVideoObserver
| Valor enum | Valor | Descrição |
|---|---|---|
| AoqVideoObserverAlignmentDefault | 0 | Alinhamento padrão |
| AoqVideoObserverAlignmentEven | 1 | Alinhamento de números pares |
| AoqVideoObserverAlignment4 | 2 | Alinhamento de 4 bytes |
| AoqVideoObserverAlignment8 | 3 | Alinhamento de 8 bytes |
| AoqVideoObserverAlignment16 | 4 | Alinhamento de 16 bytes |
AoqVideoObserverParams
| Campo | Tipo | Obrigatório | Valor padrão | Descrição |
|---|---|---|---|---|
| habilitado | booleano | Sim | falso | Habilite ou desabilite o retorno de chamada nesta posição |
| fonte de vídeo | AoqVideoSource | Sim | AoqVideoSourceCapturado | Posição de retorno de chamada |
| formato | AoqVideoPixelFormat | Não | AoqVideoPixelFormatI420 | Formato de pixel esperado dos dados de retorno de chamada |
| alinhamento | AoqVideoObserverAlinhamento | Não | AoqVideoObserverAlignmentDefault | Política de alinhamento de largura |
| espelhoAplicado | booleano | Não | falso | Especifica se os dados de retorno de chamada devem ser espelhados |
| trackType | AoqTrackType | Não | AoqTrackTypeVídeo | Trilha de vídeo para observar. Suporta apenas vídeo e tela. |
O modo de retorno de chamada é fixado como somente leitura. Electron não fornece modo de leitura e gravação. Selecione I420 ao usar o integrado YUVCanvasRenderer para renderização.
AoqVideoFrameEvent
Dados de evento do observador de quadro de vídeo.
| Campo | Tipo | Descrição |
|---|---|---|
| trackType | AoqTrackType | Tipo de trilha |
| formato | AoqVideoPixelFormat | Formato de pixel |
| largura | número | Largura, em pixels |
| altura | número | Altura, em pixels |
| passoY | número | Passo do plano Y (efetivo apenas para I420) |
| passoU | número | Passo do plano U (efetivo apenas para I420) |
| passoV | número | Passo do plano V (efetivo apenas para I420) |
| carimbo de data / hora | número | Carimbo de data e hora, em milissegundos |
| buffer | Uint8Array | Dados do quadro. Para I420, são os planos Y/U/V concatenados com base na passada. Outros formatos compactados são transmitidos como dados originais. |
Tipos de mensagens de dados
O elétron não usa o AoqDataMsg tipo de invólucro. As mensagens de dados são enviadas e recebidas diretamente como dados binários:
| Direção | Tipo | Descrição |
|---|---|---|
| Enviar | Uint8Array ou string | sendDataMsg(data). As strings são codificadas em UTF-8. |
| Receber | Uint8Array | onDataMsg(data). Os dados já são copiados no lado nativo e podem ser mantidos de forma assíncrona. |