QwenCloudBRASIL
Tradução de apoio para consulta. Código e identificadores técnicos preservados. Consultar referência original ↗

SDK Linux C++

Referência da API C++ do SDK do cliente AOQ Linux

índice API

Ciclo de vida do motor

API Descrição
criarEngine Crie a instância do mecanismo (método estático, singleton)
destruir Destrua a instância do mecanismo (método estático)
getVersão Obtenha a versão do SDK (método estático)
conectar Conecte-se ao servidor de retransmissão
desconectar Desconectar do servidor

Gerenciamento de dispositivos de áudio

API Descrição
iniciarAudioCapture Abra o dispositivo de captura de áudio (uma implementação vazia no Linux)
pararAudioCapture Feche o dispositivo de captura de áudio (sem efeito no Linux)
muteAudioCapture Ativar ou ativar captura de áudio
iniciarAudioPlayer Inicie a renderização de áudio (implementação vazia no Linux)
pararAudioPlayer Pare a renderização de áudio (sem efeito no Linux)
pausaAudioPlayer Pause a renderização de áudio, com suporte para fade-out
retomarAudioPlayer Retomar a renderização de áudio, com suporte para fade-in
interromperAudioPlayer Interromper a reprodução de áudio atual

Configuração do codec de áudio

API Descrição
setAudioEncoderConfig Definir parâmetros de codificação de áudio
setAudioDecoderConfig Definir parâmetros de decodificação de áudio

Gerenciamento de dispositivos de vídeo

API Descrição
iniciarVideoCapture Abra o dispositivo de captura de vídeo (somente o modo de captura externa é compatível com Linux)
pararVideoCapture Feche o dispositivo de captura de vídeo
definirLocalView Definir ou remover a janela de renderização de vídeo local (sem implementação de renderização no Linux)
definirRemoteView Definir ou remover a janela de renderização remota de vídeo (sem implementação de renderização no Linux)
iniciarScreenCapture Iniciar captura de tela
pararScreenCapture Pare a captura de tela

Codec de vídeo e entrada externa

API Descrição
setVideoEncoderConfig Definir parâmetros de codificação de vídeo
setVideoDecoderConfig Definir parâmetros de decodificação de vídeo (uma proposta de codec para assinantes)
pushExternalVideoCapturedFrame Enviar um quadro de vídeo capturado externamente
pushExternalVideoEncodedFrame Enviar um quadro de vídeo codificado externamente

Controle de fluxo de mídia

API Descrição
ativarSendMediaStream Habilitar ou desabilitar o envio de um fluxo de mídia local

Reprodução de arquivo de áudio

API Descrição
startAudioFile Comece a reproduzir um arquivo de áudio local no fluxo de publicação
pararAudioFile Pare a reprodução do arquivo de áudio
pausaAudioFile Pausar a reprodução do arquivo de áudio
retomarÁudioArquivo Retomar a reprodução do arquivo de áudio
getAudioFileDuration Consultar a duração total do arquivo de áudio
getAudioFileCurrentPosition Consultar a posição atual de reprodução do arquivo de áudio
setAudioFilePositionMillis Defina a posição de reprodução do arquivo de áudio (busca)
setAudioFileVolume Defina o volume do arquivo de áudio
getAudioFileVolume Consultar o volume atual do arquivo de áudio

Fluxos de áudio externos

API Descrição
addAudioExternalStream Adicione um fluxo de áudio externo
pushAudioExternalStreamData Alimentar dados PCM de áudio externo
setAudioExternalStreamVolume Definir o volume de um fluxo de áudio externo
getAudioExternalStreamVolume Consultar o volume de um fluxo de áudio externo
clearAudioExternalStreamBuffer Limpar o buffer de um fluxo de áudio externo
removerAudioExternalStream Remover um fluxo de áudio externo

Mensagens em tempo real

API Descrição
enviarDataMsg Envie uma mensagem de dados em tempo real

Retornos de chamada de quadro de áudio

API Descrição
setAudioFrameObserver Registre o ouvinte de dados do quadro de áudio (virtual puro)
ativarAudioFrameObserver Habilitar ou desabilitar o retorno de chamada do quadro de áudio em uma posição especificada (virtual puro)

Indicação de volume local

API Descrição
enableLocalAudioVolumeIndicação Habilitar ou desabilitar o retorno de chamada de indicação de volume de captura local

Retornos de chamada de quadro de vídeo

API Descrição
setVideoFrameObserver Registre o ouvinte de dados do quadro de vídeo (virtual puro)
ativarVideoFrameObserver Habilitar ou desabilitar o retorno de chamada do quadro de vídeo em uma posição especificada (virtual puro)

Retornos de chamada AoqEngineEventListener

Retorno de chamada Descrição
onError Retorno de chamada de erro do mecanismo
emAviso Retorno de chamada de aviso do motor
onConnectionStatusAlterar Retorno de chamada de alteração de status de conexão
onStats Retorno de chamada de estatísticas do mecanismo
onAudioDeviceStateChanged Retorno de chamada de mudança de status de operação do dispositivo de áudio
onAudioDeviceRouteChanged Retorno de chamada de mudança de rota de saída de áudio (não acionado no Linux)
onAudioFileState Retorno de chamada de status de reprodução de arquivo de áudio
onLocalAudioVolumeIndicação Retorno de chamada de indicação de volume de captura local
onVideoDeviceStateChanged Retorno de chamada de mudança de status de operação do dispositivo de vídeo
onDataMsg Retorno de chamada para uma mensagem de dados recebida em tempo real

Interfaces de ouvinte de dados de quadro

API Descrição
IAudioFrameObserver Interface para escuta de dados de quadros de áudio (quatro retornos de chamada virtuais puros)
IVideoFrameObserver Interface para escuta de dados de quadros de vídeo (três callbacks virtuais puros)

Detalhes da API

Captura de tela

virtual int startScreenCapture(const AoqScreenCaptureConfig& config);
virtual int stopScreenCapture();

config especifica configurações de captura de tela. O conteúdo da tela é enviado no AoqTrackTypeScreen pista.

Retorna 0 em caso de sucesso ou um valor diferente de zero em caso de falha. Esses métodos retornam de forma síncrona e não fornecem um onScreenCaptureStateChanged retorno de chamada.

O Linux suporta apenas entrada externa de quadros brutos. Definir isExternal=true. A captura de tela interna e a enumeração de origem não são suportadas; sourceId e sourceType não existem na configuração do Linux.

Para quadros brutos externos, defina isExternal=true e fornecer molduras de tela brutas através pushExternalVideoCapturedFrame para codificação SDK. Para quadros codificados externos, configure a trilha Screen para codificação externa com setVideoEncoderConfig, então ligue pushExternalVideoEncodedFrame; startScreenCapture não é obrigatório.

Ciclo de vida do motor

criarEngine

Cria a instância do mecanismo. O SDK mantém o mecanismo como um singleton global, portanto, chamar esse método novamente retorna a instância existente.

static AoqClientEngine* createEngine(const AoqCreateConfig& config,
                                    AoqEngineEventListener* listener);
Parâmetro Tipo Descrição
configuração AoqCreateConfig Configuração de criação do motor
ouvinte AoqEngineEventListener* Ouvinte de retorno de chamada de evento do mecanismo, que o chamador implementa por herança

Retorna: um ponteiro para a instância do mecanismo. nullptr é retornado em caso de falha. O ciclo de vida do ouvinte deve durar mais que o do mecanismo.

destruir

Destrói a instância do mecanismo e libera todos os recursos.

static int destroy();

Retorna: 0 indica sucesso; um não-0 valor indica uma falha.

obter versão

Obtém a versão atual do SDK.

static const char* getVersion();

Retorna: a string da versão, que é mantida pelo SDK.

conectar

Conecta-se ao servidor de retransmissão. O servidor de aplicação obtém parâmetros de conexão AOQ temporários com base no protocolo em uso e os envia ao cliente. Para obter mais informações, consulte Autenticação de token.

virtual int connect(const AoqConnectConfig& config);
Parâmetro Tipo Descrição
configuração AoqConnectConfig Configuração de conexão, que inclui o token, o SID, a matriz de pontos de acesso de retransmissão e as matrizes de faixas de publicação e assinatura

Retorna: 0 indica sucesso e a operação é executada de forma assíncrona; não-0 indica uma falha. O resultado da conexão é notificado por onConnectionStatusChange.

relayEndpoints/publishTracks/subscribeTracks são todas estruturas de "ponteiro de matriz estilo C + comprimento". A memória é mantida pelo chamador e só precisa ser válida durante a chamada de conexão.

desconectar

Desconecta do servidor e libera os recursos associados à conexão.

virtual int disconnect();

Retorna: 0 indica sucesso; um não-0 valor indica uma falha.

Gerenciamento de dispositivos de áudio

virtual int startAudioCapture(const AoqAudioCaptureConfig& config);
virtual int stopAudioCapture();
virtual int muteAudioCapture(bool mute);
virtual int startAudioPlayer(const AoqAudioPlaybackConfig& config);
virtual int stopAudioPlayer();
virtual int pauseAudioPlayer(int fadeMs);
virtual int resumeAudioPlayer(int fadeMs);
virtual int interruptAudioPlayer(AoqTrackType trackType, int fadeMs);
Parâmetro Tipo Descrição
configuração AoqAudioCaptureConfig / AoqAudioPlaybackConfig Configuração de captura e reprodução
mudo bool verdadeiros mudos; falsos ativam o som
fadeMs interno Duração do fade-out ou fade-in, em milissegundos. 0 indica execução imediata.
trackType AoqTrackType Tipo de trilha

Restrição importante no Linux: startAudioCapture/startAudioPlayer têm implementações vazias na compilação do Linux (eles retornam 0 diretamente e não abra nenhum dispositivo de placa de som), e stopAudioCapture/stopAudioPlayer não têm efeito real porque o estado interno não está definido. No Linux, use fluxos de áudio externos (2.8) para entrada de áudio e use retornos de chamada de quadro de áudio (2.10) para reproduzir você mesmo a saída de áudio. Para obter mais informações, consulte 4.3.

Configuração do codec de áudio

virtual int setAudioEncoderConfig(const AoqAudioCodecConfig& config);
virtual int setAudioDecoderConfig(const AoqAudioCodecConfig& config);

Recomendamos que você chame esse método antes connect(). Uma combinação inválida da taxa de amostragem e do modo aciona o onError retorno de chamada com AoqECParamInvalid durante a conexão.

Gerenciamento de dispositivos de vídeo

virtual int startVideoCapture(const AoqVideoCaptureConfig& config);
virtual int stopVideoCapture();
virtual int setLocalView(AoqTrackType trackType, const AoqVideoCanvas& canvas);
virtual int setRemoteView(AoqTrackType trackType, const AoqVideoCanvas& canvas);
Parâmetro Tipo Descrição
configuração AoqVideoCaptureConfig Configuração de captura de vídeo
trackType AoqTrackType Tipo de trilha de vídeo
tela AoqVideoCanvas Tela de renderização. Se canvas.view == nullptr, a ligação será removida.

Restrição importante no Linux: A captura de câmera no Linux é uma implementação de espaço reservado e não produz quadros. Usar startVideoCapture({.isExternal = true}) + pushExternalVideoCapturedFrame para entregar quadros. setLocalView/setRemoteView não tem back-end de renderização no Linux (AoqVideoCanvas.view suporta apenas visualizações de renderização Apple NSView* / Windows HWND / Android). Para visualização, renderize você mesmo por meio do retorno de chamada do quadro de vídeo (2.12). Para obter mais informações, consulte 4.3.

Codec de vídeo e entrada externa

virtual int setVideoEncoderConfig(const AoqVideoCodecConfig& config);
virtual int setVideoDecoderConfig(const AoqVideoCodecConfig& config);
virtual int pushExternalVideoCapturedFrame(AoqTrackType trackType, const AoqVideoFrame& frame);
virtual int pushExternalVideoEncodedFrame(AoqTrackType trackType, const AoqVideoEncodedFrame& frame);
Parâmetro Tipo Descrição
configuração AoqVideoCodecConfig Configuração do codec, que é roteada com base em config.trackType
trackType AoqTrackType Destino de roteamento. Defina-o para AoqTrackTypeVideo ou AoqTrackTypeScreen.
moldura AoqVideoFrame / AoqVideoEncodedFrame Quadro bruto ou dados de quadro codificado

Notas:

Controle de fluxo de mídia

virtual int enableSendMediaStream(AoqTrackType trackType, bool enable);

Especifica se um fluxo de mídia local específico deve ser enviado. trackType pode ser AoqTrackTypeAudio ou AoqTrackTypeVideo ou AoqTrackTypeScreen. Um valor de retorno de 0 indica que a chamada é despachada e executada de forma assíncrona. Recomendamos que você desative o envio após a inicialização e ative-o somente após onConnectionStatusChange relatórios AoqConnectionStatusConnected.

Reprodução de arquivo de áudio

virtual int startAudioFile(const char* fileId, const AoqAudioFileMixConfig& config);
virtual int stopAudioFile(const char* fileId);
virtual int pauseAudioFile(const char* fileId);
virtual int resumeAudioFile(const char* fileId);
virtual int64_t getAudioFileDuration(const char* fileId);
virtual int64_t getAudioFileCurrentPosition(const char* fileId);
virtual int setAudioFilePositionMillis(const char* fileId, int64_t positionMillis);
virtual int setAudioFileVolume(const char* fileId, AoqAudioStreamDirection type, int volume);
virtual int getAudioFileVolume(const char* fileId, AoqAudioStreamDirection type);
Parâmetro Tipo Descrição
ID do arquivo const char* ID do arquivo de áudio. A camada de negócios deve garantir exclusividade global.
configuração AoqAudioFileMixConfig Configuração de mixagem de arquivos
posiçãoMillis int64_t Posição alvo de reprodução, em milissegundos
tipo AoqAudioStreamDireção Volume de publicação ou volume de reprodução local
volume interno Volume. Valores válidos: 0 a 100.

Descrição do valor de retorno:

As alterações no estado de reprodução são relatadas através do onAudioFileState retorno de chamada. A mixagem de arquivos usa o caminho de publicação e não depende da placa de som local. Portanto, no Linux, você pode usá-lo para enviar um arquivo local como fonte de áudio.

Fluxos de áudio externos

virtual int addAudioExternalStream(const char* streamId, const AoqAudioExternalStreamConfig& config);
virtual int pushAudioExternalStreamData(const char* streamId, AoqAudioFrameData& data);
virtual int setAudioExternalStreamVolume(const char* streamId, AoqAudioStreamDirection type, int vol);
virtual int getAudioExternalStreamVolume(const char* streamId, AoqAudioStreamDirection type);
virtual void clearAudioExternalStreamBuffer(const char* streamId, int fadeoutMs);
virtual int removeAudioExternalStream(const char* streamId);
Parâmetro Tipo Descrição
ID de fluxo const char* ID de fluxo de áudio externo. A camada de negócios deve garantir exclusividade global.
configuração AoqAudioExternalStreamConfig Configuração de fluxo de áudio externo
dados AoqAudioFrameData Dados brutos de áudio externo (PCM), como referência não const
tipo AoqAudioStreamDireção Volume de publicação ou volume de reprodução local
volume interno Volume. Valores válidos: 0 a 100.
fadeoutMs interno Duração do fade-out. -1 usa o fade-out padrão do SDK, 0 limpa o buffer sem fade-out e um valor maior que 0 mantém a duração do fade-out especificada em milissegundos.

Notas:

Mensagens em tempo real

virtual int sendDataMsg(const AoqDataMsg& msg);

Envia uma mensagem de dados em tempo real. msg.data aponta para a memória mantida pelo chamador e só precisa ser válido durante a chamada. As mensagens do par são relatadas através do onDataMsg retorno de chamada.

Retornos de chamada de quadro de áudio

virtual int setAudioFrameObserver(IAudioFrameObserver* observer) = 0;
virtual int enableAudioFrameObserver(bool enabled, AoqAudioSource audioSource,
                                     const AoqAudioObserverConfig& config) = 0;
Parâmetro Tipo Descrição
observador IAudioFrameObserver* Instância do ouvinte. Passe nullptr para interromper retornos de chamada.
habilitado bool Especifica se os retornos de chamada de dados devem ser ativados nesta posição
fonte de áudio AoqAudioFonte Posição da fonte de dados de áudio bruto
configuração AoqAudioObserverConfig Taxa de amostragem de retorno de chamada, número de canais e modo de leitura e gravação

Uso: Primeiro, ligue setAudioFrameObserver(observer) para registrar o ouvinte. Então ligue enableAudioFrameObserver para cada posição que você precisa. O ciclo de vida do observador deve cobrir todo o período de retorno de chamada. Libere o observador somente depois de cancelar seu registro.

Suporte ao modo leitura-gravação (consulte a declaração IAudioFrameObserver): onCapturedAudioFrame/onProcessCapturedAudioFrame/onPlaybackAudioFrame suporta o modo leitura-gravação, enquanto onPublishAudioFrame suporta apenas o modo somente leitura.

No Linux, setAudioFrameObserver completa o registro por meio de envio assíncrono (PostTask para o thread de controle), portanto, o retorno de chamada pode entrar em vigor um pouco após o retorno da chamada. Antes de liberar o observador, deixe um intervalo de segurança suficiente ou mantenha o objeto vivo.

Indicação de volume local

virtual int enableLocalAudioVolumeIndication(const AoqAudioVolumeIndicationConfig& config);

Habilita ou desabilita a indicação do volume de captura local. Se config.interval <= 0, o retorno de chamada será desativado. Depois de habilitado, onLocalAudioVolumeIndication é acionado no intervalo especificado por config.interval. Você deve chamar esse método depois startAudioCapture para obter dados de volume.

Não há captura de dispositivo no Linux. Os dados de volume neste retorno de chamada vêm do caminho de mixagem de publicação/reprodução (mixer).

Retornos de chamada de quadro de vídeo

virtual int setVideoFrameObserver(IVideoFrameObserver* observer) = 0;
virtual int enableVideoFrameObserver(bool enabled, AoqVideoSource videoSource,
                                     const AoqVideoObserverConfig& config) = 0;
Parâmetro Tipo Descrição
observador IVideoFrameObserver* Instância do ouvinte. Passe nullptr para interromper retornos de chamada.
habilitado bool Especifica se os retornos de chamada de dados devem ser ativados nesta posição
fonte de vídeo AoqVideoSource Fonte de dados do retorno de chamada do quadro de vídeo (posição no pipeline)
configuração AoqVideoObserverConfig Formato de pixel esperado, política de alinhamento, modo de leitura-gravação e espelhamento

Se o retorno de chamada retornar true, os dados serão modificados e deverão ser gravados novamente no SDK. Isso entra em vigor apenas para I420/CVPixelBuffer, o que significa apenas I420 no Linux. Se o retorno de chamada retornar false, os dados serão somente leitura.

O Linux não possui renderização integrada. Este grupo de retornos de chamada é a única maneira de obter a imagem de vídeo remota (AoqVideoSourceRemote).

Retornos de chamada AoqEngineEventListener

AoqEngineEventListener é o ponto de entrada unificado para todas as notificações de eventos assíncronos do SDK. Você o herda e implementa e depois o transmite quando liga createEngine.

Principais diferenças do Android: todos os retornos de chamada nesta classe são funções virtuais puras (= 0) sem implementação vazia padrão. No Linux, você deve implementar totalmente os 10 métodos a seguir; caso contrário, a classe derivada não poderá ser instanciada. Os retornos de chamada podem ser acionados em threads internos do SDK.

class AOQ_API AoqEngineEventListener {
public:
  AoqEngineEventListener();
  virtual ~AoqEngineEventListener();
  virtual void onError(int code, const char* message) = 0;
  virtual void onWarning(int code, const char* message) = 0;
  virtual void onConnectionStatusChange(AoqConnectionStatus status) = 0;
  virtual void onStats(const AoqStats& stats) = 0;
  virtual void onAudioDeviceStateChanged(const AoqAudioDeviceState& state) = 0;
  virtual void onAudioDeviceRouteChanged(int routeType) = 0;
  virtual void onAudioFileState(const AoqAudioFileState& state) = 0;
  virtual void onLocalAudioVolumeIndication(const AoqAudioVolume& volume) = 0;
  virtual void onVideoDeviceStateChanged(const AoqVideoDeviceState& state) = 0;
  virtual void onDataMsg(const AoqDataMsg& msg) = 0;
};

onError

Retorno de chamada de erro do mecanismo. code corresponde a um AoqErrorCode valor enum (ver 3.3), e message é válido apenas durante o retorno de chamada.

emAviso

Retorno de chamada de aviso do motor. code corresponde a um AoqWarningCode valor enum (ver 3.3).

onConnectionStatusChange

Retorno de chamada de alteração do status da conexão. Transições de estado: Desconectado -> Conectando -> Conectado/Falha -> Desconectado.

nas estatísticas

Retorno de chamada de estatísticas do mecanismo. O SDK relata periodicamente estatísticas de publicação e assinatura de áudio e vídeo e estatísticas de rede, que você pode usar para monitorar a qualidade da chamada e o status da rede em tempo real e para diagnosticar problemas de áudio e vídeo.

Parâmetro Tipo Descrição
estatísticas AoqEstatísticas Publicação e assinatura de estatísticas e estatísticas de rede para mensagens de áudio, vídeo e dados

AoqStats usa internamente uma estrutura "ponteiro de matriz + contagem". O ponteiro é válido apenas durante o retorno de chamada, portanto, você mesmo deve copiar os dados para uso assíncrono.

onAudioDeviceStateChanged

Retorno de chamada para captura de dispositivo de áudio e alterações de status de operação de reprodução. state.reason é um AoqErrorCode valor.

onAudioDeviceRouteAlterado

Retorno de chamada de alteração da rota de saída de áudio. routeType corresponde a um AoqAudioDeviceRouteType valor enum (ver 3.4).

Não acionado no Linux: a compilação do Linux não inclui o ouvinte de dispositivo de plataforma (AOQ_HAS_NATIVE_DEVICE_MONITOR é definido apenas no Windows/macOS) e os dispositivos de áudio do lado do servidor não geram eventos de rota. Você ainda deve implementar este método (virtual puro), mas a implementação pode estar vazia.

onAudioFileState

Retorno de chamada para status de reprodução de arquivo de áudio. state.fileId é válido apenas durante o retorno de chamada.

onLocalAudioVolumeIndicação

Retorno de chamada de indicação de volume de captura local. Para habilitá-lo, ligue enableLocalAudioVolumeIndication.

onVideoDeviceStateChanged

Retorno de chamada para alterações no status da operação de captura do dispositivo de vídeo. state.reason é um AoqErrorCode valor.

onDataMsg

Retorno de chamada para uma mensagem de dados em tempo real recebida. msg.data é garantido que será válido apenas durante o retorno de chamada. Se precisar usá-lo de forma assíncrona, copie você mesmo.

Interfaces de ouvinte de dados de quadro

IAudioFrameObserver

Interface para escuta de dados de áudio. Não execute nenhuma operação demorada nos retornos de chamada. Caso contrário, poderão ocorrer anomalias de áudio. Todos os métodos são funções virtuais puras e devem ser totalmente implementados.

class AOQ_API IAudioFrameObserver {
public:
  virtual ~IAudioFrameObserver() {}
  virtual void onCapturedAudioFrame(const AoqAudioFrameData& data) = 0;
  virtual void onProcessCapturedAudioFrame(const AoqAudioFrameData& data) = 0;
  virtual void onPublishAudioFrame(AoqTrackType trackType, const AoqAudioFrameData& data) = 0;
  virtual void onPlaybackAudioFrame(const AoqAudioFrameData& data) = 0;
};
Retorno de chamada Como habilitá-lo (audioSource) Modo leitura-gravação
onCapturedAudioFrame AoqAudioSourceCapturado Leitura-gravação suportada
onProcessCapturedAudioFrame AoqAudioSourceProcessCapturado Leitura-gravação suportada
onPublishAudioFrame AoqAudioSourcePublish (requer uma conexão bem-sucedida) Somente leitura é suportada
onPlaybackAudioFrame AoqAudioSourceReprodução Leitura-gravação suportada

Todos os retornos de chamada anteriores suportam a configuração da taxa de amostragem e do número de canais usando AoqAudioObserverConfig.

No Linux, onPlaybackAudioFrame é o principal caminho para obtenção do PCM de downlink remoto. Como o módulo 3A não é compilado no Linux, os dados do onProcessCapturedAudioFrame (dados após processamento 3A) são essencialmente iguais aos dados brutos capturados. Para obter mais informações, consulte 4.3.

IVideoFrameObservador

Interface para escuta de dados de vídeo. Não execute nenhuma operação demorada nos retornos de chamada. Caso contrário, poderão ocorrer interrupções no vídeo. Todos os métodos são funções virtuais puras.

class AOQ_API IVideoFrameObserver {
public:
  virtual ~IVideoFrameObserver() {}
  virtual bool onCapturedVideoFrame(AoqTrackType trackType, AoqVideoFrame& frame) = 0;
  virtual bool onPreEncodeVideoFrame(AoqTrackType trackType, AoqVideoFrame& frame) = 0;
  virtual bool onRemoteVideoFrame(AoqTrackType trackType, AoqVideoFrame& frame) = 0;
};
Retorno de chamada Como habilitá-lo (videoSource) Descrição
onCapturedVideoFrame AoqVideoSourceCapturado Dados brutos locais após captura, antes do pré-processamento
onPreEncodeVideoFrame AoqVideoSourcePreEncode Dados brutos locais antes da codificação, após pré-processamento
onRemoteVideoFrame AoqVideoSourceRemoto Dados brutos remotos após decodificação e antes da renderização

Retorna: true indica que os dados foram modificados e devem ser gravados novamente no SDK, que entra em vigor apenas para I420/CVPixelBuffer; false indica somente leitura. Os ponteiros em frame são válidos apenas durante o retorno de chamada. Para usá-los de forma assíncrona, copie-os você mesmo.

Tipos de dados e enumerações

AoqScreenCaptureStateCode

Enumeração do estado de captura de tela. O tipo está definido, mas o SDK atual não fornece um retorno de chamada de estado correspondente.

Valor enum Valor Descrição
AoqScreenCaptureNone 0 Nenhum
AoqScreenCaptureIniciando 1 Iniciando
AoqScreenCaptureiniciado 2 Iniciado
AoqScreenCaptureStopping 3 Parando
AoqScreenCaptureStopped 4 Parado
AoqScreenCaptureFail 5 Falha

AoqScreenCaptureState

Campo Tipo Descrição
estado AoqScreenCaptureStateCode Código de estado de captura de tela.
motivo interno Código de erro de AoqErrorCode. 0 indica um estado normal.

AoqScreenCaptureConfig

Campo Tipo Valor padrão Descrição
éExterno bool falso Deve ser verdade no Linux. O aplicativo captura a tela e fornece frames brutos.
grupo de aplicativos const char* nullptr Apenas para iOS. Não usado nesta plataforma.

Todos os tipos são definidos em AoqClientEngine.h no AoqClientSdk espaço para nome. Todas as estruturas são tipos POD com valores padrão, então você obtém os valores padrão na tabela simplesmente declarando-os. Os campos marcados como apenas móveis são excluídos pela compilação condicional no Linux e não existem nas estruturas.

Tipos gerais

AoqCreateConfig

Campo Tipo Valor padrão Descrição
trabalhoDir const char* nullptr Diretório de trabalho do SDK (para logs e arquivos temporários)
habilitarDumpÁudio bool falso Especifica se os dados de áudio devem ser salvos (para depuração)
extras const char* nullptr Parâmetros estendidos (uma string JSON)
maxEncodedVideoFrameBytes interno 190×1024 Tamanho máximo do quadro codificado em bytes. Aplica-se apenas ao codificador JPEG interno do SDK. Um valor 0 desativa o limite.
enableDropOversizedVideoFrame bool falso Para o codificador JPEG interno do SDK, é necessário descartar um quadro que permanece superdimensionado com a qualidade mais baixa.

Os campos de string devem permanecer válidos pelo menos até createEngine retorna. O mecanismo os copia internamente conforme necessário. O isBTScoMode field no Android é apenas móvel e não existe no Linux.

AoqConnectConfig

Campo Tipo Valor padrão Descrição
ficha const char* nullptr Token de autenticação de conexão
sid const char* nullptr ID da sessão
certificadoImpressão digital const char* nullptr Impressão digital do certificado do servidor
espaço de trabalhoIdHash const char* nullptr Hash de ID do espaço de trabalho
pontos finais de retransmissão const AoqRelayEndpoint* nullptr Endereço inicial da matriz do ponto de acesso de retransmissão
reléEndpointsCount tamanho_t 0 Número de pontos de acesso de retransmissão
publicar Trilhas const AoqTrackParam* nullptr Endereço inicial da matriz de atributos da faixa de publicação
publicarTracksCount tamanho_t 0 Número de faixas de publicação
inscrever-seFaixas const AoqTrackParam* nullptr Endereço inicial da matriz de atributos de faixa assinante
subscreverTracksCount tamanho_t 0 Número de faixas inscritas

Ponto final AoqRelay

Campo Tipo Valor padrão Descrição
rota_índice interno -1 Índice de rota
ponto final const char* nullptr Nome de domínio ou endereço IP do servidor de retransmissão
porto interno 0 Porta do servidor de retransmissão
tcp_port interno 0 Porta de reserva TCP. Um valor 0 usa a porta padrão do SDK, 443.

Observe que o nome do campo route_index usa caixa de cobra, ao contrário da caixa de camelo usada pelos outros campos.

AoqTrackParam

Campo Tipo Valor padrão Descrição
trackType AoqTrackType AoqTrackTypeÁudio Tipo de trilha
modo de trilha Modo AoqTrack AoqTrackModeSegmento Modo de streaming ou não streaming. Efetivo apenas para downlink de áudio.

AoqDataMsg

Campo Tipo Valor padrão Descrição
dados const uint8_t* nullptr Conteúdo da mensagem. Aponta para a memória mantida pelo chamador.
tamanho dos dados tamanho_t 0 Número de bytes

Quando os dados são usados ​​em um retorno de chamada, é garantido que eles serão válidos apenas durante o retorno de chamada. Para uso assíncrono, copie você mesmo os dados.

Tipos de estatísticas

Estatísticas Aoq

Um resumo das estatísticas do motor, que é reportado periodicamente através onStats. Ele usa uma estrutura de "ponteiro de array + contagem", na qual todos os ponteiros são padronizados para nullptr e todas as contagens são padronizadas para 0.

Campo Tipo Descrição
audioPublishStats const AoqAudioPublishStats* Matriz de estatísticas de publicação para áudio
audioPublishStatsCount int não assinado Número de entradas estatísticas de publicação de áudio
videoPublishStats const AoqVideoPublishStats* Conjunto de estatísticas de publicação para vídeo
videoPublishStatsCount int não assinado Número de entradas de estatísticas de publicação para vídeo
dataMsgPublishStats const AoqDataMsgPublishStats* Conjunto de estatísticas de publicação para mensagens de dados
dataMsgPublishStatsCount int não assinado Número de entradas estatísticas de publicação para mensagens de dados
áudioSubscribeStats const AoqAudioSubscribeStats* Matriz de estatísticas de assinatura de áudio
audioSubscribeStatsCount int não assinado Número de entradas estatísticas de assinatura para áudio
vídeoSubscribeStats const AoqVideoSubscribeStats* Matriz de estatísticas de inscrição para vídeo
videoSubscribeStatsCount int não assinado Número de entradas de estatísticas de inscrição para vídeo
dataMsgSubscribeStats const AoqDataMsgSubscribeStats* Matriz de estatísticas de assinatura para mensagens de dados
dataMsgSubscribeStatsCount int não assinado Número de entradas estatísticas subscritas para mensagens de dados
estatísticas da rede const AoqNetworkStats* Estatísticas da rede

AoqAudioPublishStats

Campo Tipo Valor padrão Descrição
trackType AoqTrackType AoqTrackTypeÁudio Tipo de trilha
taxa de bits int não assinado 0 Taxa de bits, em bits/s
bytes uint64_t 0 Bytes cumulativos enviados
codificarVolume int não assinado 0 Volume de codificação do fluxo de publicação

AoqAudioSubscribeStats

Campo Tipo Valor padrão Descrição
trackType AoqTrackType AoqTrackTypeÁudio Tipo de trilha
taxa de bits int não assinado 0 Taxa de bits, em bits/s
bytes uint64_t 0 Bytes acumulados recebidos
volume de reprodução int não assinado 0 Volume de reprodução

AoqVideoPublishStats

Campo Tipo Valor padrão Descrição
trackType AoqTrackType AoqTrackTypeVídeo Tipo de trilha
taxa de bits int não assinado 0 Taxa de bits, em bits/s
bytes uint64_t 0 Bytes cumulativos enviados
codificarFps int não assinado 0 Taxa de quadros de codificação

AoqVideoSubscribeStats

Campo Tipo Valor padrão Descrição
trackType AoqTrackType AoqTrackTypeVídeo Tipo de trilha
taxa de bits int não assinado 0 Taxa de bits, em bits/s
bytes uint64_t 0 Bytes acumulados recebidos
decodificarFps int não assinado 0 Taxa de quadros de decodificação
renderFps int não assinado 0 Taxa de quadros de renderização

AoqDataMsgPublishStats/AoqDataMsgSubscribeStats

Campo Tipo Valor padrão Descrição
trackType AoqTrackType AoqTrackTypeData Tipo de trilha
taxa de bits int não assinado 0 Taxa de bits, em bits/s
bytes uint64_t 0 Bytes cumulativos enviados e recebidos

AoqNetworkStats

Campo Tipo Valor padrão Descrição
enviarTaxa de bits int não assinado 0 Taxa de bits de envio, em bit/s
enviarBytes uint64_t 0 Bytes cumulativos enviados
taxa de bits recebida int não assinado 0 Taxa de bits de recepção, em bit/s
recvBytes uint64_t 0 Bytes acumulados recebidos
perda int não assinado 0 Taxa de perda de pacotes, de 0 a 100
rt int não assinado 0 Latência de ida e volta, em ms

Enumerações

AoqTrackType

Valor enum Valor Descrição
AoqTrackTypeÁudio 0 Faixa de áudio
AoqTrackTypeVídeo 1 Faixa de vídeo
AoqTrackTypeData 2 Rastreamento de mensagens de dados
AoqTrackTypeScreen 3 Faixa de compartilhamento de tela. Somente uplink.

Modo AoqTrack

Valor enum Valor Descrição
AoqTrackModeSegmento 0 Segmentado: os dados são empacotados e entregues em segmentos semânticos, como uma frase.
AoqTrackModeStream 1 Streaming: os dados são entregues continuamente.

AoqEncoderType

Valor enum Valor Descrição
AoqEncoderTypeUnknown 0 Formato desconhecido
AoqEncoderTypeAudioPCM 1 Áudio PCM
AoqEncoderTypeAudioOpus 2 Audio Opus (baseado em plug-in; integrado estaticamente no Linux e disponível imediatamente)
AoqEncoderTypeVideoH264 3 Vídeo H.264
AoqEncoderTypeVideoJpeg 4 Vídeo JPEG
AoqEncoderTypeDataText 5 Texto da mensagem

AoqConnectionStatus

Valor enum Valor Descrição
AoqConnectionStatusDisconnected 0 Desconectado
AoqConnectionStatusConectando 1 Conectando
AoqConnectionStatusConectado 2 Conectado
AoqConnectionStatusFalha 3 Falha na conexão

AoqErrorCode

Nota de nomenclatura: em cabeçalhos C++, os literais enum usam a abreviação AoqEC* formulário (ao contrário do completo AoqErrorCode* formulário no Android), mas os valores são idênticos.

Valor enum Valor Descrição
AoqECOK 0 Sucesso
AoqECParamInválido 1 Parâmetro inválido
AoqECStateInválido 2 Estado inválido
AoqECUnSupport 3 A API é chamada, mas não está implementada na plataforma atual ou no modo atual
AoqECÁudio 100 Erro genérico de áudio
AoqECAudioExternalBufferFull 110 O buffer de áudio externo está cheio
AoqECAudioDispositivo 120 Erro genérico do dispositivo de áudio
AoqECAudioDeviceRecordingAuthFailed 121 Permissão de gravação não concedida
AoqECAudioDeviceRecordingOcupado 122 O dispositivo de gravação está em uso
AoqECAudioDeviceRecordingBackgroundIniciar 123 Falha ao iniciar a gravação em segundo plano
AoqECAudioDeviceRecordingStartFail 124 Falha ao iniciar a gravação
AoqECAudioDevicePlayoutOcupado 125 O dispositivo de reprodução está em uso
AoqECAudioDevicePlayoutBackgroundStart 126 Falha ao iniciar a reprodução em segundo plano
AoqECAudioDevicePlayoutStartFail 127 Falha ao iniciar a reprodução
AoqECAudioDeviceFone de ouvidoRequerVoipMode 128 O receptor requer modo VoIP (cenários móveis)
AoqECVídeo 200 Erro genérico de vídeo
AoqECVideoExternalBufferFull 210 O buffer de vídeo externo está cheio
AoqECVideoExternalCaptureNotEnabled 211 A captura de vídeo externa não está habilitada
AoqECVideoExternalEncoderNotEnabled 212 A codificação de vídeo externa não está habilitada
AoqECVideoDispositivo 220 Erro genérico do dispositivo de vídeo
AoqECVideoDeviceCameraOpenFail 221 Falha ao abrir a câmera
AoqECVideoDeviceCameraAuthFalha 222 Permissão de câmera não concedida
AoqECVideoDispositivoCâmeraOcupado 223 A câmera está em uso
AoqECVideoDeviceCameraRunningError 224 Exceção de tempo de execução da câmera
AoqECVideoCodec 230 Erro genérico de codec de vídeo
AoqECVideoCodecEncoderInitFail 231 Falha ao inicializar o codificador de vídeo
AoqECVideoRender 240 Erro genérico de renderização de vídeo
AoqECVideoRenderCreateFail 241 Falha ao criar renderização de vídeo
AoqECVideoRenderDrawError 242 Erro de desenho de renderização de vídeo
AoqECScreen 300 Erro geral de captura de tela
AoqECScreenAuthFailed 310 Permissão de captura de tela negada
AoqECScreenStartFailed 311 Falha ao iniciar a captura de tela

Código de aviso Aoq

Valor enum Valor Descrição
AoqWCOK 0 Nenhum aviso
AoqWCAudio 100 Aviso sonoro genérico
AoqWCAudioUivo 101 Uivo de áudio detectado
AoqWCAudioDispositivo 120 Aviso genérico de dispositivo de áudio
AoqWCAudioDeviceMicEnumerateError 121 Erro de enumeração de microfone
AoqWCAudioDeviceMicStartTimeout 122 A inicialização do microfone expirou
AoqWCAudioDeviceRecordingError 123 Erro durante a gravação
AoqWCAudioDeviceSpeakerEnumerateError 124 Erro de enumeração de alto-falantes
AoqWCAudioDeviceSpeakerStartTimeout 125 A inicialização do alto-falante expirou
AoqWCAudioDevicePlayoutError 126 Erro durante a reprodução
AoqWCVídeo 200 Aviso genérico de vídeo
AoqWCVideoCameraEnumerateError 201 Erro de enumeração de câmera
AoqWCVideoEncoderSwitched 202 Codificador de vídeo comutado
AoqWCVideoRenderDowngrade 203 Renderização de vídeo rebaixada

Modo AoqMirror

Valor enum Valor Descrição
AoqMirrorModeDesativado 0 Desativar espelhamento
AoqMirrorModeEnabled 1 Habilitar espelhamento

Modo de Orientação Aoq

Valor enum Valor Descrição
AoqOrientationModeAuto 0 Ajuste automático
AoqOrientationModeRetrato 1 Retrato
AoqOrientationModePaisagem 2 Paisagem

Modo AoqRender

Valor enum Valor Descrição
AoqRenderModeAuto 0 Modo adaptativo
AoqRenderModeStretch 1 Modo esticar
AoqRenderModeFill 2 Modo de preenchimento
AoqRenderModeCrop 3 Modo de corte

Isso é usado apenas como AoqVideoCanvas.renderMode. O Linux não tem implementação de renderização, portanto esta enumeração não entra em vigor.

AoqAudioStreamDirection

Valor enum Valor Descrição
AoqAudioStreamPublicar 0 Publicação de áudio
AoqAudioStreamPlayout 1 Áudio de reprodução

AoqAudioExternalStreamToggle

Valor enum Valor Descrição
AoqAudioExternalStreamToggleNormal 0 Recuperado
AoqAudioExternalStreamTogglePause 1 Pausado

Esta enumeração é declarada no cabeçalho, mas nenhuma API pública a utiliza atualmente. É uma definição reservada.

Tipos de áudio

AoqAudioCaptureConfig

Campo Tipo Valor padrão Descrição
éExterno bool falso Especifica se deve ser usada captura externa
canal interno 1 Número de canais de captura de áudio. 1 e 2 são suportados.

isVoipMode é um campo somente móvel e não existe no Linux.

AoqAudioPlaybackConfig

Campo Tipo Valor padrão Descrição
éExterno bool falso Especifica se deve ser usada reprodução externa
canal interno 1 Número de canais de reprodução de áudio. 1 e 2 são suportados.

isVoipMode/isDefaultSpeaker são campos somente móveis e não existem no Linux.

AoqAudioCodecConfig

Campo Tipo Valor padrão Descrição
trackType AoqTrackType AoqTrackTypeÁudio Tipo de trilha
tipo de codec AoqEncoderType AoqEncoderTypeAudioOpus Tipo de codificação
taxa de amostra interno 48.000 Taxa de amostragem, em Hz
canal interno 1 Número de canais. 1 e 2 são suportados.
taxa de bits interno 32.000 Taxa de bits, em bits/s

Restrições de taxa de amostragem (extraídas dos comentários no arquivo de cabeçalho):

AoqAudioDeviceRouteType

Valor enum Valor Descrição
AoqAudioDeviceRouteDefault 0 Rota padrão
AoqAudioDeviceRouteHeadset 1 Fones de ouvido
AoqAudioDeviceRouteAuricular 2 Receptor
AoqAudioDeviceRouteHeadsetNoMic 3 Fones de ouvido sem microfone
AoqAudioDeviceRouteSpeakerPhone 4 Alto-falante embutido
AoqAudioDeviceRouteUsb 5 Dispositivo de áudio USB
AoqAudioDeviceRouteBluetooth 6 Bluetooth
AoqAudioDeviceRouteBluetoothA2dp 7 Bluetooth A2DP

Esta é apenas uma referência para o routeType valores de onAudioDeviceRouteChanged. O Linux não aciona esse retorno de chamada.

AoqAudioDeviceStateCode

Valor enum Valor Descrição
AoqAudioDeviceNenhum 0 Nenhum estado
AoqAudioDeviceRecordIniciando 1 Captura começando
AoqAudioDeviceRecordiniciado 2 Captura iniciada
AoqAudioDeviceRecordStopping 3 Parada de captura
AoqAudioDeviceRecordParado 4 Captura interrompida
AoqAudioDeviceRecordFail 5 Falha na captura
AoqAudioDevicePlayIniciando 6 Início da reprodução
AoqAudioDevicePlayiniciado 7 A reprodução começou
AoqAudioDevicePlayStopping 8 Parada de reprodução
AoqAudioDevicePlayStopped 9 A reprodução parou
AoqAudioDevicePlayFail 10 Falha na reprodução

AoqAudioDeviceState

Campo Tipo Valor padrão Descrição
estado AoqAudioDeviceStateCode AoqAudioDeviceNenhum Status de operação do dispositivo
motivo interno 0 Código de motivo do erro. Consulte AoqErrorCode.

AoqAudioFrameData

Dados de áudio brutos. É usado tanto para alimentação de fluxo externo através de pushAudioExternalStreamData e o IAudioFrameObserver retorno de chamada.

Campo Tipo Valor padrão Descrição
dataPtr vazio* 0 Ponteiro para os dados PCM de áudio
numOfSamples interno 0 Número de amostras (por canal)
bytesPerSample interno 0 Bytes por amostra
numOfCanais interno 0 Número de canais
amostrasPerSec interno 0 Número de amostras por segundo (taxa de amostragem)
pushSequência interno 0 Rodada de entrada PCM (usada para notificação de conclusão de consumo de fluxo)
carimbo de data / hora int64_t 0 Carimbo de data/hora
tamanho dos dados interno 0 Comprimento dos dados, em bytes
autoGenMute bool falso Eficaz apenas em retornos de chamada. true indica dados silenciosos gerados pelo SDK.

AoqAudioSource

Valor enum Valor Descrição
AoqAudioSourceCapturado 0 Dados de áudio capturados
AoqAudioSourceProcessCapturado 1 Dados de áudio após processamento 3A
AoqAudioSourcePublicar 2 Dados de áudio a serem publicados (requer uma conexão bem-sucedida)
AoqAudioSourceReprodução 3 Dados de áudio a serem reproduzidos
AoqAudioSourceMax 4 Espaço reservado, não use

Modo AoqAudioObserver

Valor enum Valor Descrição
AoqAudioObserverModeReadOnly 0 Modo somente leitura
AoqAudioObserverModeReadWrite 1 Modo leitura-gravação

AoqAudioObserverConfig

Campo Tipo Valor padrão Descrição
taxa de amostra interno 48.000 Taxa de amostragem do áudio de retorno de chamada, em Hz. A reamostragem é realizada se a taxa não corresponder à da fonte.
canais interno 1 Número de canais de áudio no retorno de chamada. 1 e 2 são suportados. Este parâmetro é limitado pelos parâmetros do codec do fluxo de assinatura.
modo AoqAudioObserverMode AoqAudioObserverModeReadOnly Modo de retorno de chamada

Taxas de amostragem suportadas: 8, 12, 16, 24, 32, 44,1, 48, 64, 88,2, 96, 176,4 e 192K.

AoqAudioVolumeIndicaçãoConfig

Campo Tipo Valor padrão Descrição
intervalo interno 0 Intervalo de retorno de chamada, em milissegundos. Um valor menor ou igual a 0 desativa o retorno de chamada. Um valor maior que 0 e menor que 10 é tratado como 10.
suave interno 3 Coeficiente de suavização de volume. Um valor maior resulta em uma saída mais suave. Valores válidos: 0 a 10.

AoqAudioVolume

Campo Tipo Valor padrão Descrição
volume interno 0 Volume instantâneo suavizado. Valores válidos: 0 a 255.

Arquivo de áudio e tipos de fluxo de áudio externo

AoqAudioFileMixConfig

Campo Tipo Valor padrão Descrição
nome do arquivo const char* nullptr Nome do arquivo (incluindo o caminho)
ciclos interno -1 Número de loops. -1 indica loop ilimitado.
startPosMs longo 0 Posição inicial de reprodução, em milissegundos
publicarVolume interno 100 Volume de publicação. Valores válidos: 0 a 100.
volume de reprodução interno 100 Volume de reprodução. Valores válidos: 0 a 100.

fileId não faz parte do corpo da configuração e é passado como um parâmetro separado para startAudioFile.

AoqAudioFileStateCode

Valor enum Valor Descrição
AoqAudioFileNone 0 Nenhum estado
AoqAudioFileIniciado 1 Iniciado
AoqAudioFileStopped 2 Parado
AoqAudioFilePausado 3 Pausado
AoqAudioFileRetomado 4 Retomada
AoqAudioFileEnd 5 Reprodução concluída
AoqAudioFileBuffering 6 Buffer
AoqAudioFileBufferingEnd 7 O buffer terminou
AoqAudioFileFalha 8 Falha na reprodução

AoqAudioFileErrorCode

Valor enum Valor Descrição
AoqAudioFileNoError 0 Nenhum erro
AoqAudioFileOpenFalha 1 Falha ao abrir o arquivo
AoqAudioFileDecodeFalha 2 Falha ao decodificar o arquivo

AoqAudioFileState

Campo Tipo Valor padrão Descrição
ID do arquivo const char* nullptr ID do arquivo. É válido apenas durante o retorno de chamada.
código do estado AoqAudioFileStateCode AoqAudioFileNone Código de status do arquivo
código de erro AoqAudioFileErrorCode AoqAudioFileNoError Código de erro do arquivo

AoqAudioExternalStreamConfig

Campo Tipo Valor padrão Descrição
trackType AoqTrackType AoqTrackTypeÁudio Tipo de trilha de áudio
tipo de codec AoqEncoderType AoqEncoderTypeAudioPCM Formato de fluxo de áudio. PCM é suportado.
canais interno 1 Número de canais. É limitado pelo codec de áudio do fluxo de publicação (1 e 2 são suportados e canais adicionais são ignorados).
taxa de amostra interno 48.000 Taxa de amostragem, em Hz
volume de reprodução interno 100 Volume de reprodução. Valores válidos: 0 a 100.
publicarVolume interno 100 Volume de publicação. Valores válidos: 0 a 100.
maxBufferDuration interno 600000 Duração máxima do buffer, em milissegundos (ou seja, 10 minutos). Valores válidos: 100 e acima. Se a duração exceder esse valor, o Push falhará.
habilitar3A bool falso Aplicar processamento 3A ao PCM de entrada (não tem efeito no Linux, consulte 4.3)

Taxas de amostragem suportadas: 8, 12, 16, 24, 32, 44,1, 48, 64, 88,2, 96, 176,4 e 192K.

streamId não faz parte do corpo da configuração e é passado como um parâmetro separado para addAudioExternalStream.

Tipos de vídeo

AoqVideoCanvas

Campo Tipo Valor padrão Descrição
ver vazio* nullptr Um ponteiro opaco para o identificador de visualização nativo da plataforma. Passe nullptr para remover a ligação.
modo de renderização AoqRenderMode AoqRenderModeAuto Modo de preenchimento de renderização

Significados da plataforma de view: NSView* na Apple, HWND no Windows e o objeto adaptador de visualização de renderização interna do SDK no Android. Você deve garantir que o ciclo de vida do view é mais longo do que o período durante o qual é definido pelo setLocalView/setRemoteView.

Nenhuma implementação de plataforma correspondente no Linux. Esta estrutura não tem uso prático no Linux.

AoqVideoCaptureConfig

Campo Tipo Valor padrão Descrição
largura interno 1280 Largura da captura, em pixels. Este parâmetro é ineficaz quando isExternal=true.
altura interno 720 Altura da captura, em pixels. Este parâmetro é ineficaz quando isExternal=true.
FPS interno 15 Taxa de quadros de captura. Este parâmetro é ineficaz quando isExternal=true (o ritmo é determinado pela entrega do quadro).
éExterno bool falso Especifica se a captura externa deve ser usada. Se for verdade, a câmera não é aberta e os quadros são alimentados por pushExternalVideoCapturedFrame.

cameraDirection é um campo apenas para dispositivos móveis e não existe em plataformas de desktop (incluindo Linux). No Linux, recomendamos que você sempre defina isExternal = true.

AoqVideoCodecConfig

A codificação e a decodificação compartilham a mesma estrutura. Para decodificação, apenas trackType/codecType/width/height/fps/bitrate entrar em vigor e participar da negociação como proposta de subscrição. minBitrate/keyframeInterval/mirrorMode/orientationMode/isExternal são usados ​​apenas para codificação.

Campo Tipo Valor padrão Descrição
éExterno bool falso Modo de codificação externa. Quando for verdade, você envia quadros codificados e o SDK não executa captura ou codificação.
trackType AoqTrackType AoqTrackTypeVídeo Tipo de trilha
tipo de codec AoqEncoderType AoqEncoderTypeVideoH264 Tipo de codificação
largura interno 540 Largura da resolução, em pixels
altura interno 960 Altura da resolução, em pixels
FPS interno 5 Taxa de quadros
taxa de bits interno 500000 Taxa de bits inicial, em bit/s
minTaxa de bits interno 128.000 Taxa de bits mínima, em bit/s
keyframeInterval interno 2 Intervalo de quadro-chave, em segundos
modo espelho AoqMirrorMode AoqMirrorModeDesativado Modo espelho
modo de orientação AoqOrientationMode AoqOrientationModeAuto Modo de orientação

AoqVideoPixelFormat

Valor enum Valor Descrição Compatível com Linux
AoqVideoPixelFormatUnknown 0 Formato desconhecido -
AoqVideoPixelFormatI420 1 I420 (formato plano YUV) Suportado
AoqVideoPixelFormatNV12 2 NV12 (formato semiplanar YUV) Suportado
AoqVideoPixelFormatNV21 3 NV21 (formato semiplanar YUV) Suportado
AoqVideoPixelFormatBGRA 4 BGRA (32 bits) Suportado
AoqVideoPixelFormatRGBA 5 RGBA (32 bits) Suportado
AoqVideoPixelFormatCVPixelBuffer 6 Efetivo apenas em plataformas Apple Não suportado
AoqVideoPixelFormatTextureOES 7 Textura OES externa do Android Não suportado
AoqVideoPixelFormatTexture2D 8 Textura 2D regular do Android Não suportado

Os valores enum 6/7/8 ainda são visíveis no arquivo de cabeçalho (eles não são excluídos pela compilação condicional), mas o Linux não possui a capacidade de plataforma correspondente. Se você passá-los, eles serão tratados como formatos não suportados.

AoqVideoFrame

Um quadro de vídeo bruto externo. É usado para ambos pushExternalVideoCapturedFrame e o IVideoFrameObserver retorno de chamada.

Campo Tipo Valor padrão Descrição
formato AoqVideoPixelFormat AoqVideoPixelFormatUnknown Formato de pixels
largura interno 0 Largura, em pixels
altura interno 0 Altura, em pixels
dataPtr vazio* 0 Dados em formato compactado (NV12/NV21/BGRA/RGBA)
tamanho dos dados interno 0 Número de bytes de dados compactados
dadosY vazio* 0 Avião I420 Y
dadosU vazio* 0 Avião I420 U
dadosV vazio* 0 Avião I420 V
passoY interno 0 Passo do plano Y
passoU interno 0 Passo do plano U
passoV interno 0 Passo do plano V
nativoPixelBuffer vazio* 0 Usado para cópia zero da Apple (CVPixelBufferRef). Este campo não é usado no Linux.
ID da textura interno 0 ID da textura do Android. Este campo não é usado no Linux.
transformarMatriz matriz flutuante (16 elementos) Todos os zeros Matriz de transformação de textura (linha principal 4x4). Este campo não é usado no Linux.
carimbo de data / hora int64_t 0 Carimbo de data/hora, em milissegundos. Se for 0, o SDK o preenche com a hora local.

AoqVideoCodecType

Valor enum Valor Descrição
AoqVideoCodecTypeJPEG 0 Codificação JPEG

AoqVideoEncodedFrame

Um quadro de vídeo codificado externamente. O chamador executa a codificação e o SDK empacota e envia o quadro diretamente, sem recodificação.

Campo Tipo Valor padrão Descrição
codec AoqVideoCodecType AoqVideoCodecTypeJPEG Formato de codec
dados vazio* nullptr Ponteiro para os dados codificados
tamanho dos dados interno 0 Número de bytes dos dados codificados
largura interno 0 Largura, em pixels
altura interno 0 Altura, em pixels
carimbo de data / hora int64_t 0 Carimbo de data/hora, em milissegundos. Se for 0, o SDK o preenche com a hora local.

AoqVideoDeviceStateCode

Valor enum Valor Descrição
AoqVideoDeviceNone 0 Nenhum estado
AoqVideoDeviceCaptureIniciando 1 Iniciando a câmera
AoqVideoDeviceCaptureiniciado 2 Câmera iniciada
AoqVideoDeviceCaptureStopping 3 Câmera parando
AoqVideoDeviceCaptureParado 4 Câmera parada
AoqVideoDeviceCaptureFail 5 Falha ao iniciar a câmera (por exemplo, permissão negada ou dispositivo indisponível)

AoqVideoDeviceState

Campo Tipo Valor padrão Descrição
estado AoqVideoDeviceStateCode AoqVideoDeviceNone Status da operação de captura do dispositivo
motivo interno 0 Código de motivo do erro. Consulte AoqErrorCode.

AoqVideoFonte

Valor enum Valor Descrição
AoqVideoSourceCapturado 0 Dados de vídeo capturados antes do pré-processamento
AoqVideoSourcePreEncode 1 Dados de vídeo antes da codificação, após o pré-processamento
AoqVideoSourceRemoto 2 Dados de vídeo remotos após decodificação e antes da renderização
AoqVideoSourceMax 3 Espaço reservado, não use

Modo AoqVideoObserver

Valor enum Valor Descrição
AoqVideoObserverModeReadOnly 0 Modo somente leitura
AoqVideoObserverModeReadWrite 1 Modo leitura-gravação (suportado apenas para I420/CVPixelBuffer)

Alinhamento AoqVideoObserver

Valor enum Valor Descrição
AoqVideoObserverAlignmentDefault 0 Alinhamento padrão
AoqVideoObserverAlignmentEven 1 Alinhamento de números pares
AoqVideoObserverAlignment4 2 Alinhamento de 4 bytes
AoqVideoObserverAlignment8 3 Alinhamento de 8 bytes
AoqVideoObserverAlignment16 4 Alinhamento de 16 bytes

AoqVideoObserverConfig

Campo Tipo Valor padrão Descrição
formato AoqVideoPixelFormat AoqVideoPixelFormatI420 Formato de pixel esperado dos dados de retorno de chamada
alinhamento AoqVideoObserverAlinhamento AoqVideoObserverAlignmentDefault Política de alinhamento de largura
modo AoqVideoObserverMode AoqVideoObserverModeReadOnly Modo de retorno de chamada. ReadWrite é compatível apenas com I420/CVPixelBuffer.
espelhoAplicado bool falso Especifica se os dados de retorno de chamada devem ser espelhados
trackType AoqTrackType AoqTrackTypeVídeo Trilha de vídeo para observar. Suporta apenas vídeo e tela.