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:
setVideoDecoderConfigé uma proposta de codec para o assinante e deve ser chamada antesconnect. Durante a decodificação, apenastrackType/codecType/width/height/fps/bitrateentrar em vigor.pushExternalVideoCapturedFramerequerstartVideoCapture(isExternal=true)para vídeo oustartScreenCapture(isExternal=true)para Tela primeiro. Ele retornaAoqECVideoExternalCaptureNotEnabled(211)quando a captura externa não é iniciada,AoqECParamInvalidquando o formato não é suportado, eAoqECVideoExternalBufferFull(210)quando o buffer está cheio.pushExternalVideoEncodedFramerequersetVideoEncoderConfig(isExternal=true)primeiro. O SDK empacota e envia o quadro diretamente, sem recodificação. Atualmente, apenas JPEG é compatível.- Quando
frame.timeStampé0, o SDK o preenche com a hora local.
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:
getAudioFileDuration/getAudioFileCurrentPosition: Um valor>=0é o valor em milissegundos; um valor<0indica uma falha e seu valor absoluto é-AoqErrorCode.getAudioFileVolume: Um valor de0-100é o volume; um valor<0indica uma falha e seu valor absoluto é-AoqErrorCode.
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:
-
Quando
pushAudioExternalStreamDataretornaAoqECAudioExternalBufferFull(110), o buffer interno do SDK estará cheio. Recomendamos que você espere 20 ms e depois envie o quadro de dados atual novamente. -
Prática recomendada: em cenários de captura em tempo real, envie 10 ms de dados por vez e envie sempre que os dados estiverem disponíveis. Em cenários de origem de arquivo, envie 40 ms de dados por vez em intervalos de 30 ms e lide com o
AoqECAudioExternalBufferFullvalor de retorno. -
getAudioExternalStreamVolume: Um valor de0-100é o volume; um valor<0indica uma falha e seu valor absoluto é-AoqErrorCode. -
clearAudioExternalStreamBufferretornavoide não tem valor de retorno. -
data.pushSequenceé usado para notificação de conclusão de consumo do SDK (rodada de entrada PCM).Não existe um dispositivo de captura real no Linux. Este grupo de APIs é o caminho principal para o uplink de áudio.
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):
- Codificação: Opus suporta 8/16/48K e PCM suporta 8/16/32/48K;
- Decodificação: 24K é suportado adicionalmente, mas 24K é limitado ao modo Segmento (o modo Stream não suporta 24K);
- Uma combinação inválida aciona o
onErrorretorno de chamada comAoqECParamInvalidduranteconnect.
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. |