Skip to main content

Referencia de la API de Python del SDK de cliente AOQ para Linux

Este tema describe las API de Python, las devoluciones de llamada y los tipos de datos del SDK de cliente AOQ para Linux.

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.
La plataforma Linux proporciona API a través del módulo de Python aoq_client_sdk. Todas las devoluciones de llamada se activan en hilos nativos, y usted debe garantizar la seguridad de los hilos por sí mismo.

Índice de API

Ciclo de vida del motor

APIDescripción
create_engineCrear una instancia del motor (singleton)
destroyDestruir la instancia del motor
get_versionObtener la versión del SDK
connectConectar al servidor Relay
disconnectDesconectar del servidor

Gestión de dispositivos de audio

APIDescripción
start_audio_captureAbrir el dispositivo de captura de audio (micrófono)
stop_audio_captureCerrar el dispositivo de captura de audio
mute_audio_captureSilenciar o reactivar la captura de audio
start_audio_playerIniciar renderizado de audio (reproducción de audio remoto)
stop_audio_playerDetener la renderización de audio
pause_audio_playerPausar el renderizado de audio, con desvanecimiento opcional
resume_audio_playerReanudar el renderizado de audio, con aparición gradual opcional
interrupt_audio_playerInterrumpir la sesión de audio actual

Configuración de codificación de audio

APIDescripción
set_audio_encoder_configEstablecer parámetros de codificación de audio
set_audio_decoder_configEstablecer parámetros de decodificación de audio

Gestión de dispositivos de video

APIDescripción
start_video_captureAbrir el dispositivo de captura de video (cámara)
stop_video_captureCerrar el dispositivo de captura de video
set_local_viewEstablecer o eliminar la ventana de renderizado de video local
set_remote_viewEstablecer o eliminar la ventana de renderizado de video remoto

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

APIDescripción
set_video_encoder_configEstablecer parámetros de codificación de video
set_video_decoder_configEstablecer parámetros de decodificación de video
push_external_video_frameEnviar tramas de video capturadas externamente
push_external_video_encoded_frameEnviar tramas de video codificadas externamente

Control de transmisión de flujo de medios

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

Reproducción de archivos de audio

APIDescripción
start_audio_fileIniciar la reproducción y publicación de un archivo de audio local
stop_audio_fileDetener la reproducción del archivo de audio
pause_audio_filePausar la reproducción del archivo de audio
resume_audio_fileReanudar la reproducción del archivo de audio
get_audio_file_durationObtener la duración total del archivo de audio
get_audio_file_current_positionObtener la posición de reproducción actual del archivo de audio
set_audio_file_position_millisBuscar una posición en el archivo de audio
set_audio_file_volumeEstablecer el volumen del archivo de audio
get_audio_file_volumeObtener el volumen actual del archivo de audio

Secuencias de audio externas

APIDescripción
add_audio_external_streamAgregar un flujo de audio externo
remove_audio_external_streamEliminar un flujo de audio externo
push_audio_external_stream_dataEnviar datos de audio PCM externos
set_audio_external_stream_volumeEstablecer el volumen de la secuencia de audio externa
get_audio_external_stream_volumeObtener el volumen de la secuencia de audio externa
clear_audio_external_stream_bufferBorrar el búfer de la secuencia de audio externa

Mensajes en tiempo real

APIDescripción
send_data_msgEnviar un mensaje de datos en tiempo real

Devoluciones de llamada de cuadros de audio

APIDescripción
set_audio_frame_observerEstablecer el listener del callback de tramas de audio
enable_audio_frame_observerHabilitar o deshabilitar callbacks de tramas de audio en una etapa específica

Devoluciones de llamada de cuadros de video

APIDescripción
set_video_frame_observerEstablecer el listener del callback de tramas de video
enable_video_frame_observerHabilitar o deshabilitar callbacks de tramas de video en una etapa específica

Interfaces de devolución de llamada

APIDescripción
on_errorCallback de error del motor
on_connection_status_changeCallback de cambio de estado de conexión
on_data_msgCallback de mensaje de datos en tiempo real recibido

Devoluciones de llamada de IAudioFrameObserver

APIDescripción
on_captured_audio_frameSe invoca cuando se captura un cuadro de audio sin procesar. El cuadro contiene datos PCM no procesados.
on_process_captured_audio_frameInvocado para una trama de audio después del procesamiento 3A (AEC/AGC/ANS).
on_publish_audio_frameSe invoca para un cuadro de audio antes de la publicación, inmediatamente antes de la codificación y la transmisión.
on_playback_audio_frameInvocado para una trama de audio remota decodificada antes de la reproducción.

Devoluciones de llamada de IVideoFrameObserver

APIDescripción
on_captured_video_frameInvocado cuando se captura una trama de video sin procesar. La trama aún no ha sido preprocesada.
on_pre_encode_video_frameInvocado para una trama de video sin procesar después del preprocesamiento y antes de la codificación.
on_remote_video_frameInvocado para una trama de video remota sin procesar después de la decodificación y antes de la renderización.

Funciones de utilidad

APIDescripción
load_libraryEspecificar y cargar manualmente la biblioteca compartida nativa

Detalles de la API

Ciclo de vida del motor

create_engine

Crea la instancia del motor (método de clase). El SDK mantiene el motor como un singleton global, por lo que llamar a este método nuevamente devuelve la instancia existente. Después de destroy, debe llamar a create_engine nuevamente antes de poder continuar utilizando el motor.
@classmethod
def create_engine(cls, config: AoqCreateConfig, listener: AoqEngineEventListener) -> "AoqClientEngine"

Parámetros

Tipo

Descripción

config

AoqCreateConfig

Configuración de creación del motor

listener

AoqEngineEventListener

Listener de callbacks de eventos del motor

Devuelve: La instancia del motor AoqClientEngine. Si la creación falla, se lanza una RuntimeError.

destroy

Destruye la instancia del motor (método de clase) y libera todos los recursos.
@classmethod
def destroy(cls) -> int
Devuelve: 0 en caso de éxito; distinto de cero en caso de fallo.

get_version

Obtiene la versión actual del SDK (método estático).
@staticmethod
def get_version() -> str
Devuelve: La cadena de versión, como "1.0.0".

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.
def connect(self, config: AoqConnectConfig) -> int

Parámetros

Tipo

Descripción

config

AoqConnectConfig

Configuración de conexión, que incluye el token, el SID y la lista de puntos de acceso de retransmisión

Devuelve: 0 indica que la llamada se despacha y se ejecuta de forma asíncrona; un valor distinto de cero indica que la validación de parámetros falló.

disconnect

Desconecta del servidor y libera los recursos asociados con la conexión.
def disconnect(self) -> int
Devuelve: 0 indica que la llamada se despacha y se ejecuta de forma asíncrona; un valor distinto de cero indica un fallo.

Gestión de dispositivos de audio

start_audio_capture

def start_audio_capture(self, config: AoqAudioCaptureConfig) -> int
En Linux, este método es una implementación vacía. Devuelve 0 pero no abre una tarjeta de sonido ni un micrófono. Proporcione entrada de audio a través de un flujo de audio externo.

stop_audio_capture

def stop_audio_capture(self) -> int
Este método no tiene ningún efecto real porque la compilación de Linux no establece el estado del dispositivo de captura de audio.

mute_audio_capture

def mute_audio_capture(self, mute: bool) -> int
La compilación de Linux no admite la captura de micrófono. Este método no puede controlar un dispositivo de captura de audio real.

start_audio_player

def start_audio_player(self, config: AoqAudioPlaybackConfig) -> int
En Linux, este método es una implementación vacía. Devuelve 0 pero no abre una tarjeta de sonido ni un altavoz. Obtenga la salida de audio a través de una devolución de llamada de fotograma de audio y reprodúzcala usted mismo.

stop_audio_player / pause_audio_player / resume_audio_player

def stop_audio_player(self) -> int
def pause_audio_player(self, fade_ms: int = 0) -> int
def resume_audio_player(self, fade_ms: int = 0) -> int
La compilación de Linux no admite la reproducción por altavoces, por lo que estos métodos no pueden controlar un dispositivo de reproducción de audio real. fade_ms especifica la duración del fundido de salida o de entrada en milisegundos. 0 indica ejecución inmediata.

interrupt_audio_player

def interrupt_audio_player(self, track_type: int, fade_ms: int = 0) -> int
Interrumpe la sesión de audio actual.

Configuración de codificación de audio

def set_audio_encoder_config(self, config: AoqAudioCodecConfig) -> int
def set_audio_decoder_config(self, config: AoqAudioCodecConfig) -> int

Gestión de dispositivos de video

def start_video_capture(self, config: AoqVideoCaptureConfig) -> int
def stop_video_capture(self) -> int
def set_local_view(self, track_type: int, canvas: Optional[AoqVideoCanvas]) -> int
def set_remote_view(self, track_type: int, canvas: Optional[AoqVideoCanvas]) -> int
La compilación para Linux no admite la captura de cámara y no cuenta con un backend de renderizado de video. Cuando llame a start_video_capture, establezca is_external en True y proporcione fotogramas mediante la llamada a push_external_video_frame. set_local_view, set_remote_view y AoqVideoCanvas.view no tienen efecto real en Linux. Para previsualizar el video, obtenga los fotogramas a través de una devolución de llamada de fotograma de video y realice el renderizado por su cuenta.

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

set_video_decoder_config

def set_video_decoder_config(self, config: AoqVideoCodecConfig) -> int
config especifica la configuración de decodificación de video. Solo los siguientes campos tienen efecto: track_type, codec_type, width, height, fps, bitrate. Otros campos se aplican únicamente a la codificación. Llame antes de connect para proponer configuraciones de códec para las suscripciones. Devuelve 0 en caso de éxito o un valor distinto de cero en caso de error.
def set_video_encoder_config(self, config: AoqVideoCodecConfig) -> int
def set_video_decoder_config(self, config: AoqVideoCodecConfig) -> int
def push_external_video_frame(self, frame: AoqVideoFrame, track_type: AoqTrackType = AoqTrackType.VIDEO) -> int
def push_external_video_encoded_frame(self, track_type: AoqTrackType, frame: AoqVideoEncodedFrame) -> int
  • Para set_video_decoder_config, solo los campos track_type/codec_type/width/height/fps/bitrate surten efecto.
  • push_external_video_frame se consume únicamente después de start_video_capture(is_external=True). Para formatos empaquetados (NV12/NV21/BGRA/RGBA), rellene frame.data; para los tres planos I420, rellene frame.data_y/u/v y el stride correspondiente. Si el búfer está lleno, devuelve AoqErrorCode.VIDEO_EXTERNAL_BUFFER_FULL(210).
  • push_external_video_encoded_frame requiere que se haya llamado previamente a set_video_encoder_config(is_external=True, codec_type=VIDEO_JPEG). De lo contrario, devuelve AoqErrorCode.VIDEO_EXTERNAL_ENCODER_NOT_ENABLED(212). Utiliza la ruta de derivación sin recodificación y no requiere start_video_capture.

Control de transmisión de flujo de medios

def enable_send_media_stream(self, track_type: AoqTrackType, enable: bool) -> int
Después de la inicialización, deshabilite el envío por separado para cada pista requerida llamando a enable_send_media_stream(AoqTrackType.AUDIO, False) y enable_send_media_stream(AoqTrackType.VIDEO, False) según sea necesario. Después de recibir on_connection_status_change(CONNECTED), habilite cada pista en una llamada separada.

Reproducción de archivos de audio

def start_audio_file(self, file_id: str, config: AoqAudioFileMixConfig) -> int
def stop_audio_file(self, file_id: str) -> int
def pause_audio_file(self, file_id: str) -> int
def resume_audio_file(self, file_id: str) -> int
def get_audio_file_duration(self, file_id: str) -> int
def get_audio_file_current_position(self, file_id: str) -> int
def set_audio_file_position_millis(self, file_id: str, position_ms: int) -> int
def set_audio_file_volume(self, file_id: str, type_: AoqAudioStreamDirection, volume: int) -> int
def get_audio_file_volume(self, file_id: str, type_: AoqAudioStreamDirection) -> int

Secuencias de audio externas

def add_audio_external_stream(self, stream_id: str, config: AoqAudioExternalStreamConfig) -> int
def remove_audio_external_stream(self, stream_id: str) -> int
def push_audio_external_stream_data(self, stream_id: str, data: AoqAudioFrameData) -> int
def set_audio_external_stream_volume(self, stream_id: str, type_: AoqAudioStreamDirection, volume: int) -> int
def get_audio_external_stream_volume(self, stream_id: str, type_: AoqAudioStreamDirection) -> int
def clear_audio_external_stream_buffer(self, stream_id: str, fadeout_ms: int = -1) -> None
Cuando el búfer está lleno, push_audio_external_stream_data devuelve AoqErrorCode.AUDIO_EXTERNAL_BUFFER_FULL(110). Se recomienda esperar aproximadamente 20 ms y luego reintentar con el mismo fotograma.

Mensajes en tiempo real

def send_data_msg(self, msg: AoqDataMsg) -> int

Devoluciones de llamada de cuadros de audio

def set_audio_frame_observer(self, observer: Optional[IAudioFrameObserver]) -> int
def enable_audio_frame_observer(self, enabled: bool, audio_source: AoqAudioSource, config: AoqAudioObserverConfig) -> int
Pase None a set_audio_frame_observer para anular el registro del observador.

Devoluciones de llamada de cuadros de video

def set_video_frame_observer(self, observer: Optional[IVideoFrameObserver]) -> int
def enable_video_frame_observer(self, enabled: bool, video_source: AoqVideoSource, config: AoqVideoObserverConfig) -> int
Pase None a set_video_frame_observer para anular el registro del observador.

Interfaces de devolución de llamada

AoqEngineEventListener

Clase base para devoluciones de llamada de eventos del motor. Todos los métodos son anulaciones opcionales con implementaciones vacías por defecto. Las devoluciones de llamada se activan en hilos nativos, y usted debe garantizar la seguridad de los hilos por sí mismo.
class AoqEngineEventListener:
    def on_error(self, code: int, message: str) -> None: ...
    def on_connection_status_change(self, status: AoqConnectionStatus) -> None: ...
    def on_data_msg(self, msg: AoqDataMsg) -> None: ...

on_error

def on_error(self, code: int, message: str) -> None
Devolución de llamada de error del motor. code corresponde a un valor de enumeración AoqErrorCode.

on_connection_status_change

def on_connection_status_change(self, status: AoqConnectionStatus) -> None
Devolución de llamada de cambio de estado de conexión. Transiciones de estado: DISCONNECTED -> CONNECTING -> CONNECTED/FAILED -> DISCONNECTED.

on_data_msg

def on_data_msg(self, msg: AoqDataMsg) -> None
Devolución de llamada para un mensaje de datos en tiempo real recibido.

Devoluciones de llamada de IAudioFrameObserver

Clase base para oyentes de datos de fotogramas de audio. Todos los métodos son anulaciones opcionales con implementaciones vacías por defecto.
class IAudioFrameObserver:
    def on_captured_audio_frame(self, data: AoqAudioFrameData) -> None: ...
    def on_process_captured_audio_frame(self, data: AoqAudioFrameData) -> None: ...
    def on_publish_audio_frame(self, track_type: AoqTrackType, data: AoqAudioFrameData) -> None: ...
    def on_playback_audio_frame(self, data: AoqAudioFrameData) -> None: ...
La devolución de llamada se activa en el hilo de audio nativo. No realice operaciones que consuman mucho tiempo en ella. AoqAudioFrameData.data ya es una copia de bytes y se puede utilizar de forma segura de manera asíncrona.

on_captured_audio_frame

Se invoca cuando se captura un cuadro de audio sin procesar. El cuadro contiene datos PCM no procesados.
def on_captured_audio_frame(self, data: AoqAudioFrameData) -> None: ...
ParámetroTipoDescripción
dataAoqAudioFrameDataDatos de fotograma de audio capturado
Valor de retorno: None.
Los datos del fotograma ya están copiados en bytes y se pueden utilizar de forma segura de manera asíncrona.

on_process_captured_audio_frame

Invocado para una trama de audio después del procesamiento 3A (AEC/AGC/ANS).
def on_process_captured_audio_frame(self, data: AoqAudioFrameData) -> None: ...
ParámetroTipoDescripción
dataAoqAudioFrameDataDatos de trama de audio después del procesamiento 3A
Valor de retorno: None.
Los datos del fotograma ya están copiados en bytes y se pueden utilizar de forma segura de manera asíncrona.

on_publish_audio_frame

Se invoca para un cuadro de audio antes de la publicación, inmediatamente antes de la codificación y la transmisión.
def on_publish_audio_frame(self, track_type: AoqTrackType, data: AoqAudioFrameData) -> None: ...
ParámetroTipoDescripción
track_typeAoqTrackTypeTipo de pista de audio
dataAoqAudioFrameDataDatos de trama de audio antes de la publicación
Valor de retorno: None.
Los datos del fotograma ya están copiados en bytes y se pueden utilizar de forma segura de manera asíncrona. Esta devolución de llamada solo admite acceso de lectura.

on_playback_audio_frame

Invocado para una trama de audio remota decodificada antes de la reproducción.
def on_playback_audio_frame(self, data: AoqAudioFrameData) -> None: ...
ParámetroTipoDescripción
dataAoqAudioFrameDataDatos de trama de audio remota antes de la reproducción
Valor de retorno: None.
Los datos del fotograma ya están copiados en bytes y se pueden utilizar de forma segura de manera asíncrona.

Devoluciones de llamada de IVideoFrameObserver

Clase base para oyentes de datos de fotogramas de video. Todos los métodos son anulaciones opcionales y devuelven False por defecto.
class IVideoFrameObserver:
    def on_captured_video_frame(self, track_type: AoqTrackType, frame: AoqVideoFrame) -> bool: ...
    def on_pre_encode_video_frame(self, track_type: AoqTrackType, frame: AoqVideoFrame) -> bool: ...
    def on_remote_video_frame(self, track_type: AoqTrackType, frame: AoqVideoFrame) -> bool: ...
La devolución de llamada se activa en el hilo de video nativo. No realice operaciones que consuman mucho tiempo en ella. Los datos de píxeles del fotograma ya son una copia de bytes. La capa de Python utiliza actualmente semántica de copia y no admite la escritura de modificaciones, por lo que se recomienda devolver siempre False.

on_captured_video_frame

Invocado cuando se captura una trama de video sin procesar. La trama aún no ha sido preprocesada.
def on_captured_video_frame(self, track_type: AoqTrackType, frame: AoqVideoFrame) -> bool: ...
ParámetroTipoDescripción
track_typeAoqTrackTypePista de cuadro (Video / Pantalla)
frameAoqVideoFrameDatos de fotograma de video capturado
Valor de retorno: True solicita que los datos modificados se escriban de nuevo en el SDK (solo I420). False indica acceso de solo lectura. La capa actual de Python utiliza semántica de copia; se recomienda devolver siempre False.
Los datos del fotograma ya están copiados en bytes y se pueden utilizar de forma segura de manera asíncrona.

on_pre_encode_video_frame

Invocado para una trama de video sin procesar después del preprocesamiento y antes de la codificación.
def on_pre_encode_video_frame(self, track_type: AoqTrackType, frame: AoqVideoFrame) -> bool: ...
ParámetroTipoDescripción
track_typeAoqTrackTypePista de cuadro (Video / Pantalla)
frameAoqVideoFrameDatos de fotograma de video antes de la codificación
Valor de retorno: True solicita que los datos modificados se escriban de nuevo en el SDK (solo I420). False indica acceso de solo lectura. La capa actual de Python utiliza semántica de copia; se recomienda devolver siempre False.
Los datos del fotograma ya están copiados en bytes y se pueden utilizar de forma segura de manera asíncrona.

on_remote_video_frame

Invocado para una trama de video remota sin procesar después de la decodificación y antes de la renderización.
def on_remote_video_frame(self, track_type: AoqTrackType, frame: AoqVideoFrame) -> bool: ...
ParámetroTipoDescripción
track_typeAoqTrackTypePista de cuadro (Video / Pantalla)
frameAoqVideoFrameDatos de fotograma de video remoto decodificado
Valor de retorno: True solicita que los datos modificados se escriban de nuevo en el SDK (solo I420). False indica acceso de solo lectura. La capa actual de Python utiliza semántica de copia; se recomienda devolver siempre False.
Los datos del fotograma ya están copiados en bytes y se pueden utilizar de forma segura de manera asíncrona.

Funciones de utilidad

load_library

def load_library(path: Optional[str] = None) -> ctypes.CDLL
Carga la biblioteca compartida nativa. Por lo general, no es necesario llamar a este método manualmente, ya que la biblioteca se carga automáticamente al utilizar el motor por primera vez. Si path está vacío, se busca libAoqClientSdk.so en el siguiente orden: la variable de entorno AOQ_CLIENT_SDK_LIB, el directorio del módulo, el directorio lib al mismo nivel y las rutas predeterminadas del sistema. Si la carga falla, se lanza una excepción OSError. Una causa típica es que una biblioteca dependiente no se encuentra en LD_LIBRARY_PATH.

Tipos de datos y enumeraciones

Todos los tipos de datos son dataclasses de Python. Puede construirlos directamente y asignar valores a los campos.

Tipos comunes

AoqCreateConfig

Campo

Tipo

Valor predeterminado

Descripción

work_dir

str

""

Directorio de trabajo del SDK

enable_dump_audio

bool

False

Especifica si se debe habilitar el volcado de audio (para depuración)

extras

str

""

Cadena de parámetros extendida

max_encoded_video_frame_bytesint190 × 1024Tamaño máximo del cuadro codificado en bytes. Aplica solo al codificador JPEG interno del SDK.
enable_drop_oversized_video_frameboolFalsePara el codificador JPEG interno del SDK, si se debe descartar un cuadro que sigue siendo demasiado grande incluso con la calidad más baja.

AoqConnectConfig

Campo

Tipo

Valor predeterminado

Descripción

token

str

""

Token de autenticación de conexión

sid

str

""

ID de sesión

certificate

str

""

Huella digital del certificado del servidor

relay_endpoints

List[AoqRelayEndpoint]

None

Lista de puntos de acceso de retransmisión

workspace_id_hash

str

""

Hash del ID del espacio de trabajo

publish_tracks

List[AoqTrackParam]

None

Lista de pistas publicadas locales

subscribe_tracks

List[AoqTrackParam]

None

Lista de pistas suscritas locales

AoqRelayEndpoint

Campo

Tipo

Valor predeterminado

Descripción

endpoint

str

""

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

port

int

0

Puerto del servidor de retransmisión

route_index

int

-1

Índice de ruta. Si es menor que 0, el SDK lo rellena automáticamente basándose en el subíndice de la matriz.

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

AoqTrackParam

Campo

Tipo

Valor predeterminado

Descripción

track_type

AoqTrackType

AoqTrackType.AUDIO

Tipo de pista

AoqDataMsg

Campo

Tipo

Valor predeterminado

Descripción

data

bytes

b""

Datos del mensaje (una cadena de bytes)

Enumeraciones

AoqErrorCode

Valor de enumeración

Valor

Descripción

OK

0

Éxito

PARAM_INVALID

1

Parámetro no válido

STATE_INVALID

2

Estado no válido

AUDIO

100

Error genérico de audio

AUDIO_EXTERNAL_BUFFER_FULL

110

El búfer de audio externo está lleno

AUDIO_DEVICE

120

Error genérico de dispositivo de audio

AUDIO_DEVICE_RECORDING_AUTH_FAILED

121

Permiso de grabación no concedido

AUDIO_DEVICE_RECORDING_OCCUPIED

122

El dispositivo de grabación está en uso

AUDIO_DEVICE_RECORDING_START_FAIL

124

Error al iniciar la grabación

AUDIO_DEVICE_PLAYOUT_OCCUPIED

125

El dispositivo de reproducción está en uso

AUDIO_DEVICE_PLAYOUT_START_FAIL

127

Error al iniciar la reproducción

VIDEO

200

Error genérico de video

VIDEO_EXTERNAL_BUFFER_FULL

210

El búfer de video externo está lleno

AoqWarningCode

Códigos de advertencia.
Valor de enumeraciónValorDescripción
OK0Sin advertencia
AUDIO100Advertencia general de audio
AUDIO_HOWLING101Acople de audio detectado
AUDIO_DEVICE120Advertencia general de dispositivo de audio
AUDIO_DEVICE_MIC_ENUMERATE_ERROR121Error de enumeración de micrófono
AUDIO_DEVICE_MIC_START_TIMEOUT122Tiempo de espera de inicio del micrófono agotado
AUDIO_DEVICE_RECORDING_ERROR123Error de grabación
AUDIO_DEVICE_SPEAKER_ENUMERATE_ERROR124Error de enumeración de altavoces
AUDIO_DEVICE_SPEAKER_START_TIMEOUT125Tiempo de espera de inicio del altavoz agotado
AUDIO_DEVICE_PLAYOUT_ERROR126Error de reproducción
VIDEO200Advertencia general de video
VIDEO_CAMERA_ENUMERATE_ERROR201Error de enumeración de cámaras
VIDEO_ENCODER_SWITCHED202Codificador de video cambiado
VIDEO_RENDER_DOWNGRADE203Renderizado de video degradado
La clase base AoqEngineEventListener no declara on_warning, pero el puente C reenvía dinámicamente las advertencias mediante getattr(listener, "on_warning"). Implemente este método en su oyente para recibir advertencias.

AoqConnectionStatus

Valor de enumeración

Valor

Descripción

DISCONNECTED

0

Desconectado

CONNECTING

1

Conectando

CONNECTED

2

Conectado

FAILED

3

Error de conexión

AoqTrackType

Valor de enumeración

Valor

Descripción

AUDIO

0

Pista de audio

VIDEO

1

Pista de video

DATA

2

Pista de mensajes de datos

AoqEncoderType

Valor de enumeración

Valor

Descripción

UNKNOWN

0

Formato desconocido

AUDIO_PCM

1

Audio PCM

AUDIO_OPUS

2

Audio Opus

VIDEO_H264

3

Video H.264

VIDEO_JPEG

4

Video JPEG

DATA_TEXT

5

Texto del mensaje

AoqMirrorMode

Valor de enumeración

Valor

Descripción

DISABLED

0

Deshabilitar espejo

ENABLED

1

Habilitar espejo

AoqOrientationMode

Valor de enumeración

Valor

Descripción

AUTO

0

Auto-fit

PORTRAIT

1

Vertical

LANDSCAPE

2

Horizontal

AoqRenderMode

Valor de enumeración

Valor

Descripción

AUTO

0

Modo adaptativo

STRETCH

1

Modo de estiramiento

FILL

2

Modo de relleno

CROP

3

Modo de recorte

AoqVideoPixelFormat

Valor de enumeración

Valor

Descripción

UNKNOWN

0

Formato desconocido

I420

1

I420 (formato planar YUV)

NV12

2

NV12 (formato semiplanar YUV)

NV21

3

NV21 (formato semiplanar YUV)

BGRA

4

BGRA (32 bits)

RGBA

5

RGBA (32 bits)

CV_PIXEL_BUFFER6Ruta de copia cero de Apple. No se utiliza en Linux.

AoqCameraDirection

Valor de enumeración

Valor

Descripción

FRONT

0

Cámara frontal (valor de enumeración genérico de plataforma; la captura de cámara no es compatible con Linux)

BACK

1

Cámara trasera (valor de enumeración genérico de plataforma; la captura de cámara no es compatible con Linux)

Tipos de audio

AoqAudioCaptureConfig

Campo

Tipo

Valor predeterminado

Descripción

is_external

bool

False

Especifica si se debe usar el modo de captura externa

channel

int

1

Número de canales (mono por defecto)

AoqAudioPlaybackConfig

Campo

Tipo

Valor predeterminado

Descripción

is_external

bool

False

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

channel

int

1

Número de canales (mono por defecto)

AoqAudioCodecConfig

Campo

Tipo

Valor predeterminado

Descripción

track_type

AoqTrackType

AUDIO

Tipo de pista

codec_type

AoqEncoderType

AUDIO_OPUS

Formato de códec

sample_rate

int

48000

Tasa de muestreo, en Hz

channel

int

1

Número de canales

bitrate

int

32000

Tasa de bits, en bit/s

AoqAudioFileMixConfig

Campo

Tipo

Valor predeterminado

Descripción

file_name

str

""

Nombre del archivo (incluida la ruta). No puede estar vacío.

cycles

int

-1

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

start_pos_ms

int

0

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

publish_volume

int

100

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

playout_volume

int

100

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

AoqAudioExternalStreamConfig

Campo

Tipo

Valor predeterminado

Descripción

track_type

AoqTrackType

AUDIO

Tipo de pista de audio

codec_type

AoqEncoderType

AUDIO_PCM

Formato de flujo de audio

channels

int

1

Número de canales

sample_rate

int

48000

Tasa de muestreo, en Hz

playout_volume

int

100

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

publish_volume

int

100

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

max_buffer_duration

int

1000

Duración máxima del búfer, en milisegundos

enable_3a

bool

False

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

AoqAudioFrameData

Datos de audio sin procesar, que se utilizan para entrada externa o devoluciones de llamada del observador.

Campo

Tipo

Valor predeterminado

Descripción

data

bytes

b""

Datos PCM de audio sin procesar (una copia de bytes en las devoluciones de llamada)

num_of_samples

int

0

Número de muestras (por canal)

bytes_per_sample

int

0

Bytes por muestra

num_of_channels

int

0

Número de canales

samples_per_sec

int

0

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

push_sequence

int

0

Ronda de entrada PCM

time_stamp

int

0

Marca de tiempo

auto_gen_mute

bool

False

True indica datos silenciosos generados por el SDK

AoqAudioObserverConfig

Campo

Tipo

Valor predeterminado

Descripción

sample_rate

int

48000

Frecuencia de muestreo del audio de devolución de llamada, en Hz

channels

int

1

Número de canales de audio en la devolución de llamada

mode

AoqAudioObserverMode

READ_ONLY

Modo de lectura y escritura

AoqAudioStreamDirection

Valor de enumeración

Valor

Descripción

PUBLISH

0

Publicando flujo

PLAYOUT

1

Flujo de reproducción (flujo de suscripción)

AoqAudioExternalStreamToggle

Valor de enumeración

Valor

Descripción

NORMAL

0

Estado normal

PAUSE

1

Estado en pausa

AoqAudioSource

Valor de enumeración

Valor

Descripción

CAPTURED

0

Datos de audio capturados

PROCESS_CAPTURED

1

Datos de audio después del procesamiento 3A

PUBLISH

2

Datos de audio a publicar

PLAYBACK

3

Datos de audio a reproducir

AoqAudioObserverMode

Valor de enumeración

Valor

Descripción

READ_ONLY

0

Modo de solo lectura

READ_WRITE

1

Modo de lectura y escritura

Tipos de video

AoqVideoCaptureConfig

Campo

Tipo

Valor predeterminado

Descripción

width

int

1280

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

height

int

720

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

fps

int

15

Tasa de fotogramas de captura. Este parámetro no tiene efecto cuando is_external=True.

is_external

bool

False

Especifica si se debe utilizar captura externa. Linux solo admite True. Después de llamar a start_video_capture, proporcione fotogramas llamando a push_external_video_frame.

camera_direction

AoqCameraDirection

FRONT

Dirección de la cámara para plataformas móviles. Linux no tiene la capacidad correspondiente. Mantenga el valor FRONT.

AoqVideoCodecConfig

Parámetros del códec de video, compartidos por la codificación y la decodificación. Para la decodificación, solo track_type/codec_type/width/height/fps/bitrate tienen efecto, y los demás campos se utilizan únicamente para la codificación.

Campo

Tipo

Valor predeterminado

Descripción

is_externalboolFalseModo de codificación externa. Cuando es True, el llamante envía fotogramas codificados y el SDK no captura ni codifica video (se aplica solo a la codificación).

track_type

AoqTrackType

VIDEO

Tipo de pista

codec_type

AoqEncoderType

VIDEO_H264

Formato de códec

width

int

540

Ancho de codificación, en píxeles

height

int

960

Altura de codificación, en píxeles

fps

int

5

Tasa de cuadros de codificación

bitrate

int

500000

Tasa de bits objetivo, en bit/s

min_bitrate

int

128000

Tasa de bits mínima, en bit/s

keyframe_interval

int

2

Intervalo de fotogramas clave, en segundos

mirror_mode

AoqMirrorMode

DISABLED

Modo espejo

orientation_mode

AoqOrientationMode

AUTO

Modo de orientación de video

AoqVideoCanvas

Campo

Tipo

Valor predeterminado

Descripción

view

int

0

Identificador de ventana de renderizado. Linux no tiene backend de renderizado, por lo que este campo no tiene ningún efecto real. Mantenga el valor 0.

render_mode

AoqRenderMode

AUTO

Modo de renderizado. Linux no tiene backend de renderizado, por lo que este campo no tiene ningún efecto real.

AoqVideoFrame

Fotograma de video externo o datos de devolución de llamada de fotograma de video. Cuando utilice un formato empaquetado (NV12/NV21/BGRA/RGBA), rellene data. Cuando utilice los tres planos I420, rellene data_y/u/v y el paso correspondiente. Ambos métodos son mutuamente excluyentes.

Campo

Tipo

Valor predeterminado

Descripción

format

AoqVideoPixelFormat

UNKNOWN

Formato de píxel

width

int

0

Ancho del video, en píxeles

height

int

0

Altura del video, en píxeles

data

bytes

b""

Datos en formato empaquetado (NV12/NV21/BGRA/RGBA)

data_y

bytes

b""

Datos del plano Y I420

data_u

bytes

b""

Datos del plano U I420

data_v

bytes

b""

Datos del plano V I420

stride_y

int

0

Paso del plano Y

stride_u

int

0

Paso del plano U

stride_v

int

0

Paso del plano V

time_stamp

int

0

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

native_pixel_bufferint0Identificador de copia cero de Apple. Mantenga este campo en 0 en Linux.

AoqVideoEncodedFrame

Un fotograma de video codificado externamente, como un fotograma JPEG.

Campo

Tipo

Valor predeterminado

Descripción

codec

AoqEncoderType

VIDEO_JPEG

Formato de códec

data

bytes

b""

Datos codificados

width

int

0

Ancho, en píxeles

height

int

0

Alto, en píxeles

time_stamp

int

0

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

AoqVideoObserverConfig

Campo

Tipo

Valor predeterminado

Descripción

format

AoqVideoPixelFormat

I420

Formato de píxel esperado de los datos del callback

alignment

AoqVideoObserverAlignment

DEFAULT

Política de alineación de ancho

mode

AoqVideoObserverMode

READ_ONLY

Modo de lectura y escritura

mirror_applied

bool

False

Especifica si se deben reflejar los datos del callback

AoqVideoSource

Valor de enumeración

Valor

Descripción

CAPTURED

0

Datos de video capturados antes del preprocesamiento

PRE_ENCODE

1

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

REMOTE

2

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

AoqVideoObserverMode

Valor de enumeración

Valor

Descripción

READ_ONLY

0

Modo de solo lectura

READ_WRITE

1

Modo de lectura y escritura

AoqVideoObserverAlignment

Valor de enumeración

Valor

Descripción

DEFAULT

0

Alineación predeterminada

EVEN

1

Alineación de números pares

ALIGN_4

2

Alineación de 4 bytes

ALIGN_8

3

Alineación de 8 bytes

ALIGN_16

4

Alineación de 16 bytes