Todos os produtos
Search
Central de documentação

Alibaba Cloud Model Studio:Common video features

Última atualização: Sep 02, 2026

O AOQ Client SDK oferece recursos abrangentes de vídeo, incluindo captura, renderização, configuração de codec, callbacks de dados de quadros e entrada externa de vídeo. Este documento apresenta os recursos de vídeo mais comuns para Android (Java), iOS (Objective-C) e HarmonyOS (ArkTS).

1. Captura de vídeo

1,1 Visão geral

A captura de vídeo ativa a câmera do dispositivo e envia quadros em tempo real para o pipeline de codificação do SDK. O SDK suporta dois modos de captura:

  • Captura interna (padrão): O SDK gerencia automaticamente a câmera: abertura, captura de quadros e fechamento. Permite alternar entre as câmeras frontal e traseira.
  • Captura externa: A aplicação gerencia a câmera ou outra source de vídeo. Os quadros capturados são enviados ao SDK por meio de pushExternalVideoCapturedFrame.

1,2 Parâmetros de configuração de captura

Parâmetro

Tipo

Padrão

Descrição

width

int

1280

Largura da captura em pixels. Não se aplica ao modo de captura externa.

height

int

720

Altura da captura em pixels. Não se aplica ao modo de captura externa.

fps

int

15

Taxa de quadros da captura. No modo de captura externa, a taxa depende da velocidade de envio dos quadros.

isExternal

bool

false

Defina se o modo de captura externa deve ser usado.

cameraDirection

AoqCameraDirection

Front(0)

Direção da câmera. Não se aplica ao modo de captura externa.

1,3 Enumeração de direção da câmera

Valor do enum

Número

Descrição

AoqCameraDirectionFront

0

Câmera frontal

AoqCameraDirectionBack

1

Câmera traseira

1,4 Referência da API

Função

Android

iOS

HarmonyOS

Iniciar captura

startVideoCapture(config)

startVideoCapture:config:

startVideoCapture(config)

Parar captura

stopVideoCapture()

stopVideoCapture

stopVideoCapture()

Alternar câmera

switchCamera(direction)

switchCamera:

switchCamera(direction)

1,5 Exemplo

Android
AoqVideoCaptureConfig config = new AoqVideoCaptureConfig();
config.width = 1280;
config.height = 720;
config.fps = 15;
config.cameraDirection = AoqCameraDirection.AoqCameraDirectionFront;
engine.startVideoCapture(config);
iOS
AoqVideoCaptureConfig *config = [[AoqVideoCaptureConfig alloc] init];
config.width = 1280;
config.height = 720;
config.fps = 15;
config.cameraDirection = AoqCameraDirectionFront;
[engine startVideoCapture:config];
HarmonyOS
let config: AoqVideoCaptureConfig = {
  width: 1280,
  height: 720,
  fps: 15,
  cameraDirection: AoqCameraDirection.AoqCameraDirectionFront
};
engine.startVideoCapture(config);

2. Renderização de vídeo

2,1 Visão geral

A renderização de vídeo exibe na tela os quadros capturados localmente ou recebidos remotamente. O SDK permite definir uma janela de pré-visualização local e uma janela de renderização remota. Utilize trackType para diferenciar o fluxo de vídeo (Video) do fluxo de compartilhamento de tela (Screen).

2,2 Modos de renderização

Valor do enum

Número

Descrição

AoqRenderModeAuto

0

Modo automático

AoqRenderModeStretch

1

Estica para preencher. A imagem pode ficar distorcida.

AoqRenderModeFill

2

Ajusta com letterboxing. Exibe a imagem inteira.

AoqRenderModeCrop

3

Modo de corte. Partes da imagem podem ser removidas.

2,3 Configuração do canvas

Parâmetro

Tipo

Padrão

Descrição

view

View da plataforma

null

Visualize de renderização. Android: SurfaceView ou TextureView. iOS: UIView. HarmonyOS: XComponent.

renderMode

AoqRenderMode

Auto(0)

Modo de exibição da renderização

2,4 Referência da API

Função

Android

iOS

HarmonyOS

Definir pré-visualização local

setLocalView(trackType, canvas)

setLocalView:trackType:canvas:

setLocalView(trackType, canvas)

Definir visualize remota

setRemoteView(trackType, canvas)

setRemoteView:trackType:canvas:

setRemoteView(trackType, canvas)

ObservaçãoDiferenças entre plataformas: O Android utiliza SurfaceView ou TextureView como contêiner de renderização. O iOS usa UIView (encapsulado internamente pelo AoqRenderView com aceleração Metal). O HarmonyOS emprega o XComponent (gerenciado pelo AoqXComponentController para renderização nativa).

3. Configuração de codec de vídeo

3,1 Visão geral

Configure os parâmetros de codificação de vídeo, incluindo formato, resolução, taxa de quadros, bitrate, intervalo de keyframes, espelhamento e orientação. Use trackType para aplicar configurações de codificação distintas à faixa de vídeo e à faixa de compartilhamento de tela.

3,2 Parâmetros de configuração de codificação

Parâmetro

Tipo

Padrão

Descrição

trackType

AoqTrackType

Video(1)

Tipo de faixa: Video

codecType

AoqEncoderType

VideoH264(3)

Formato de codificação

width

int

720

Largura codificada

height

int

1280

Altura codificada

fps

int

5

Taxa de quadros de codificação

bitrate

int

500000

Bitrate alvo (bps)

minBitrate

int

128000

Bitrate mínimo (bps)

keyframeInterval

int

2

Intervalo de keyframes (segundos)

mirrorMode

AoqMirrorMode

Disabled(0)

Modo de espelhamento

orientationMode

AoqOrientationMode

Auto(0)

Modo de orientação

isExternal

bool

false

Modo de codificação externa. Quando verdadeiro, a aplicação envia quadros pré-codificados.

3,3 Enumeração de formato de codificação

Valor do enum

Número

Descrição

AoqEncoderTypeVideoH264

3

Codificação H.264

AoqEncoderTypeVideoJpeg

4

Codificação JPEG (para quadros codificados externamente)

3,4 Modo de espelhamento

Valor do enum

Número

Descrição

AoqMirrorModeDisabled

0

Espelhamento desativado

AoqMirrorModeEnabled

1

Espelhamento ativado

3,5 Modo de orientação

Valor do enum

Número

Descrição

AoqOrientationModeAuto

0

Orientação automática

AoqOrientationModePortrait

1

Orientação retrato

AoqOrientationModeLandscape

2

Orientação paisagem

3,6 Referência da API

Função

Android

iOS

HarmonyOS

Definir configuração de codificação

setVideoEncoderConfig(config)

setVideoEncoderConfig:

setVideoEncoderConfig(config)

4. Entrada externa de quadros de vídeo

4,1 Visão geral

A entrada externa de quadros de vídeo permite que sua aplicação envie dados personalizados de quadros para o SDK, atendendo a cenários de captura ou codificação externa. Dois métodos de envio são suportados:

  • Enviar quadros brutos: Envia dados de pixels não codificados (I420, NV12, NV21, BGRA, RGBA e formatos similares) para o SDK. O próprio SDK codifica os dados.
  • Enviar quadros codificados: Envia dados já codificados (por exemplo, JPEG) diretamente ao SDK. O SDK empacota e transmite o conteúdo sem recodificar.

O roteamento é controlado por trackType: AoqTrackTypeVideo direciona para a faixa de captura de vídeo; AoqTrackTypeScreen direciona para a faixa de compartilhamento de tela.

4,2 Enumeração de formato de pixel

Valor do enum

Número

Descrição

Suporte de plataforma

AoqVideoPixelFormatI420

1

I420 tri-planar

Todas as plataformas

AoqVideoPixelFormatNV12

2

NV12 bi-planar

Todas as plataformas

AoqVideoPixelFormatNV21

3

NV21 bi-planar

Todas as plataformas

AoqVideoPixelFormatBGRA

4

BGRA compactado

Todas as plataformas

AoqVideoPixelFormatRGBA

5

RGBA compactado

Todas as plataformas

AoqVideoPixelFormatCVPixelBuffer

6

Zero-copy Apple

Apenas iOS

AoqVideoPixelFormatTextureOES

7

Textura OES

Apenas Android

AoqVideoPixelFormatTexture2D

8

Textura 2D

Apenas Android

4,3 Estrutura de dados de quadro de vídeo bruto (AoqVideoFrame)

Campo

Tipo

Descrição

format

AoqVideoPixelFormat

Formato de pixel

width

int

Largura em pixels

height

int

Altura em pixels

data

byte[] / ArrayBuffer

Dados em formato compactado (NV12/NV21/BGRA/RGBA)

dataY / dataU / dataV

byte[] / ArrayBuffer

Dados tri-planares I420

strideY / strideU / strideV

int

Strides tri-planares I420

textureId

int

ID da textura (válido para TextureOES/Texture2D no Android)

transformMatrix

float[16]

Matriz de transformação de textura 4×4 (Android)

eglContext

EGLContext

Contexto EGL compartilhado (Android)

pixelBuffer

CVPixelBufferRef

Zero-copy Apple (iOS)

timeStamp

long

Timestamp em ms. Se for 0, o SDK utiliza o relógio local.

4,4 Estrutura de dados de quadro de vídeo codificado (AoqVideoEncodedFrame)

Campo

Tipo

Padrão

Descrição

codec

AoqVideoCodecType

JPEG(0)

Formato de codificação

data

byte[] / ArrayBuffer

-

Dados codificados

width

int

-

Largura em pixels

height

int

-

Altura em pixels

timeStamp

long

0

Timestamp em ms

4,5 Referência da API

Função

Android

iOS

HarmonyOS

Enviar quadro bruto

pushExternalVideoCapturedFrame(trackType, frame)

pushExternalVideoCapturedFrame:frame:

pushExternalVideoCapturedFrame(trackType, frame)

Enviar quadro codificado

pushExternalVideoEncodedFrame(trackType, frame)

pushExternalVideoEncodedFrame:frame:

pushExternalVideoEncodedFrame(trackType, frame)

5. Callbacks de quadros de vídeo

5,1 Visão geral

Os callbacks de quadros de vídeo permitem obter dados brutos em diferentes pontos do pipeline para análise de vídeo, processamento personalizado, gravação e outros cenários. Tanto o modo somente leitura quanto o modo leitura-escrita são suportados. No modo leitura-escrita, é possível modifique os dados do quadro e devolvê-los ao SDK.

5,2 Posições de source de dados suportadas

Source de dados

Valor do enum

Descrição

Captured

0

Dados de vídeo após a captura, antes do pré-processamento

PreEncode

1

Dados de vídeo antes da codificação, após o pré-processamento

Remote

2

Dados de vídeo remoto após decodificação, antes da renderização

5,3 Parâmetros de configuração de callback

Parâmetro

Tipo

Padrão

Descrição

format

AoqVideoPixelFormat

I420(1)

Formato de pixel para os dados do callback

alignment

AoqVideoObserverAlignment

Default(0)

Política de alinhamento de largura

mode

AoqVideoObserverMode

ReadOnly(0)

Modo somente leitura (0) ou leitura-escrita (1)

mirrorApplied

bool

false

Defina se o espelhamento deve ser aplicado aos dados do callback

5,4 Enumeração de alinhamento de largura

Valor do enum

Número

Descrição

AoqVideoObserverAlignmentDefault

0

Alinhamento padrão

AoqVideoObserverAlignmentEven

1

Alinhamento de 2 bytes

AoqVideoObserverAlignment4

2

Alinhamento de 4 bytes

AoqVideoObserverAlignment8

3

Alinhamento de 8 bytes

AoqVideoObserverAlignment16

4

Alinhamento de 16 bytes

5,5 Etapas de uso

  1. Registre o observer: Chame setVideoFrameObserver para definir o listener de callback de quadros de vídeo.
  2. Ative a source de dados: Chame enableVideoFrameObserver para selecione a posição da source de dados e iniciar os callbacks.
  3. Processe os dados do callback: Obtenha os dados do quadro dentro do callback. Esses dados são válidos apenas durante a execução do callback. Faça uma cópia caso precise utilizá-los de forma assíncrona.

5,6 Referência da API

Função

Android

iOS

HarmonyOS

Registrar observer

setVideoFrameObserver(listener)

setVideoFrameObserver:

setVideoFrameObserver(observer)

Ativar callbacks

enableVideoFrameObserver(enabled, source, config)

enableVideoFrameObserver:videoSource:config:

enableVideoFrameObserver(enabled, source, config)

5,7 Métodos de callback

Callback

Android

iOS

HarmonyOS

Dados capturados

onCapturedVideoFrame(frame)

onCapturedVideoFrame:

onCapturedVideoFrame(frame)

Dados pré-codificação

onPreEncodeVideoFrame(trackType, frame)

onPreEncodeVideoFrame:frame:

onPreEncodeVideoFrame(trackType, frame)

Dados remotos

onRemoteVideoFrame(trackType, frame)

onRemoteVideoFrame:frame:

onRemoteVideoFrame(trackType, frame)

ObservaçãoRetornar true/ YES em um callback indica que os dados foram modificados e devem ser gravados de volta no SDK. Isso só tem efeito no modo ReadWrite com formato I420.

7. Controle de envio de fluxo de mídia

7,1 Visão geral

Controle se os fluxos de mídia locais são enviados. Use trackType para direcionar uma faixa específica (Audio, Video ou Screen). Quando o envio está desativado, a captura e a codificação continuam, mas os dados não são transmitidos ao destino remoto.

7,2 Referência da API

Função

Android

iOS

HarmonyOS

Controlar envio de fluxo

enableSendMediaStream(trackType, enable)

enableSendMediaStream:enable:

enableSendMediaStream(trackType, enable)

7,3 Enumeração de tipo de faixa

Valor do enum

Número

Descrição

AoqTrackTypeAudio

0

Faixa de áudio

AoqTrackTypeVideo

1

Faixa de vídeo

AoqTrackTypeData

2

Faixa de dados

8. Monitoramento de estado do dispositivo de vídeo

8,1 Visão geral

O SDK monitora automaticamente alterações no estado da câmera e notifica a camada da aplicação por meio do callback onVideoDeviceStateChanged.

8,2 Códigos de estado do dispositivo

Código de estado

Valor

Descrição

AoqVideoDeviceNone

0

Estado inicial

AoqVideoDeviceCaptureStarting

1

Captura iniciando

AoqVideoDeviceCaptureStarted

2

Captura iniciada

AoqVideoDeviceCaptureStopping

3

Captura parando

AoqVideoDeviceCaptureStopped

4

Captura parada

AoqVideoDeviceCaptureFail

5

Falha na captura

8,3 Referência de callback

Callback

Android

iOS

HarmonyOS

Alteração de estado do dispositivo

onVideoDeviceStateChanged(state)

onVideoDeviceStateChanged:

onVideoDeviceStateChanged(state)

9. Códigos de erro e aviso de vídeo

9,1 Códigos de erro de vídeo

Código de erro

Valor

Descrição

AoqErrorCodeVideo

200

Erro geral de vídeo

VideoExternalBufferFull

210

Buffer externo de vídeo cheio

VideoDevice

220

Erro geral de dispositivo de vídeo

CameraOpenFail

221

Falha ao abrir a câmera

CameraAuthFailed

222

Permissão de câmera negada

CameraOccupied

223

Câmera em uso por outro processo

CameraRunningError

224

Erro de execução da câmera

VideoCodec

230

Erro geral de codec de vídeo

EncoderInitFail

231

Falha na inicialização do codificador

VideoRender

240

Erro geral de renderização de vídeo

RenderCreateFail

241

Falha na criação do renderizador

RenderDrawError

242

Erro de desenho na renderização

Screen

300

Erro geral de compartilhamento de tela

ObservaçãoCódigos de erro adicionais para Android: ScreenPermissionDenied(310) — permissão de compartilhamento de tela negada; ScreenForegroundServiceFailed(311) — falha ao iniciar o service em primeiro plano.

9,2 Códigos de aviso de vídeo

Código de aviso

Valor

Descrição

AoqWCVideo

200

Aviso geral de vídeo

CameraEnumerateError

201

Erro na enumeração da câmera

EncoderSwitched

202

Aviso de troca de codificador

RenderDowngrade

203

Aviso de downgrade de renderização

Apêndice: Lista completa de métodos da API de vídeo

Categoria

Método

Descrição

Controle de captura

startVideoCapture

Abre o dispositivo de captura de vídeo

Controle de captura

stopVideoCapture

Fecha o dispositivo de captura de vídeo

Controle de captura

switchCamera

Alterna entre a câmera frontal e traseira

Controle de renderização

setLocalView

Define a janela de pré-visualização local

Controle de renderização

setRemoteView

Define a janela de renderização remota

Codec

setVideoEncoderConfig

Define os parâmetros de codificação de vídeo

Entrada externa

pushExternalVideoCapturedFrame

Envia quadro de vídeo bruto

Entrada externa

pushExternalVideoEncodedFrame

Envia quadro de vídeo codificado

Compartilhamento de tela

startScreenCapture

Inicia a captura de tela

Compartilhamento de tela

stopScreenCapture

Para a captura de tela

Controle de fluxo

enableSendMediaStream

Controla o envio do fluxo de mídia

Callbacks de quadros

setVideoFrameObserver

Registra o observer de quadros de vídeo

Callbacks de quadros

enableVideoFrameObserver

Ative ou desative os callbacks de quadros de vídeo