Skip to main content

Referencia de la API de AOQ Client SDK para Electron

Este tema describe las API de TypeScript, los eventos y los tipos de datos de AOQ Client SDK para Electron. El SDK es compatible con macOS x64/arm64 y Windows x64, y requiere Node.js 16 o posterior.

El SDK de AOQ proporciona API generales de video. Qwen-Audio-Realtime no admite entrada ni salida de video. Para conocer las capacidades de medios de otros modelos, consulte su documentación de conexión.
Paquete aplicable: aoq-electron-sdk (npm). Plataformas compatibles: macOS (x64 / arm64) y Windows x64. Node.js >= 16.

Índice de API

Puntos de entrada del motor y ciclo de vida

APIDescripción
createAoqClientEngineObtener la instancia del contenedor del motor (singleton diferido a nivel de módulo)
createEngineCrear la instancia del motor nativo
destroyDestruir la instancia del motor
getVersionObtener la versión del SDK
connectConectar al servidor Relay
disconnectDesconectar del servidor

Gestión de dispositivos de audio

APIDescripción
startAudioCaptureAbrir el dispositivo de captura de audio (micrófono)
stopAudioCaptureCerrar el dispositivo de captura de audio
muteAudioCaptureSilenciar o reactivar la captura de audio
startAudioPlayerIniciar renderizado de audio (reproducción de audio remoto)
stopAudioPlayerDetener la renderización de audio
pauseAudioPlayerPausar el renderizado de audio, con desvanecimiento opcional
resumeAudioPlayerReanudar el renderizado de audio, con aparición gradual opcional
interruptAudioPlayerInterrumpir la sesión de audio actual

Configuración del códec de audio

APIDescripción
setAudioEncoderConfigEstablecer parámetros de codificación de audio
setAudioDecoderConfigEstablecer parámetros de decodificación de audio

Gestión de dispositivos de video

APIDescripción
startVideoCaptureAbrir el dispositivo de captura de video (cámara)
stopVideoCaptureCerrar el dispositivo de captura de video

Configuración de códec de video y entrada externa

APIDescripción
setVideoEncoderConfigEstablecer parámetros de codificación de video
setVideoDecoderConfigEstablecer parámetros de decodificación de video
pushExternalVideoCapturedFrameEnviar tramas de video capturadas externamente
pushExternalVideoEncodedFrameEnviar tramas de video codificadas externamente

Captura de pantalla

APIDescripción
getScreenSourceListObtener la lista de escritorios y ventanas compartibles
startScreenCaptureIniciar la captura de pantalla
stopScreenCaptureDetener la captura de pantalla

Control de transmisión de flujo de medios

APIDescripción
enableSendMediaStreamHabilitar o deshabilitar la transmisión de secuencia de medios local

Reproducción de archivos de audio

APIDescripción
startAudioFileIniciar la reproducción y publicación de un archivo de audio local
stopAudioFileDetener la reproducción del archivo de audio
pauseAudioFilePausar la reproducción del archivo de audio
resumeAudioFileReanudar la reproducción del archivo de audio
getAudioFileDurationObtener la duración total del archivo de audio
getAudioFileCurrentPositionObtener la posición de reproducción actual del archivo de audio
setAudioFilePositionMillisBuscar una posición en el archivo de audio
setAudioFileVolumeEstablecer el volumen del archivo de audio
getAudioFileVolumeObtener el volumen actual del archivo de audio

Secuencias de audio externas

APIDescripción
addAudioExternalStreamAgregar un flujo de audio externo
removeAudioExternalStreamEliminar un flujo de audio externo
pushAudioExternalStreamDataEnviar datos de audio PCM externos
setAudioExternalStreamVolumeEstablecer el volumen de la secuencia de audio externa
getAudioExternalStreamVolumeObtener el volumen de la secuencia de audio externa
clearAudioExternalStreamBufferBorrar el búfer de la secuencia de audio externa

Mensajes en tiempo real

APIDescripción
sendDataMsgEnviar un mensaje de datos en tiempo real

Devoluciones de llamada de cuadros de audio

APIDescripción
setAudioFrameObserverHabilitar o deshabilitar el observador de fotogramas de audio
enableAudioFrameObserverHabilitar o deshabilitar callbacks de tramas de audio en una etapa específica

Indicación de volumen de audio local

APIDescripción
enableLocalAudioVolumeIndicationHabilitar o deshabilitar las devoluciones de llamada de indicación de volumen de captura local

Devoluciones de llamada de cuadros de video

APIDescripción
setVideoFrameObserverHabilitar o deshabilitar el observador de fotogramas de video
enableVideoFrameObserverHabilitar o deshabilitar callbacks de tramas de video en una etapa específica

Renderizado de video (YUVCanvasRenderer)

APIDescripción
bindVincular un elemento canvas
unbindDesvincular el lienzo y borrar su contenido
boundComprobar si un lienzo está vinculado
drawFrameRenderizar un fotograma de video I420

Eventos del motor (IAoqEngineEvents)

APIDescripción
onErrorCallback de error del motor
onWarningCallback de advertencia del motor
onConnectionStatusChangeCallback de cambio de estado de conexión
onStatsCallback de estadísticas del motor
onAudioDeviceStateChangedCallback de cambio de estado de operación del dispositivo de audio
onAudioDeviceRouteChangedCallback de cambio de ruta de salida de audio
onAudioFileStateCallback de estado de reproducción de archivo de audio
onLocalAudioVolumeIndicationCallback de indicación de volumen de captura local
onVideoDeviceStateChangedCallback de cambio de estado de operación del dispositivo de video
onDataMsgCallback de mensaje de datos en tiempo real recibido

Eventos de fotogramas de audio

APIDescripción
onCapturedAudioFrameSe invoca cuando se captura un cuadro de audio sin procesar. El cuadro contiene datos PCM no procesados.
onProcessCapturedAudioFrameSe invoca para un cuadro de audio después del procesamiento 3A: cancelación de eco acústico, supresión de ruido y control automático de ganancia.
onPublishAudioFrameSe invoca para un cuadro de audio antes de su publicación. El cuadro se codificará y se enviará al servidor Relay.
onPlaybackAudioFrameSe llama para un fotograma de audio remoto antes de la reproducción. El fotograma ha sido decodificado pero aún no mezclado.

Eventos de fotogramas de video

APIDescripción
onCapturedVideoFrameSe invoca cuando se captura un cuadro de video sin procesar, antes del preprocesamiento. El cuadro proviene de la cámara o de la captura de pantalla y no ha sido preprocesado.
onPreEncodeVideoFrameSe invoca para un cuadro de video después del preprocesamiento y antes de la codificación.
onRemoteVideoFrameSe invoca para un cuadro de video remoto después de la decodificación y antes de la renderización.

Detalles de la API

Puntos de entrada del motor y ciclo de vida

createAoqClientEngine

Obtiene la instancia contenedora del motor. Es un singleton inicializado de forma diferida a nivel de módulo. Llamar a este método nuevamente devuelve la misma instancia, lo cual se alinea con la semántica de singleton del motor nativo. También es la exportación predeterminada del paquete.
import createAoqClientEngine from 'aoq-electron-sdk';
export function createAoqClientEngine(): IAoqClientEngine
Devuelve: La instancia del motor IAoqClientEngine. Tenga en cuenta que este método solo crea la capa contenedora JS y el puente nativo. Para crear realmente el motor, también debe llamar a createEngine().

createEngine

Crea la instancia del motor nativo. El motor es un singleton global, por lo que llamar a este método nuevamente devuelve éxito directamente.
createEngine(config: AoqCreateConfig): number

Parámetros

Tipo

Descripción

config

AoqCreateConfig

Configuración de creación del motor

Devuelve: 0 en caso de éxito; -1 indica que la creación falló o que el parámetro no es un JSON válido.
En Windows, createEngine() adjunta una bomba de mensajes Win32 de 16 ms al bucle libuv del hilo JS actual (necesario para la captura de cámara) y la detiene en destroy(). Por lo tanto, no bloquee sincrónicamente el hilo JS durante mucho tiempo después de createEngine().

destroy

Destruye la instancia del motor y libera todos los recursos.
destroy(): number
Devuelve: 0 indica éxito; un valor distinto de 0 indica un fallo. Si el motor no está creado, se devuelve 0.

getVersion

Obtiene la versión actual del SDK. No es necesario llamar a createEngine() primero.
getVersion(): string
Devuelve: La cadena de versión, como "1.2.0". Se devuelve una cadena vacía si no se puede obtener la versión.

connect

Se conecta al servidor de retransmisión. El servidor de aplicaciones obtiene parámetros de conexión AOQ temporales basados en el protocolo en uso y los envía al cliente. Para más información, consulte Autenticación por token.
connect(config: AoqConnectConfig): number

Parámetros

Tipo

Descripción

config

AoqConnectConfig

Configuración de conexión, que incluye el token, el SID, la lista de puntos de acceso de retransmisión y las listas de pistas de publicación y suscripción

Devuelve: 0 indica que la llamada se ha despachado y se ejecuta de forma asíncrona; un valor distinto de 0 indica que la validación de parámetros falló. El resultado de la conexión se notifica mediante el evento onConnectionStatusChange.

disconnect

Desconecta del servidor y libera los recursos asociados con la conexión.
disconnect(): number
Devuelve: 0 indica que la llamada se ha despachado y se ejecuta de forma asíncrona; un valor distinto de 0 indica un fallo.

Gestión de dispositivos de audio

startAudioCapture

startAudioCapture(config: AoqAudioCaptureConfig): number
Abre el dispositivo de captura de audio (micrófono). La primera captura desencadena una solicitud de autorización del sistema. En macOS, debe declarar NSMicrophoneUsageDescription en el archivo Info.plist de la aplicación.

stopAudioCapture

stopAudioCapture(): number
Cierra el dispositivo de captura de audio.

muteAudioCapture

muteAudioCapture(mute: boolean): number
Silencia o reactiva la captura de audio. mute=true silencia y false reactiva.

startAudioPlayer

startAudioPlayer(config: AoqAudioPlaybackConfig): number
Inicia el renderizado de audio para reproducir audio remoto.

stopAudioPlayer / pauseAudioPlayer / resumeAudioPlayer

stopAudioPlayer(): number
pauseAudioPlayer(fadeMs: number): number
resumeAudioPlayer(fadeMs: number): number
fadeMs: la duración del desvanecimiento de salida o entrada, en milisegundos. 0 indica ejecución inmediata.

interruptAudioPlayer

interruptAudioPlayer(trackType: AoqTrackType, fadeMs: number): number
Interrumpe la sesión de audio actual y descarta los datos de enlace descendente almacenados en búfer de la sesión actual.

Parámetros

Tipo

Descripción

trackType

AoqTrackType

Tipo de pista

fadeMs

number

Duración del desvanecimiento, en milisegundos

Configuración del códec de audio

setAudioEncoderConfig(config: AoqAudioCodecConfig): number
setAudioDecoderConfig(config: AoqAudioCodecConfig): number
Se recomienda llamar a este método antes de connect(). Para usar Opus (AoqEncoderTypeAudioOpus), el complemento PluginOpus debe estar integrado en el SDK o distribuido con el paquete.

Gestión de dispositivos de video

startVideoCapture(config: AoqVideoCaptureConfig): number
stopVideoCapture(): number
Abre o cierra el dispositivo de captura de video. En macOS, debe declarar NSCameraUsageDescription en Info.plist. Cuando config.isExternal=true, la cámara no se abre y los cuadros se entregan mediante pushExternalVideoCapturedFrame.
El renderizador de Electron es un entorno Chromium y no puede incrustar vistas nativas, por lo que no se proporcionan setLocalView / setRemoteView / switchCamera. Para la vista previa, utilice el observador de cuadros con YUVCanvasRenderer (consulte 2.13).

Configuración de códec de video y entrada externa

setVideoEncoderConfig(config: AoqVideoCodecConfig): number
setVideoDecoderConfig(config: AoqVideoCodecConfig): number
pushExternalVideoCapturedFrame(meta: AoqExternalVideoFrameMeta, buffer: Uint8Array): number
pushExternalVideoEncodedFrame(meta: AoqExternalVideoEncodedFrameMeta, buffer: Uint8Array): number

Parámetros

Tipo

Descripción

meta

AoqExternalVideoFrameMeta / AoqExternalVideoEncodedFrameMeta

Metadatos del fotograma (dimensiones, formato y marca de tiempo)

buffer

Uint8Array

Datos del fotograma (datos de píxeles o datos codificados)

  • pushExternalVideoCapturedFrame consume cuadros de Video después de startVideoCapture({ isExternal: true }) y cuadros de Pantalla después de startScreenCapture({ isExternal: true }). Devuelve 211 cuando la captura externa no está habilitada y 210 cuando el búfer está lleno.
  • Se admiten AoqVideoPixelFormatI420 y formatos empaquetados (NV12 / NV21 / BGRA / RGBA). Para I420, buffer debe usar un diseño compacto (stride = width), con los planos Y / U / V concatenados en orden.
  • pushExternalVideoEncodedFrame requiere primero setVideoEncoderConfig({ isExternal: true }). Devuelve 212 cuando no está habilitado. Actualmente solo se admite JPEG.
  • Cuando meta.timeStamp es 0, el SDK lo rellena con la hora local.

Captura de pantalla

startScreenCapture(config: AoqScreenCaptureConfig): number
stopScreenCapture(): number
config especifica la configuración de captura de pantalla. El contenido de la pantalla se envía en la pista AoqTrackTypeScreen. Devuelve 0 en caso de éxito o un valor distinto de cero en caso de error. Llame a getScreenSourceList para enumerar pantallas y ventanas, luego pase los valores seleccionados de sourceId y sourceType en la configuración de captura. Para cuadros sin procesar externos, establezca isExternal=true y proporcione cuadros de Pantalla sin procesar a través de pushExternalVideoCapturedFrame para la codificación del SDK. Para cuadros codificados externamente, configure la pista de Pantalla para codificación externa con setVideoEncoderConfig, luego llame a pushExternalVideoEncodedFrame.

getScreenSourceList

getScreenSourceList(): AoqScreenSourceInfo[]
Devuelve una matriz de fuentes de pantalla. Disponible solo en Electron macOS y Windows.

Control de transmisión de flujo de medios

enableSendMediaStream(trackType: AoqTrackType, enable: boolean): number
trackType admite AoqTrackTypeAudio, AoqTrackTypeVideo y AoqTrackTypeScreen. Especifica si se debe enviar un flujo de medios local específico. Se recomienda llamar a enableSendMediaStream(trackType, false) después de la inicialización y habilitar el envío solo después de que onConnectionStatusChange reporte AoqConnectionStatusConnected.

Reproducción de archivos de audio

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ámetros

Tipo

Descripción

config

AoqAudioFileMixConfig

Configuración de mezcla de archivos. fileId se transporta como un campo de configuración.

fileId

string

Identificador de archivo, definido por el llamador. Las llamadas posteriores a la API lo utilizan para ubicar el archivo.

positionMs

number

Posición de reproducción objetivo, en milisegundos

type

AoqAudioStreamDirection

Volumen de publicación o volumen de reproducción local

volume

number

Volumen. Valores válidos: de 0 a 100.

Descripción del valor de retorno:
  • getAudioFileDuration / getAudioFileCurrentPosition devuelven el número de milisegundos;
  • getAudioFileVolume devuelve el volumen actual;
  • Los captadores anteriores devuelven -1 cuando no se ha creado el motor.
Los cambios en el estado de reproducción se notifican mediante el evento onAudioFileState.

Secuencias de audio externas

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ámetros

Tipo

Descripción

config

AoqAudioExternalStreamConfig

Configuración de flujo de audio externo. streamId se transporta como un campo de configuración.

streamId

string

Identificador de flujo, definido por el llamador

meta

AoqAudioExternalFrameMeta

Metadatos de fotograma PCM. streamId se transporta como un campo de metadatos.

buffer

Uint8Array

Datos PCM

fadeoutMs

number

Duración del desvanecimiento de salida cuando se borra el búfer, en milisegundos

  • pushAudioExternalStreamData devuelve 110 (búfer de audio externo lleno) cuando la duración almacenada en búfer supera maxBufferDuration.
  • getAudioExternalStreamVolume devuelve el volumen actual. Devuelve -1 cuando el motor no está creado.
  • clearAudioExternalStreamBuffer no tiene valor de retorno en el lado nativo y siempre devuelve 0 en una llamada exitosa.

Mensajes en tiempo real

sendDataMsg(data: Uint8Array | string): number
Envía un mensaje de datos en tiempo real. Si pasa un string, se codifica internamente en UTF-8 en un Buffer antes de enviarse. Los mensajes del par se notifican a través del callback de evento onDataMsg.

Devoluciones de llamada de cuadros de audio

setAudioFrameObserver(enable: boolean): number
enableAudioFrameObserver(params: AoqAudioObserverParams): number

Parámetros

Tipo

Descripción

enable

boolean

true registra el observador de fotogramas de audio integrado; false lo anula

params

AoqAudioObserverParams

Especificar la posición de la devolución de llamada, el estado de activación/desactivación y el formato de la devolución de llamada

Uso: Primero, llame a setAudioFrameObserver(true) para registrar el observador. Luego, llame a enableAudioFrameObserver para cada posición que necesite. Los datos se entregan a través de los eventos correspondientes.
engine.setAudioFrameObserver(true)
engine.enableAudioFrameObserver({
  enabled: true,
  audioSource: AoqAudioSource.AoqAudioSourceCaptured,
  sampleRate: 48000,
  channels: 1
})
engine.on('onCapturedAudioFrame', (frame) => { /* frame.buffer contains PCM data */ })
El observador de cuadros en el lado de Electron solo admite el modo solo lectura y no permite escribir datos de cuadro de vuelta en el callback (el lado nativo está fijado en ReadOnly).

Indicación de volumen de audio local

enableLocalAudioVolumeIndication(config: AoqAudioVolumeIndicationConfig): number
Habilita o deshabilita la indicación de volumen de captura local. Si config.interval <= 0, la devolución de llamada se deshabilita. Una vez habilitada, onLocalAudioVolumeIndication se activa en el intervalo especificado por config.interval. Debe llamar a este método después de startAudioCapture() para obtener los datos de volumen.

Devoluciones de llamada de cuadros de video

setVideoFrameObserver(enable: boolean): number
enableVideoFrameObserver(params: AoqVideoObserverParams): number

Parámetros

Tipo

Descripción

enable

boolean

true registra el observador de fotogramas de video integrado; false lo anula

params

AoqVideoObserverParams

Especificar la posición de la devolución de llamada, el estado de activación/desactivación, el formato de píxel y la política de alineación

Los datos de la devolución de llamada se entregan como AoqVideoFrameEvent a través de onCapturedVideoFrame / onPreEncodeVideoFrame / onRemoteVideoFrame. Para I420, buffer corresponde a los planos Y / U / V concatenados según el stride. Otros formatos empaquetados se transmiten como los datos originales. Asimismo, solo se admite el modo de solo lectura.

Renderizado de video (YUVCanvasRenderer)

El renderizador de software integrado en el SDK.
import { YUVCanvasRenderer } from 'aoq-electron-sdk';

class YUVCanvasRenderer {
  bind(canvas: HTMLCanvasElement): void
  unbind(): void
  get bound(): boolean
  drawFrame(frame: AoqVideoFrameEvent): void
}

API

Descripción

bind

Vincular un lienzo (vincular de nuevo reemplaza el destino)

unbind

Desvincular y borrar la imagen

bound

Especifica si se ha establecido una vinculación

drawFrame

Dibuja un cuadro; solo se admite I420, y el método retorna silenciosamente para formatos que no sean I420 o cuando el tamaño o la longitud del búfer son insuficientes

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 el modo de relleno de renderizado (como estirar o recortar), utilice la propiedad CSS object-fit para controlar el canvas.

Eventos del motor (IAoqEngineEvents)

El motor hereda de EventEmitter<IAoqEngineEvents>. Los eventos son la salida unificada para todas las notificaciones asíncronas del SDK y se asignan uno a uno con los callbacks nativos de AoqEngineEventListener. No necesita registrar los eventos que no le interesen.
engine.on('onError', (code, message) => {})
engine.off('onError', handler)
engine.once('onStats', (stats) => {})
engine.removeAllListeners()

onError

onError: (code: number, message: string) => void
Devolución de llamada de error del motor. code corresponde a un valor AoqErrorCode (consulte 3.3).

onWarning

onWarning: (code: number, message: string) => void
Devolución de llamada de advertencia del motor. code corresponde a un valor AoqWarningCode (consulte 3.3).

onConnectionStatusChange

onConnectionStatusChange: (status: AoqConnectionStatus) => void
Callback de cambio de estado de conexión. Transiciones de estado: Desconectado -> Conectando -> Conectado / Fallido -> Desconectado.

onStats

onStats: (stats: AoqStats) => void
Callback de estadísticas del motor. El SDK reporta periódicamente estadísticas de publicación y suscripción de audio y video, así como estadísticas de red, que puede utilizar para monitorear la calidad de la llamada y el estado de la red en tiempo real, y para diagnosticar problemas de audio y video.

Parámetros

Tipo

Descripción

stats

AoqStats

Estadísticas de publicación y suscripción, y estadísticas de red para mensajes de audio, video y datos

onAudioDeviceStateChanged

onAudioDeviceStateChanged: (state: AoqAudioDeviceState) => void
Devolución de llamada para cambios en el estado de la operación de captura y reproducción del dispositivo de audio.

onAudioDeviceRouteChanged

onAudioDeviceRouteChanged: (routeType: number) => void
Callback de cambio de ruta de salida de audio. routeType corresponde a un valor de AoqAudioDeviceRouteType (consulte 3.4).

onAudioFileState

onAudioFileState: (state: AoqAudioFileState) => void
Callback para el estado de reproducción de archivos de audio.

onLocalAudioVolumeIndication

onLocalAudioVolumeIndication: (volume: AoqAudioVolume) => void
Devolución de llamada de indicación de volumen de captura local. Para habilitarla, llame a enableLocalAudioVolumeIndication.

onVideoDeviceStateChanged

onVideoDeviceStateChanged: (state: AoqVideoDeviceState) => void
Devolución de llamada para cambios en el estado de la operación de captura del dispositivo de video.

onDataMsg

onDataMsg: (data: Uint8Array) => void
Callback para un mensaje de datos en tiempo real recibido. data es un Buffer copiado en el lado nativo y puede conservarse de forma segura de manera asíncrona. Para mensajes de texto, utilice Buffer.from(data).toString() para convertir los datos a una cadena.

Eventos de cuadros de audio

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 */
Debe llamar primero a setAudioFrameObserver(true) y enableAudioFrameObserver para habilitarlo.

onCapturedAudioFrame

Se invoca cuando se captura un cuadro de audio sin procesar. El cuadro contiene datos PCM no procesados.
engine.on('onCapturedAudioFrame', (frame: AoqAudioFrameEvent) => { ... })
ParámetroTipoDescripción
frameAoqAudioFrameEventDatos de fotograma de audio capturado. Los datos PCM están en frame.buffer.
Valor de retorno: None (void). Electron proporciona acceso de solo lectura.
frame.buffer es un Uint8Array que hace referencia a memoria gestionada por el SDK y solo es válido durante el callback. Copie los datos antes de utilizarlos de forma asíncrona.

onProcessCapturedAudioFrame

Se invoca para un cuadro de audio después del procesamiento 3A: cancelación de eco acústico, supresión de ruido y control automático de ganancia.
engine.on('onProcessCapturedAudioFrame', (frame: AoqAudioFrameEvent) => { ... })
ParámetroTipoDescripción
frameAoqAudioFrameEventDatos de fotograma de audio después del procesamiento 3A. Los datos PCM están en frame.buffer.
Valor de retorno: None (void). Electron proporciona acceso de solo lectura.
frame.buffer es un Uint8Array que hace referencia a memoria gestionada por el SDK y solo es válido durante el callback. Copie los datos antes de utilizarlos de forma asíncrona.

onPublishAudioFrame

Se invoca para un cuadro de audio antes de su publicación. El cuadro se codificará y se enviará al servidor Relay.
engine.on('onPublishAudioFrame', (frame: AoqAudioFrameEvent) => { ... })
ParámetroTipoDescripción
frameAoqAudioFrameEventDatos de fotograma de audio antes de la publicación. Los datos PCM están en frame.buffer.
Valor de retorno: None (void). Electron proporciona acceso de solo lectura.
frame.buffer es un Uint8Array que hace referencia a memoria gestionada por el SDK y solo es válido durante el callback. Copie los datos antes de utilizarlos de forma asíncrona.

onPlaybackAudioFrame

Se llama para un fotograma de audio remoto antes de la reproducción. El fotograma ha sido decodificado pero aún no mezclado.
engine.on('onPlaybackAudioFrame', (frame: AoqAudioFrameEvent) => { ... })
ParámetroTipoDescripción
frameAoqAudioFrameEventDatos de fotograma de audio remoto antes de la reproducción. Los datos PCM están en frame.buffer.
Valor de retorno: None (void). Electron proporciona acceso de solo lectura.
frame.buffer es un Uint8Array que hace referencia a memoria gestionada por el SDK y solo es válido durante el callback. Copie los datos antes de utilizarlos de forma asíncrona.

Eventos de cuadros de video

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 */
Debe llamar primero a setVideoFrameObserver(true) y enableVideoFrameObserver para habilitarlo. Los eventos de cuadro son de solo lectura. Las modificaciones a buffer en el callback no se escriben de vuelta en el SDK.
Evite cálculos pesados en los callbacks de eventos: los callbacks nativos se despachan al hilo principal de JS a través de un hilo asíncrono, y las operaciones que consumen mucho tiempo en eventos de cuadro de alta frecuencia causan acumulación.

onCapturedVideoFrame

Se invoca cuando se captura un cuadro de video sin procesar, antes del preprocesamiento. El cuadro proviene de la cámara o de la captura de pantalla y no ha sido preprocesado.
engine.on('onCapturedVideoFrame', (frame: AoqVideoFrameEvent) => { ... })
ParámetroTipoDescripción
frameAoqVideoFrameEventDatos de fotograma de video capturado
Valor de retorno: None (void). Electron proporciona acceso de solo lectura.
frame.buffer es un Uint8Array que hace referencia a memoria gestionada por el SDK y solo es válido durante el callback. Copie los datos antes de utilizarlos de forma asíncrona.

onPreEncodeVideoFrame

Se invoca para un cuadro de video después del preprocesamiento y antes de la codificación.
engine.on('onPreEncodeVideoFrame', (frame: AoqVideoFrameEvent) => { ... })
ParámetroTipoDescripción
frameAoqVideoFrameEventDatos de fotograma de video antes de la codificación
Valor de retorno: None (void). Electron proporciona acceso de solo lectura.
frame.buffer es un Uint8Array que hace referencia a memoria gestionada por el SDK y solo es válido durante el callback. Copie los datos antes de utilizarlos de forma asíncrona.

onRemoteVideoFrame

Se invoca para un cuadro de video remoto después de la decodificación y antes de la renderización.
engine.on('onRemoteVideoFrame', (frame: AoqVideoFrameEvent) => { ... })
ParámetroTipoDescripción
frameAoqVideoFrameEventDatos de fotograma de video remoto decodificado
Valor de retorno: None (void). Electron proporciona acceso de solo lectura.
frame.buffer es un Uint8Array que hace referencia a memoria gestionada por el SDK y solo es válido durante el callback. Copie los datos antes de utilizarlos de forma asíncrona.

Tipos de datos y enumeraciones

Tipos comunes

AoqCreateConfig

Campo

Tipo

Obligatorio

Valor predeterminado

Descripción

workDir

string

No

""

Directorio de trabajo del SDK (para registros y archivos temporales)

enableDumpAudio

boolean

No

false

Especifica si se deben guardar los datos de audio (para depuración)

extras

string

No

""

Parámetros extendidos (una cadena JSON)

AoqConnectConfig

Campo

Tipo

Obligatorio

Valor predeterminado

Descripción

token

string

Sí

-

Token de autenticación de conexión

sid

string

Sí

-

ID de sesión

certFingerprint

string

No

""

Huella digital del certificado del servidor

workspaceIdHash

string

No

None

Hash de ID del espacio de trabajo. Una cadena vacía equivale a no pasar el parámetro.

relayEndpoints

Array

Sí

-

Lista de puntos de acceso de retransmisión

publishTracks

Array

Sí

-

Lista de pistas publicadas locales

subscribeTracks

Array

Sí

-

Lista de pistas suscritas locales

AoqRelayEndpoint

Campo

Tipo

Obligatorio

Valor predeterminado

Descripción

routeIndex

number

No

-1

Índice de ruta

endpoint

string

Sí

-

Nombre de dominio o dirección IP del servidor de retransmisión

port

number

Sí

-

Puerto del servidor de retransmisión

tcpPortnumberNo0Puerto de reserva TCP. Un valor de 0 utiliza el puerto predeterminado del SDK, 443.

AoqTrackParam

Campo

Tipo

Obligatorio

Valor predeterminado

Descripción

trackType

AoqTrackType

Sí

-

Tipo de pista

trackMode

AoqTrackMode

No

AoqTrackModeSegment

Modo de transmisión o sin transmisión. Efectivo solo para el enlace descendente de audio.

Tipos de estadísticas

AoqStats

Un resumen de estadísticas del motor, que se reporta periódicamente a través de onStats. Un campo de matriz es una matriz vacía cuando no tiene datos, y networkStats no se entrega cuando no tiene datos.

Campo

Tipo

Descripción

audioPublishStats

Array

Estadísticas de publicación de audio

videoPublishStats

Array

Estadísticas de publicación de video

dataMsgPublishStats

Array

Estadísticas de publicación de mensajes de datos

audioSubscribeStats

Array

Estadísticas de suscripción de audio

videoSubscribeStats

Array

Estadísticas de suscripción de video

dataMsgSubscribeStats

Array

Estadísticas de suscripción de mensajes de datos

networkStats

AoqNetworkStats

Estadísticas de red

AoqAudioPublishStats

Campo

Tipo

Descripción

trackType

AoqTrackType

Tipo de pista

bitrate

number

Tasa de bits, en bit/s

bytes

number

Bytes enviados acumulados

encodeVolume

number

Volumen de codificación del flujo de publicación

AoqAudioSubscribeStats

Campo

Tipo

Descripción

trackType

AoqTrackType

Tipo de pista

bitrate

number

Tasa de bits, en bit/s

bytes

number

Bytes acumulados recibidos

playVolume

number

Volumen de reproducción

AoqVideoPublishStats

Campo

Tipo

Descripción

trackType

AoqTrackType

Tipo de pista

bitrate

number

Tasa de bits, en bit/s

bytes

number

Bytes enviados acumulados

encodeFps

number

Tasa de cuadros de codificación

AoqVideoSubscribeStats

Campo

Tipo

Descripción

trackType

AoqTrackType

Tipo de pista

bitrate

number

Tasa de bits, en bit/s

bytes

number

Bytes acumulados recibidos

decodeFps

number

Tasa de fotogramas de decodificación

renderFps

number

Tasa de fotogramas de renderizado

AoqDataMsgPublishStats / AoqDataMsgSubscribeStats

Campo

Tipo

Descripción

trackType

AoqTrackType

Tipo de pista

bitrate

number

Tasa de bits, en bit/s

bytes

number

Bytes acumulados enviados y recibidos

AoqNetworkStats

Campo

Tipo

Descripción

sendBitrate

number

Tasa de bits de envío, en bit/s

sendBytes

number

Bytes enviados acumulados

recvBitrate

number

Tasa de bits de recepción, en bit/s

recvBytes

number

Bytes acumulados recibidos

loss

number

Tasa de pérdida de paquetes, de 0 a 100

rtt

number

Latencia de ida y vuelta, en ms

Enumeraciones

AoqTrackType

Valor de enumeración

Valor

Descripción

AoqTrackTypeAudio

0

Pista de audio

AoqTrackTypeVideo

1

Pista de video

AoqTrackTypeData

2

Pista de mensajes de datos

AoqTrackTypeScreen3Pista de pantalla compartida. Solo enlace ascendente.

AoqTrackMode

Valor de enumeración

Valor

Descripción

AoqTrackModeSegment

0

Segmentado: los datos se empaquetan y entregan en segmentos semánticos, como una oración.

AoqTrackModeStream

1

Transmisión: los datos se entregan de forma continua.

AoqEncoderType

Valor de enumeración

Valor

Descripción

AoqEncoderTypeUnknown

0

Formato desconocido

AoqEncoderTypeAudioPCM

1

Audio PCM

AoqEncoderTypeAudioOpus

2

Audio Opus (basado en complemento; requiere PluginOpus)

AoqEncoderTypeVideoH264

3

Video H.264

AoqEncoderTypeVideoJpeg

4

Video JPEG

AoqEncoderTypeDataText

5

Texto del mensaje

AoqConnectionStatus

Valor de enumeración

Valor

Descripción

AoqConnectionStatusDisconnected

0

Desconectado

AoqConnectionStatusConnecting

1

Conectando

AoqConnectionStatusConnected

2

Conectado

AoqConnectionStatusFailed

3

Error de conexión

AoqMirrorMode

Valor de enumeración

Valor

Descripción

AoqMirrorModeDisabled

0

Deshabilitar espejo

AoqMirrorModeEnabled

1

Habilitar espejo

AoqOrientationMode

Valor de enumeración

Valor

Descripción

AoqOrientationModeAuto

0

Auto-fit

AoqOrientationModePortrait

1

Vertical

AoqOrientationModeLandscape

2

Horizontal

AoqErrorCode

Los siguientes nombres son códigos de error del motor C++ subyacente. La API de TypeScript de Electron no exporta esta enumeración. El argumento code de onError es un number. Los códigos de error se definen en la capa nativa. Tanto el parámetro code de onError como los valores de retorno de la API utilizan estos valores (la capa TS no los exporta como un enum).

Valor de enumeración

Valor

Descripción

AoqECOK

0

Éxito

AoqECParamInvalid

1

Parámetro no válido

AoqECStateInvalid

2

Estado no válido

AoqECUnSupport

3

No compatible con la plataforma actual o en el modo actual

AoqECAudio

100

Error genérico de audio

AoqECAudioExternalBufferFull

110

El búfer de audio externo está lleno

AoqECAudioDevice

120

Error genérico de dispositivo de audio

AoqECAudioDeviceRecordingAuthFailed

121

Permiso de grabación no concedido

AoqECAudioDeviceRecordingOccupied

122

El dispositivo de grabación está en uso

AoqECAudioDeviceRecordingBackgroundStart

123

Error al iniciar la grabación en segundo plano

AoqECAudioDeviceRecordingStartFail

124

Error al iniciar la grabación

AoqECAudioDevicePlayoutOccupied

125

El dispositivo de reproducción está en uso

AoqECAudioDevicePlayoutBackgroundStart

126

Error al iniciar la reproducción en segundo plano

AoqECAudioDevicePlayoutStartFail

127

Error al iniciar la reproducción

AoqECVideo

200

Error genérico de video

AoqECVideoExternalBufferFull

210

El búfer de video externo está lleno

AoqECVideoExternalCaptureNotEnabled

211

La captura de video externa no está habilitada

AoqECVideoExternalEncoderNotEnabled

212

La codificación de video externa no está habilitada

AoqECVideoDevice

220

Error genérico de dispositivo de video

AoqECVideoDeviceCameraOpenFail

221

Error al abrir la cámara

AoqECVideoDeviceCameraAuthFailed

222

Permiso de cámara no concedido

AoqECVideoDeviceCameraOccupied

223

La cámara está en uso

AoqECVideoDeviceCameraRunningError

224

Excepción de tiempo de ejecución de la cámara

AoqECVideoCodec

230

Error genérico de códec de video

AoqECVideoCodecEncoderInitFail

231

Error al inicializar el codificador de video

AoqECVideoRender

240

Error genérico de renderizado de video

AoqECVideoRenderCreateFail

241

Error al crear el renderizado de video

AoqECVideoRenderDrawError

242

Error de dibujo en el renderizado de video

AoqECScreen300Error general de uso compartido de pantalla
AoqECScreenAuthFailed310Permiso de uso compartido de pantalla denegado
AoqECScreenStartFailed311Error al iniciar el uso compartido de pantalla
AoqECAudioDeviceEarpieceRequiresVoipMode128El auricular requiere el modo VoIP. Se aplica a plataformas móviles y generalmente no se activa en Electron.
Además de los códigos de error nativos anteriores, la capa de Electron devuelve -1 cuando el motor no está creado o ha sido destruido, o cuando un parámetro no es un JSON válido.

AoqWarningCode

Valor de enumeración

Valor

Descripción

AoqWCOK

0

Sin advertencia

AoqWCAudio

100

Advertencia genérica de audio

AoqWCAudioHowling

101

Acople de audio detectado

AoqWCAudioDevice

120

Advertencia genérica de dispositivo de audio

AoqWCAudioDeviceMicEnumerateError

121

Error de enumeración de micrófono

AoqWCAudioDeviceMicStartTimeout

122

Se agotó el tiempo de inicio del micrófono

AoqWCAudioDeviceRecordingError

123

Error durante la grabación

AoqWCAudioDeviceSpeakerEnumerateError

124

Error de enumeración de altavoces

AoqWCAudioDeviceSpeakerStartTimeout

125

Se agotó el tiempo de inicio del altavoz

AoqWCAudioDevicePlayoutError

126

Error durante la reproducción

AoqWCVideo

200

Advertencia genérica de video

AoqWCVideoCameraEnumerateError

201

Error de enumeración de cámaras

AoqWCVideoEncoderSwitched

202

Codificador de video cambiado

AoqWCVideoRenderDowngrade

203

Renderizado de video degradado

Tipos de audio

AoqAudioCaptureConfig

Campo

Tipo

Obligatorio

Valor predeterminado

Descripción

isExternal

boolean

No

false

Especifica si se debe usar el modo de captura externa

channel

number

No

1

Número de canales de captura de audio. Se admiten 1 y 2.

AoqAudioPlaybackConfig

Campo

Tipo

Obligatorio

Valor predeterminado

Descripción

isExternal

boolean

No

false

Especifica si se debe usar el modo de reproducción externa

channel

number

No

1

Número de canales de reproducción de audio. Se admiten 1 y 2.

AoqAudioCodecConfig

Campo

Tipo

Obligatorio

Valor predeterminado

Descripción

trackType

AoqTrackType

No

AoqTrackTypeAudio

Tipo de pista

codecType

AoqEncoderType

No

AoqEncoderTypeAudioOpus

Formato de códec

sampleRate

number

No

48000

Tasa de muestreo, en Hz. Para codificación, se admiten Opus 8/16/48K y PCM 8/16/32/48K. Para decodificación, se admite adicionalmente 24K, pero solo en modo Segment.

channel

number

No

1

Número de canales. Se admiten 1 y 2.

bitrate

number

No

32000

Tasa de bits, en bit/s

AoqAudioDeviceRouteType

La siguiente tabla enumera los valores válidos de routeType para onAudioDeviceRouteChanged. Estos valores son definidos por la capa nativa y no son exportados como un enum por la capa TypeScript.

Valor de enumeración

Valor

Descripción

AoqAudioDeviceRouteDefault

0

Ruta predeterminada

AoqAudioDeviceRouteHeadset

1

Auriculares con micrófono

AoqAudioDeviceRouteEarpiece

2

Receiver

AoqAudioDeviceRouteHeadsetNoMic

3

Auriculares sin micrófono

AoqAudioDeviceRouteSpeakerPhone

4

Altavoz

AoqAudioDeviceRouteUsb

5

Dispositivo de audio USB

AoqAudioDeviceRouteBluetooth

6

Modo Bluetooth SCO

AoqAudioDeviceRouteBluetoothA2dp

7

Modo Bluetooth A2DP

AoqAudioDeviceStateCode

Valor de enumeración

Valor

Descripción

AoqAudioDeviceNone

0

Sin estado

AoqAudioDeviceRecordStarting

1

Iniciando captura

AoqAudioDeviceRecordStarted

2

Captura iniciada

AoqAudioDeviceRecordStopping

3

Deteniendo captura

AoqAudioDeviceRecordStopped

4

Captura detenida

AoqAudioDeviceRecordFail

5

Error en la captura

AoqAudioDevicePlayStarting

6

Iniciando reproducción

AoqAudioDevicePlayStarted

7

Reproducción iniciada

AoqAudioDevicePlayStopping

8

Deteniendo reproducción

AoqAudioDevicePlayStopped

9

Reproducción detenida

AoqAudioDevicePlayFail

10

Error en la reproducción

AoqAudioDeviceState

Campo

Tipo

Descripción

state

AoqAudioDeviceStateCode

Estado de operación del dispositivo

reason

number

Código de motivo de error. Consulte AoqErrorCode.

Tipos de archivos de audio

AoqAudioFileMixConfig

Campo

Tipo

Obligatorio

Valor predeterminado

Descripción

fileId

string

Sí

-

Identificador de archivo. Las llamadas posteriores a la API lo utilizan para ubicar el archivo.

fileName

string

Sí

-

Nombre del archivo (incluida la ruta)

cycles

number

No

-1

Número de bucles. -1 indica un bucle ilimitado.

startPosMs

number

No

0

Posición de inicio de reproducción, en milisegundos

publishVolume

number

No

100

Volumen de publicación. Valores válidos: de 0 a 100.

playoutVolume

number

No

100

Volumen de reproducción. Valores válidos: de 0 a 100.

AoqAudioFileStateCode

Valor de enumeración

Valor

Descripción

AoqAudioFileNone

0

Sin estado

AoqAudioFileStarted

1

Reproducción iniciada

AoqAudioFileStopped

2

Reproducción detenida

AoqAudioFilePaused

3

Reproducción en pausa

AoqAudioFileResumed

4

Reproducción reanudada

AoqAudioFileEnded

5

Reproducción finalizada

AoqAudioFileBuffering

6

Almacenamiento en búfer de reproducción

AoqAudioFileBufferingEnd

7

Almacenamiento en búfer finalizado

AoqAudioFileFailed

8

Error en la reproducción

AoqAudioFileErrorCode

La siguiente tabla enumera los valores válidos de AoqAudioFileState.errorCode. Estos valores son definidos por la capa nativa y se entregan como valores number por la capa TypeScript.

Valor de enumeración

Valor

Descripción

AoqAudioFileNoError

0

Sin error

AoqAudioFileOpenFailed

1

Error al abrir el archivo

AoqAudioFileDecodeFailed

2

Error al decodificar el archivo

AoqAudioFileState

Campo

Tipo

Descripción

fileId

string

Identificador de archivo

stateCode

AoqAudioFileStateCode

Código de estado de reproducción de archivo

errorCode

number

Código de error de archivo. Consulte AoqAudioFileErrorCode.

Tipos de flujo de audio externo

AoqAudioStreamDirection

Valor de enumeración

Valor

Descripción

AoqAudioStreamPublish

0

Publicando flujo

AoqAudioStreamPlayout

1

Flujo de reproducción (reproducción local)

AoqAudioExternalStreamConfig

Campo

Tipo

Obligatorio

Valor predeterminado

Descripción

streamId

string

Sí

-

Identificador de flujo

trackType

AoqTrackType

No

AoqTrackTypeAudio

Tipo de pista de audio

codecType

AoqEncoderType

No

AoqEncoderTypeAudioPCM

Formato de flujo de audio. Actualmente se admite PCM.

channels

number

No

1

Número de canales. Está limitado por el códec del flujo de publicación. Se admiten 1 y 2.

sampleRate

number

No

48000

Frecuencia de muestreo, en Hz. Se admiten 8, 12, 16, 24, 32, 44.1, 48, 64, 88.2, 96, 176.4 y 192K.

playoutVolume

number

No

100

Volumen de reproducción. Valores válidos: de 0 a 100.

publishVolume

number

No

100

Volumen de publicación. Valores válidos: de 0 a 100.

maxBufferDuration

number

No

600000

Duración máxima del búfer, en milisegundos. Valores válidos: 100 y superiores. Si la duración supera este valor, el envío falla.

enable3A

boolean

No

false

Especifica si se debe aplicar el procesamiento 3A al PCM de entrada

AoqAudioExternalFrameMeta

Metadatos de un cuadro de audio externo. Los datos PCM se pasan por separado mediante el parámetro buffer.

Campo

Tipo

Obligatorio

Valor predeterminado

Descripción

streamId

string

Sí

-

Identificador del flujo de audio externo objetivo

numOfSamples

number

Sí

0

Número de muestras (por canal)

bytesPerSample

number

Sí

2

Bytes por muestra

numOfChannels

number

Sí

1

Número de canales

samplesPerSec

number

Sí

48000

Número de muestras por segundo (tasa de muestreo)

pushSequence

number

No

0

Ronda de entrada PCM

timeStamp

number

No

0

Marca de tiempo

AoqAudioFrameEvent

Datos de evento del observador de fotogramas de audio.

Campo

Tipo

Descripción

trackType

AoqTrackType

Tipo de pista

numOfSamples

number

Número de muestras (por canal)

bytesPerSample

number

Bytes por muestra

numOfChannels

number

Número de canales

samplesPerSec

number

Número de muestras por segundo (tasa de muestreo)

timeStamp

number

Marca de tiempo

autoGenMute

boolean

true indica datos silenciosos generados por el SDK

buffer

Uint8Array

Datos de audio PCM (ya copiados en el lado nativo)

AoqAudioSource

Valor de enumeración

Valor

Descripción

AoqAudioSourceCaptured

0

Datos de audio capturados

AoqAudioSourceProcessCaptured

1

Datos de audio después del procesamiento 3A

AoqAudioSourcePublish

2

Datos de audio que se publicarán (requiere una conexión exitosa)

AoqAudioSourcePlayback

3

Datos de audio a reproducir

AoqAudioObserverParams

Campo

Tipo

Obligatorio

Valor predeterminado

Descripción

enabled

boolean

Sí

false

Habilitar o deshabilitar el callback en esta posición

audioSource

AoqAudioSource

Sí

AoqAudioSourceCaptured

Posición de la devolución de llamada

sampleRate

number

No

48000

Frecuencia de muestreo del audio de devolución de llamada, en Hz. Se realiza un remuestreo si las frecuencias no coinciden.

channels

number

No

1

Número de canales de audio en la devolución de llamada. Se admiten 1 y 2.

El modo de devolución de llamada está fijado en solo lectura. Electron no proporciona modo de lectura y escritura.

AoqAudioVolumeIndicationConfig

Campo

Tipo

Obligatorio

Valor predeterminado

Descripción

interval

number

No

0

Intervalo de callback, en milisegundos. Un valor menor o igual a 0 desactiva el callback. Un valor mayor que 0 y menor que 10 se trata como 10.

smooth

number

No

3

Coeficiente de suavizado de volumen. Un valor mayor produce una salida más suave. Valores válidos: de 0 a 10.

AoqAudioVolume

Campo

Tipo

Descripción

volume

number

Volumen instantáneo suavizado. Valores válidos: de 0 a 255.

Tipos de video

AoqVideoCaptureConfig

Campo

Tipo

Obligatorio

Valor predeterminado

Descripción

width

number

No

1280

Ancho de captura, en píxeles. Este parámetro no tiene efecto cuando isExternal=true.

height

number

No

720

Altura de captura, en píxeles. Este parámetro no tiene efecto cuando isExternal=true.

fps

number

No

15

Tasa de cuadros de captura. Este parámetro no tiene efecto cuando isExternal=true (el ritmo lo determina la entrega de cuadros).

isExternal

boolean

No

false

Especifica si se debe utilizar captura externa. Si es true, la cámara no se abre.

AoqVideoCodecConfig

La codificación y la decodificación comparten la misma estructura (setVideoEncoderConfig / setVideoDecoderConfig).

Campo

Tipo

Obligatorio

Valor predeterminado

Descripción

isExternal

boolean

No

false

Cuando este parámetro es true, el SDK no realiza captura ni codificación, y los cuadros se envían directamente mediante pushExternalVideoEncodedFrame.

trackType

AoqTrackType

No

AoqTrackTypeVideo

Tipo de pista

codecType

AoqEncoderType

No

AoqEncoderTypeVideoH264

Formato de códec

width

number

No

540

Ancho de codificación, en píxeles

height

number

No

960

Altura de codificación, en píxeles

fps

number

No

5

Tasa de cuadros de codificación

bitrate

number

No

500000

Tasa de bits inicial, en bit/s

minBitrate

number

No

128000

Tasa de bits mínima, en bit/s

keyframeInterval

number

No

2

Intervalo de fotogramas clave, en segundos

mirrorMode

AoqMirrorMode

No

AoqMirrorModeDisabled

Modo espejo

orientationMode

AoqOrientationMode

No

AoqOrientationModeAuto

Modo de orientación de video

AoqVideoPixelFormat

Formatos de píxel compatibles con Electron.

Valor de enumeración

Valor

Descripción

AoqVideoPixelFormatUnknown

0

Formato desconocido

AoqVideoPixelFormatI420

1

I420 (formato planar YUV)

AoqVideoPixelFormatNV12

2

NV12 (formato semiplanar YUV)

AoqVideoPixelFormatNV21

3

NV21 (formato semiplanar YUV)

AoqVideoPixelFormatBGRA

4

BGRA (32 bits)

AoqVideoPixelFormatRGBA

5

RGBA (32 bits)

AoqExternalVideoFrameMeta

Metadatos de un cuadro de video sin procesar externo. Los datos de píxeles se pasan por separado mediante el parámetro buffer.

Campo

Tipo

Obligatorio

Valor predeterminado

Descripción

trackType

AoqTrackType

No

AoqTrackTypeVideo

Tipo de pista

; admite el enrutamiento de Video / Screen

format

AoqVideoPixelFormat

Sí

-

Formato de píxel

width

number

Sí

-

Ancho del video, en píxeles

height

number

Sí

-

Altura del video, en píxeles

timeStamp

number

No

0

Marca de tiempo, en milisegundos. Si es 0, el SDK la rellena con la hora local.

Cuando format = I420, buffer debe usar un diseño compacto (stride = width), con los planos Y / U / V concatenados en orden. Para otros formatos empaquetados, pase los bytes completos del cuadro directamente.

AoqVideoCodecType

Valor de enumeración

Valor

Descripción

AoqVideoCodecTypeJPEG

0

Codificación JPEG

AoqExternalVideoEncodedFrameMeta

Metadatos de un cuadro de video codificado externamente. Los datos codificados se pasan por separado mediante el parámetro buffer.

Campo

Tipo

Obligatorio

Valor predeterminado

Descripción

trackType

AoqTrackType

No

AoqTrackTypeVideo

Tipo de pista

; admite el enrutamiento de Video / Screen

codec

AoqVideoCodecType

No

AoqVideoCodecTypeJPEG

Formato de códec

width

number

Sí

-

Ancho, en píxeles

height

number

Sí

-

Alto, en píxeles

timeStamp

number

No

0

Marca de tiempo, en milisegundos. Si es 0, el SDK la rellena con la hora local.

AoqVideoDeviceStateCode

Valor de enumeración

Valor

Descripción

AoqVideoDeviceNone

0

Sin estado

AoqVideoDeviceCaptureStarting

1

Iniciando captura

AoqVideoDeviceCaptureStarted

2

Captura iniciada

AoqVideoDeviceCaptureStopping

3

Deteniendo captura

AoqVideoDeviceCaptureStopped

4

Captura detenida

AoqVideoDeviceCaptureFail

5

Error en la captura (por ejemplo, permiso denegado o dispositivo no disponible)

AoqVideoDeviceState

Campo

Tipo

Descripción

state

AoqVideoDeviceStateCode

Estado de la operación de captura del dispositivo

reason

number

Código de motivo de error. Consulte AoqErrorCode.

AoqScreenShareSourceType

ValorNúmeroDescripción
AoqScreenShareSourceTypeDesktop0Escritorio completo
AoqScreenShareSourceTypeWindow1Una ventana específica

AoqScreenSourceInfo

CampoTipoDescripción
sourceTypeAoqScreenShareSourceTypeTipo de fuente
sourceIdstringID de fuente; devuelto como cadena para preservar la precisión de int64.
sourceNamestringNombre de la fuente
sourceIsSelfbooleanSi la ventana pertenece al proceso actual

AoqScreenCaptureConfig

Todos los campos son opcionales. isExternal tiene como valor predeterminado false.
CampoTipoValor predeterminadoDescripción
isExternalbooleanfalseSi la aplicación suministra tramas de pantalla sin procesar.
sourceIdstring | number—ID de fuente de pantalla. Opcional. Utilice una cadena; los números deben ser enteros seguros.
sourceTypeAoqScreenShareSourceType—Tipo de fuente de pantalla.
Excepto AoqErrorCode, que es una referencia nativa de códigos de error y no se exporta mediante TypeScript, los tipos de esta sección se exportan desde la raíz del paquete, por lo que puede usar directamente import { ... } from 'aoq-electron-sdk'. Las enumeraciones exportadas son tipos enum de TypeScript y están disponibles en tiempo de ejecución, mientras que las interfaces (interface) son únicamente restricciones de tipo. Si no se especifica un campo marcado como opcional, se utiliza el valor predeterminado indicado en la tabla.

Tipos de devolución de llamada de fotograma de video

AoqVideoSource

Valor de enumeración

Valor

Descripción

AoqVideoSourceCaptured

0

Datos de video capturados antes del preprocesamiento

AoqVideoSourcePreEncode

1

Datos de video antes de la codificación, después del preprocesamiento

AoqVideoSourceRemote

2

Datos de video remoto después de la decodificación y antes de la renderización

AoqVideoObserverAlignment

Valor de enumeración

Valor

Descripción

AoqVideoObserverAlignmentDefault

0

Alineación predeterminada

AoqVideoObserverAlignmentEven

1

Alineación de números pares

AoqVideoObserverAlignment4

2

Alineación de 4 bytes

AoqVideoObserverAlignment8

3

Alineación de 8 bytes

AoqVideoObserverAlignment16

4

Alineación de 16 bytes

AoqVideoObserverParams

Campo

Tipo

Obligatorio

Valor predeterminado

Descripción

enabled

boolean

Sí

false

Habilitar o deshabilitar el callback en esta posición

videoSource

AoqVideoSource

Sí

AoqVideoSourceCaptured

Posición de la devolución de llamada

format

AoqVideoPixelFormat

No

AoqVideoPixelFormatI420

Formato de píxel esperado de los datos del callback

alignment

AoqVideoObserverAlignment

No

AoqVideoObserverAlignmentDefault

Política de alineación de ancho

mirrorApplied

boolean

No

false

Especifica si se deben reflejar los datos del callback

trackTypeAoqTrackTypeNoAoqTrackTypeVideoPista de video a observar. Admite solo Video y Screen.
El modo de callback está fijado en solo lectura. Electron no proporciona modo de lectura-escritura. Seleccione I420 cuando utilice el YUVCanvasRenderer integrado para el renderizado.

AoqVideoFrameEvent

Datos de evento del observador de fotogramas de video.

Campo

Tipo

Descripción

trackType

AoqTrackType

Tipo de pista

format

AoqVideoPixelFormat

Formato de píxel

width

number

Ancho, en píxeles

height

number

Alto, en píxeles

strideY

number

Paso del plano Y (efectivo solo para I420)

strideU

number

Paso del plano U (efectivo solo para I420)

strideV

number

Paso del plano V (efectivo solo para I420)

timeStamp

number

Marca de tiempo, en milisegundos

buffer

Uint8Array

Datos del cuadro. Para I420, son los planos Y / U / V concatenados según el stride. Otros formatos empaquetados se transmiten como los datos originales.

Tipos de mensajes de datos

Electron no utiliza el tipo contenedor AoqDataMsg. Los mensajes de datos se envían y reciben directamente como datos binarios:

Dirección

Tipo

Descripción

Send

Uint8Array o string

sendDataMsg(data). Las cadenas se codifican en UTF-8.

Receive

Uint8Array

onDataMsg(data). Los datos ya están copiados en el lado nativo y pueden conservarse de forma asíncrona.