Este tópico descreve as APIs Python, os callbacks e os tipos de dados do AOQ Client SDK para Linux.
aoq_client_sdk. Todos os callbacks são acionados em threads nativas; portanto, garanta a segurança de threads por conta própria.
Índice de APIs
Ciclo de vida do engine
API | Descrição |
|---|---|
create_engine | Crie a instância do engine (singleton) |
destroy | Destrói a instância do engine |
get_version | Obtém a versão do SDK |
connect | Conecta ao servidor relay |
disconnect | Desconecta do servidor |
Gerenciamento de dispositivos de áudio
API | Descrição |
|---|---|
start_audio_capture | Inicia a captura de áudio (implementação vazia no Linux; não abre o microfone) |
stop_audio_capture | Interrompe a captura de áudio (sem efeito real no Linux) |
mute_audio_capture | Silencia ou reativa a captura de áudio (captura de dispositivo indisponível no Linux) |
start_audio_player | Inicia a reprodução de áudio (implementação vazia no Linux; não abre o alto-falante) |
stop_audio_player | Interrompe a reprodução de áudio (sem efeito real no Linux) |
pause_audio_player | Pausa a reprodução de áudio (reprodução de dispositivo indisponível no Linux) |
resume_audio_player | Retoma a reprodução de áudio (reprodução de dispositivo indisponível no Linux) |
interrupt_audio_player | Interrompe a sessão de áudio atual |
Configuração de codificação de áudio
API | Descrição |
|---|---|
set_audio_encoder_config | Defina os parâmetros de codificação de áudio |
set_audio_decoder_config | Defina os parâmetros de decodificação de áudio |
Gerenciamento de dispositivos de vídeo
API | Descrição |
|---|---|
start_video_capture | Inicia a captura de vídeo (apenas o modo de captura externa é suportado no Linux) |
stop_video_capture | Interrompe a captura de vídeo (aplica-se apenas ao modo de captura externa no Linux) |
set_local_view | Defina ou remove a janela de renderização de vídeo local (sem implementação de renderização no Linux) |
set_remote_view | Defina ou remove a janela de renderização de vídeo remoto (sem implementação de renderização no Linux) |
Codec de vídeo e entrada externa
API | Descrição |
|---|---|
set_video_encoder_config | Defina os parâmetros de codificação de vídeo |
set_video_decoder_config | Defina os parâmetros de decodificação de vídeo |
push_external_video_frame | Envia um frame de vídeo capturado externamente |
push_external_video_encoded_frame | Envia um frame de vídeo codificado externamente |
Controle de stream de mídia
API | Descrição |
|---|---|
enable_send_media_stream | Ative ou desative o envio de uma stream de mídia local |
Reprodução de arquivo de áudio
API | Descrição |
|---|---|
start_audio_file | Inicia a reprodução de um arquivo de áudio local na stream de publicação |
stop_audio_file | Interrompe a reprodução do arquivo de áudio |
pause_audio_file | Pausa a reprodução do arquivo de áudio |
resume_audio_file | Retoma a reprodução do arquivo de áudio |
get_audio_file_duration | Consulta a duração total do arquivo de áudio |
get_audio_file_current_position | Consulta a posição atual de reprodução do arquivo de áudio |
set_audio_file_position_millis | Defina a posição de reprodução do arquivo de áudio (seek) |
set_audio_file_volume | Defina o volume do arquivo de áudio |
get_audio_file_volume | Consulta o volume atual do arquivo de áudio |
Streams de áudio externas
API | Descrição |
|---|---|
add_audio_external_stream | Adiciona uma stream de áudio externa |
remove_audio_external_stream | Remove uma stream de áudio externa |
push_audio_external_stream_data | Alimenta dados PCM de áudio externo |
set_audio_external_stream_volume | Defina o volume de uma stream de áudio externa |
get_audio_external_stream_volume | Consulta o volume de uma stream de áudio externa |
clear_audio_external_stream_buffer | Limpa o buffer de uma stream de áudio externa |
Mensagens em tempo real
API | Descrição |
|---|---|
send_data_msg | Envia uma mensagem de dados em tempo real |
Callbacks de frame de áudio
API | Descrição |
|---|---|
set_audio_frame_observer | Defina o listener de callback de dados de frame de áudio |
enable_audio_frame_observer | Ative ou desative o callback de frame de áudio em uma posição especificada |
Callbacks de frame de vídeo
API | Descrição |
|---|---|
set_video_frame_observer | Defina o listener de callback de dados de frame de vídeo |
enable_video_frame_observer | Ative ou desative o callback de frame de vídeo em uma posição especificada |
Interfaces de callback
Callback | Descrição |
|---|---|
on_error | Callback de erro do engine |
on_connection_status_change | Callback de alteração de status de conexão |
on_data_msg | Callback para mensagem de dados em tempo real recebida |
IAudioFrameObserver | Classe base para listeners de dados de frame de áudio |
IVideoFrameObserver | Classe base para listeners de dados de frame de vídeo |
Funções utilitárias
API | Descrição |
|---|---|
load_library | Especifique e carrega manualmente a biblioteca compartilhada nativa |
Detalhes das APIs
Ciclo de vida do engine
create_engine
Crie a instância do engine (método de classe). O SDK mantém o engine como um singleton global; portanto, chamar este método novamente retorna a instância existente. Após chamar destroy, chame create_engine novamente antes de continuar usando o engine.
Parâmetros | Tipo | Descrição |
|---|---|---|
config | AoqCreateConfig | Configuração de criação do engine |
listener | AoqEngineEventListener | Listener de callback de eventos do engine |
destroy
Destrói a instância do engine (método de classe) e libera todos os recursos.
get_version
Obtém a versão atual do SDK (método estático).
connect
Conecta ao servidor relay. O servidor de aplicação obtém parâmetros temporários de conexão AOQ com base no protocolo em uso e os envia ao cliente. Para mais informações, consulte Token authentication.
Parâmetros | Tipo | Descrição |
|---|---|---|
config | AoqConnectConfig | Configuração de conexão, que inclui o token, SID e a lista de pontos de acesso relay |
disconnect
Desconecta do servidor e libera os recursos associados à conexão.
Gerenciamento de dispositivos de áudio
start_audio_capture
stop_audio_capture
mute_audio_capture
start_audio_player
stop_audio_player / pause_audio_player / resume_audio_player
interrupt_audio_player
Configuração de codificação de áudio
Gerenciamento de dispositivos de vídeo
start_video_capture, defina is_external como True e forneça frames chamando push_external_video_frame. Os métodos set_local_view, set_remote_view e AoqVideoCanvas.view não têm efeito real no Linux. Para visualizar o vídeo, obtenha frames por meio de um callback de frame de vídeo e renderize-os por conta própria.
Codec de vídeo e entrada externa
- Para set_video_decoder_config, apenas os campos track_type/codec_type/width/height/fps/bitrate têm efeito.
- O método push_external_video_frame só é consumido após start_video_capture(is_external=True). Para formatos empacotados (NV12/NV21/BGRA/RGBA), preencha
frame.data; para os três planos I420, preenchaframe.data_y/u/ve o stride correspondente. Se o buffer estiver cheio, o método retorna AoqErrorCode.VIDEO_EXTERNAL_BUFFER_FULL(210). - O método push_external_video_encoded_frame requer start_video_capture(is_external=True) e set_video_encoder_config(codec_type=VIDEO_JPEG), seguindo o caminho de bypass sem recodificação.
Controle de stream de mídia
Reprodução de arquivo de áudio
Streams de áudio externas
Mensagens em tempo real
Callbacks de frame de áudio
Callbacks de frame de vídeo
Interfaces de callback
AoqEngineEventListener
Classe base para callbacks de eventos do engine. Todos os métodos são substituições opcionais com implementações vazias padrão. Os callbacks são acionados em threads nativas; portanto, garanta a segurança de threads por conta própria.
on_error
on_connection_status_change
on_data_msg
IAudioFrameObserver
Classe base para listeners de dados de frame de áudio. Todos os métodos são substituições opcionais com implementações vazias padrão.
AoqAudioFrameData.data já é uma cópia em bytes e pode ser usado com segurança de forma assíncrona.
IVideoFrameObserver
Classe base para listeners de dados de frame de vídeo. Todos os métodos são substituições opcionais e retornam False por padrão.
Funções utilitárias
load_library
libAoqClientSdk.so será procurado na seguinte ordem: variável de ambiente AOQ_CLIENT_SDK_LIB, diretório do módulo, diretório lib no mesmo nível e caminhos padrão do sistema. Se o carregamento falhar, uma OSError será lançada. Uma causa comum é a ausência de uma biblioteca dependente no LD_LIBRARY_PATH.
Tipos de dados e enumerações
Todos os tipos de dados são dataclasses do Python. Você pode construí-los diretamente e atribuir valores aos campos.
Tipos gerais
AoqCreateConfig
Campo | Tipo | Valor padrão | Descrição |
|---|---|---|---|
work_dir | str | "" | Diretório de trabalho do SDK |
enable_dump_audio | bool | False | Especifique se deve ativar o dump de áudio (para depuração) |
extras | str | "" | String de parâmetro estendido |
AoqConnectConfig
Campo | Tipo | Valor padrão | Descrição |
|---|---|---|---|
token | str | "" | Token de autenticação de conexão |
sid | str | "" | ID da sessão |
certificate | str | "" | Fingerprint do certificado do servidor |
relay_endpoints | List[AoqRelayEndpoint] | None | Lista de pontos de acesso relay |
workspace_id_hash | str | "" | Hash do ID do workspace |
publish_tracks | List[AoqTrackParam] | None | Lista de tracks publicadas localmente |
subscribe_tracks | List[AoqTrackParam] | None | Lista de tracks subscritas localmente |
AoqRelayEndpoint
Campo | Tipo | Valor padrão | Descrição |
|---|---|---|---|
endpoint | str | "" | Nome de domínio ou endereço IP do servidor relay |
port | int | 0 | Porta do servidor relay |
route_index | int | -1 | Índice do caminho, alinhado com routeIndex em SDKs para outras plataformas. Se for menor que 0, o SDK o preenche automaticamente com base no subscrito do array. |
AoqTrackParam
Campo | Tipo | Valor padrão | Descrição |
|---|---|---|---|
track_type | AoqTrackType | AoqTrackType.AUDIO | Tipo de track |
AoqDataMsg
Campo | Tipo | Valor padrão | Descrição |
|---|---|---|---|
data | bytes | b"" | Dados da mensagem (uma string de bytes) |
Enumerações
AoqErrorCode
Valor da enumeração | Valor | Descrição |
|---|---|---|
OK | 0 | Sucesso |
PARAM_INVALID | 1 | Parâmetro inválido |
STATE_INVALID | 2 | Estado inválido |
AUDIO | 100 | Erro genérico de áudio |
AUDIO_EXTERNAL_BUFFER_FULL | 110 | Buffer de áudio externo cheio |
AUDIO_DEVICE | 120 | Erro genérico de dispositivo de áudio |
AUDIO_DEVICE_RECORDING_AUTH_FAILED | 121 | Permissão de gravação não concedida |
AUDIO_DEVICE_RECORDING_OCCUPIED | 122 | Dispositivo de gravação em uso |
AUDIO_DEVICE_RECORDING_START_FAIL | 124 | Falha ao iniciar gravação |
AUDIO_DEVICE_PLAYOUT_OCCUPIED | 125 | Dispositivo de reprodução em uso |
AUDIO_DEVICE_PLAYOUT_START_FAIL | 127 | Falha ao iniciar reprodução |
VIDEO | 200 | Erro genérico de vídeo |
VIDEO_EXTERNAL_BUFFER_FULL | 210 | Buffer de vídeo externo cheio |
AoqConnectionStatus
Valor da enumeração | Valor | Descrição |
|---|---|---|
DISCONNECTED | 0 | Desconectado |
CONNECTING | 1 | Conectando |
CONNECTED | 2 | Conectado |
FAILED | 3 | Falha na conexão |
AoqTrackType
Valor da enumeração | Valor | Descrição |
|---|---|---|
AUDIO | 0 | Track de áudio |
VIDEO | 1 | Track de vídeo |
DATA | 2 | Track de mensagem de dados |
AoqEncoderType
Valor da enumeração | Valor | Descrição |
|---|---|---|
UNKNOWN | 0 | Formato desconhecido |
AUDIO_PCM | 1 | Áudio PCM |
AUDIO_OPUS | 2 | Áudio Opus |
VIDEO_H264 | 3 | Vídeo H.264 |
VIDEO_JPEG | 4 | Vídeo JPEG |
DATA_TEXT | 5 | Texto de mensagem |
AoqMirrorMode
Valor da enumeração | Valor | Descrição |
|---|---|---|
DISABLED | 0 | Espelhamento desativado |
ENABLED | 1 | Espelhamento ativado |
AoqOrientationMode
Valor da enumeração | Valor | Descrição |
|---|---|---|
AUTO | 0 | Ajuste automático |
PORTRAIT | 1 | Retrato |
LANDSCAPE | 2 | Paisagem |
AoqRenderMode
Valor da enumeração | Valor | Descrição |
|---|---|---|
AUTO | 0 | Modo adaptativo |
STRETCH | 1 | Modo esticado |
FILL | 2 | Modo preenchido |
CROP | 3 | Modo cortado |
AoqVideoPixelFormat
Valor da enumeração | Valor | Descrição |
|---|---|---|
UNKNOWN | 0 | Formato desconhecido |
I420 | 1 | I420 (formato planar YUV) |
NV12 | 2 | NV12 (formato semi-planar YUV) |
NV21 | 3 | NV21 (formato semi-planar YUV) |
BGRA | 4 | BGRA (32 bits) |
RGBA | 5 | RGBA (32 bits) |
AoqCameraDirection
Valor da enumeração | Valor | Descrição |
|---|---|---|
FRONT | 0 | Câmera frontal (valor de enumeração genérico de plataforma; captura por câmera não suportada no Linux) |
BACK | 1 | Câmera traseira (valor de enumeração genérico de plataforma; captura por câmera não suportada no Linux) |
Tipos de áudio
AoqAudioCaptureConfig
Campo | Tipo | Valor padrão | Descrição |
|---|---|---|---|
is_external | bool | False | Especifique se deve usar o modo de captura externa |
channel | int | 1 | Número de canais (mono por padrão) |
AoqAudioPlaybackConfig
Campo | Tipo | Valor padrão | Descrição |
|---|---|---|---|
is_external | bool | False | Especifique se deve usar o modo de reprodução externa |
channel | int | 1 | Número de canais (mono por padrão) |
AoqAudioCodecConfig
Campo | Tipo | Valor padrão | Descrição |
|---|---|---|---|
track_type | AoqTrackType | AUDIO | Tipo de track |
codec_type | AoqEncoderType | AUDIO_PCM | Formato do codec |
sample_rate | int | 48000 | Taxa de amostragem, em Hz |
channel | int | 1 | Número de canais |
bitrate | int | 32000 | Taxa de bits, em bit/s |
AoqAudioFileMixConfig
Campo | Tipo | Valor padrão | Descrição |
|---|---|---|---|
file_name | str | "" | Nome do arquivo (incluindo o caminho). Não pode estar vazio. |
cycles | int | -1 | Número de loops. -1 indica loop ilimitado. |
start_pos_ms | int | 0 | Posição inicial de reprodução, em milissegundos |
publish_volume | int | 100 | Volume de publicação. Valores válidos: 0 a 100. |
playout_volume | int | 100 | Volume de reprodução. Valores válidos: 0 a 100. |
AoqAudioExternalStreamConfig
Campo | Tipo | Valor padrão | Descrição |
|---|---|---|---|
track_type | AoqTrackType | AUDIO | Tipo de track de áudio |
codec_type | AoqEncoderType | AUDIO_PCM | Formato da stream de áudio |
channels | int | 1 | Número de canais |
sample_rate | int | 48000 | Taxa de amostragem, em Hz |
playout_volume | int | 100 | Volume de reprodução. Valores válidos: 0 a 100. |
publish_volume | int | 100 | Volume de publicação. Valores válidos: 0 a 100. |
max_buffer_duration | int | 1000 | Duração máxima do buffer, em milissegundos |
enable_3a | bool | False | Especifique se deve aplicar processamento 3A ao PCM de entrada |
AoqAudioFrameData
Dados de áudio brutos, usados para entrada externa ou callbacks de observer.
Campo | Tipo | Valor padrão | Descrição |
|---|---|---|---|
data | bytes | b"" | Dados PCM de áudio brutos (uma cópia em bytes nos callbacks) |
num_of_samples | int | 0 | Número de amostras (por canal) |
bytes_per_sample | int | 0 | Bytes por amostra |
num_of_channels | int | 0 | Número de canais |
samples_per_sec | int | 0 | Número de amostras por segundo (taxa de amostragem) |
push_sequence | int | 0 | Rodada de entrada PCM |
time_stamp | int | 0 | Timestamp |
auto_gen_mute | bool | False | True indica dados silenciosos gerados pelo SDK |
AoqAudioObserverConfig
Campo | Tipo | Valor padrão | Descrição |
|---|---|---|---|
sample_rate | int | 48000 | Taxa de amostragem do áudio do callback, em Hz |
channels | int | 1 | Número de canais de áudio no callback |
mode | AoqAudioObserverMode | READ_ONLY | Modo de leitura e escrita |
AoqAudioStreamDirection
Valor da enumeração | Valor | Descrição |
|---|---|---|
PUBLISH | 0 | Stream de publicação |
PLAYOUT | 1 | Stream de reprodução (stream de subscrição) |
AoqAudioExternalStreamToggle
Valor da enumeração | Valor | Descrição |
|---|---|---|
NORMAL | 0 | Estado normal |
PAUSE | 1 | Estado pausado |
AoqAudioSource
Valor da enumeração | Valor | Descrição |
|---|---|---|
CAPTURED | 0 | Dados de áudio capturados |
PROCESS_CAPTURED | 1 | Dados de áudio após processamento 3A |
PUBLISH | 2 | Dados de áudio a serem publicados |
PLAYBACK | 3 | Dados de áudio a serem reproduzidos |
AoqAudioObserverMode
Valor da enumeração | Valor | Descrição |
|---|---|---|
READ_ONLY | 0 | Modo somente leitura |
READ_WRITE | 1 | Modo leitura e escrita |
Tipos de vídeo
AoqVideoCaptureConfig
Campo | Tipo | Valor padrão | Descrição |
|---|---|---|---|
width | int | 1280 | Largura da captura, em pixels. Este parâmetro é ineficaz quando is_external=True. |
height | int | 720 | Altura da captura, em pixels. Este parâmetro é ineficaz quando is_external=True. |
fps | int | 15 | Taxa de frames da captura. Este parâmetro é ineficaz quando is_external=True. |
is_external | bool | False | Especifique se deve usar captura externa. O Linux suporta apenas True. Após chamar start_video_capture, forneça frames chamando push_external_video_frame. |
camera_direction | AoqCameraDirection | FRONT | Direção da câmera para plataformas móveis. O Linux não possui capacidade correspondente. Mantenha o valor FRONT. |
AoqVideoCodecConfig
Parâmetros de codec de vídeo, compartilhados por codificação e decodificação. Para decodificação, apenas track_type/codec_type/width/height/fps/bitrate têm efeito; os demais campos são usados apenas para codificação.
Campo | Tipo | Valor padrão | Descrição |
|---|---|---|---|
track_type | AoqTrackType | VIDEO | Tipo de track |
codec_type | AoqEncoderType | VIDEO_H264 | Formato do codec |
width | int | 540 | Largura de codificação, em pixels |
height | int | 960 | Altura de codificação, em pixels |
fps | int | 5 | Taxa de frames de codificação |
bitrate | int | 500000 | Taxa de bits alvo, em bit/s |
min_bitrate | int | 128000 | Taxa de bits mínima, em bit/s |
keyframe_interval | int | 2 | Intervalo de keyframes, em segundos |
mirror_mode | AoqMirrorMode | DISABLED | Modo de espelhamento |
orientation_mode | AoqOrientationMode | AUTO | Modo de orientação de vídeo |
AoqVideoCanvas
Campo | Tipo | Valor padrão | Descrição |
|---|---|---|---|
view | int | 0 | Handle da janela de renderização. O Linux não possui backend de renderização, portanto, este campo não tem efeito real. Mantenha o valor 0. |
render_mode | AoqRenderMode | AUTO | Modo de renderização. O Linux não possui backend de renderização, portanto, este campo não tem efeito real. |
AoqVideoFrame
Frame de vídeo externo ou dados de callback de frame de vídeo. Ao usar um formato empacotado (NV12/NV21/BGRA/RGBA), preencha data. Ao usar os três planos I420, preencha data_y/u/v e o stride correspondente. Os dois métodos são mutuamente exclusivos.
Campo | Tipo | Valor padrão | Descrição |
|---|---|---|---|
format | AoqVideoPixelFormat | UNKNOWN | Formato de pixel |
width | int | 0 | Largura do vídeo, em pixels |
height | int | 0 | Altura do vídeo, em pixels |
data | bytes | b"" | Dados de formato empacotado (NV12/NV21/BGRA/RGBA) |
data_y | bytes | b"" | Dados do plano Y I420 |
data_u | bytes | b"" | Dados do plano U I420 |
data_v | bytes | b"" | Dados do plano V I420 |
stride_y | int | 0 | Stride do plano Y |
stride_u | int | 0 | Stride do plano U |
stride_v | int | 0 | Stride do plano V |
time_stamp | int | 0 | Timestamp, em milissegundos. Se for 0, o SDK o preenche com o relógio local. |
AoqVideoEncodedFrame
Um frame de vídeo codificado externamente, como um frame JPEG.
Campo | Tipo | Valor padrão | Descrição |
|---|---|---|---|
codec | AoqEncoderType | VIDEO_JPEG | Formato do codec |
data | bytes | b"" | Dados codificados |
width | int | 0 | Largura, em pixels |
height | int | 0 | Altura, em pixels |
time_stamp | int | 0 | Timestamp, em milissegundos. Se for 0, o SDK o preenche com o relógio local. |
AoqVideoObserverConfig
Campo | Tipo | Valor padrão | Descrição |
|---|---|---|---|
format | AoqVideoPixelFormat | I420 | Formato de pixel esperado dos dados do callback |
alignment | AoqVideoObserverAlignment | DEFAULT | Política de alinhamento de largura |
mode | AoqVideoObserverMode | READ_ONLY | Modo de leitura e escrita |
mirror_applied | bool | False | Especifique se deve espelhar os dados do callback |
AoqVideoSource
Valor da enumeração | Valor | Descrição |
|---|---|---|
CAPTURED | 0 | Dados de vídeo capturados antes do pré-processamento |
PRE_ENCODE | 1 | Dados de vídeo antes da codificação, após o pré-processamento |
REMOTE | 2 | Dados de vídeo remoto após decodificação e antes da renderização |
AoqVideoObserverMode
Valor da enumeração | Valor | Descrição |
|---|---|---|
READ_ONLY | 0 | Modo somente leitura |
READ_WRITE | 1 | Modo leitura e escrita |
AoqVideoObserverAlignment
Valor da enumeração | Valor | Descrição |
|---|---|---|
DEFAULT | 0 | Alinhamento padrão |
EVEN | 1 | Alinhamento par |
ALIGN_4 | 2 | Alinhamento de 4 bytes |
ALIGN_8 | 3 | Alinhamento de 8 bytes |
ALIGN_16 | 4 | Alinhamento de 16 bytes |