O ApsaraVideo Media Processing (MPS) baseia-se em três grupos de termos: conceitos do product, como jobs, pipelines, workflows e templates; fundamentos de áudio e vídeo, como transcodificação, bitrate e frame rate; e termos da plataforma Alibaba Cloud, como regiões e Object Storage Service. Familiarize-se com esses termos antes de enviar um job no console do MPS ou chamar uma operação de API.
Conceitos do product MPS
O MPS organiza o processamento de mídia em torno de jobs. Você pode enviar um job diretamente ou configure um workflow que execute uma sequência predefinida de jobs quando um arquivo é carregado. Um job assíncrono aguarda em um pipeline até que o MPS o agende, e um template de transcodificação ou template de marca d'água fornece os parâmetros de processamento que o job aplica.
Job
Um job é a abstração que o MPS utiliza para representar uma solicitação de processamento de mídia. Cada job contém três informações essenciais: a entrada, a saída e os parâmetros de processamento.
-
Tipos comuns de job — O MPS oferece jobs de análise de informações de mídia, jobs de transcodificação, jobs de consulta de transcodificação, jobs de snapshot e jobs de Video AI.
Os jobs de transcodificação incluem transcodificação padrão, transcodificação Narrowband HD™ 1,0, transcodificação Narrowband HD™ 2,0 e jobs de aprimoramento de áudio e vídeo.
Os jobs de Video AI abrangem produção inteligente, smart tagging, moderação de conteúdo, media fingerprinting e marca d'água de direitos autorais.
-
Envio de job
Método de envio — Envie um job pelo console do MPS, chamando os kits de desenvolvimento de software (SDKs) ou operações de API correspondentes ao tipo de job, ou acionando um workflow configurado por você.
Parâmetros obrigatórios — Ao enviar um job de transcodificação, por exemplo, especifique parâmetros essenciais como arquivo de entrada, caminho de saída, template de transcodificação (ou parâmetros de transcodificação), MPS queue e prioridade.
O tempo necessário para executar diferentes tipos de jobs varia. Alguns jobs são concluídos imediatamente após o envio. A maioria, no entanto, exige download, processamento e análise de arquivos, tarefas que não podem ser concluídas em tempo real. Por isso, os jobs dividem-se em modos de invocação síncrona e assíncrona. A tabela a seguir compara os dois modos.
|
Modo de invocação |
Jobs aplicáveis |
Método de envio |
Resultado da tarefa |
Fluxograma |
|
Modo síncrono |
Jobs de snapshot único e jobs de análise de informações de mídia. |
Chame os SDKs ou as operações de API correspondentes ao tipo de job. |
Após o envio, a operação retorna imediatamente o resultado da tarefa, como o endereço do arquivo de snapshot e os detalhes das informações de mídia. Também é possível consultar periodicamente a operação de consulta de job para obter o resultado, mas não é possível recebê-lo configurando notificações do Message Service (MNS). Pode ocorrer um erro de timeout se o arquivo de entrada for grande. Configure um mecanismo de nova tentativa conforme necessário. |
|
|
Modo assíncrono |
Todos os tipos de jobs do MPS. |
Console do MPS (para tipos específicos). Chame os SDKs ou as operações de API correspondentes ao tipo de job. Acione um workflow configurado por você (para tipos específicos). |
Após o envio, a operação retorna imediatamente apenas se o envio foi bem-sucedido. Para obter o resultado da tarefa, use consulta periódica ou configure o MNS. |
Para obter o resultado de um job assíncrono, utilize um dos métodos abaixo:
Consulta periódica — Cada job possui um JobId exclusivo, retornado ao chamador no momento do envio. Visualize o JobId na lista de jobs no console. Anote o JobId e consulte periodicamente a operação de consulta de job para obter o resultado da tarefa.
Configuração do MNS — Configure notificações do MNS para um pipeline ou workflow e receba o resultado da tarefa rapidamente. Uma notificação contém o ID do job (JobId), os dados do usuário (UserData) e o resultado detalhado.
Pipeline
Um pipeline funciona como uma fila para jobs assíncronos. Ao enviar um job assíncrono, ele entra na fila do pipeline. Dentro do limite de concorrência, os jobs na fila são agendados e executados em ordem, com base na prioridade e no horário de envio. Diferentes tipos de pipelines variam quanto à quantidade que você pode criar, aos recursos suportados e às capacidades de concorrência. Para mais informações, consulte Pipeline overview.
Workflow
Um workflow consiste em uma sequência predefinida de jobs. Após o carregamento de um arquivo no bucket especificado do Object Storage Service (OSS) bucket, os jobs são executados em ordem, seguindo as etapas e condições que você organizou previamente.
Template de transcodificação
Um template de transcodificação é um conjunto de parâmetros de processamento identificado por um ID exclusivo. Utilize um template de transcodificação para simplificar as operações ao criar um job de transcodificação ou usar um workflow. Com base na source de criação, os templates de transcodificação classificam-se nos três tipos a seguir. Para mais informações, consulte Transcoding template overview.
Template personalizado — Template de transcodificação criado por você no console do MPS ou por meio de uma chamada de API. Nenhum parâmetro é customizado no backend.
Template customizado — Template de transcodificação no qual o MPS configura parâmetros customizados no backend com base nas suas necessidades personalizadas. Os parâmetros customizados determinam o resultado do processamento, e os parâmetros que você configura não têm efeito. Esses parâmetros customizados não ficam visíveis para você e não podem ser modificados do seu lado.
Template predefinido — Template de transcodificação fornecido pelo MPS para diferentes resoluções, adequadas a faixas específicas de largura de banda de rede. Os templates predefinidos incluem templates estáticos e inteligentes. Os templates estáticos suportam transcodificação padrão, transcodificação de áudio, conversão de formato de contêiner, Narrowband HD™ 1,0 e Narrowband HD™ 2,0. Para mais informações, acesse o console do MPS ou consulte Preset template details.
Job de análise de template
Um job de análise de template retorna a lista de templates predefinidos disponíveis para um arquivo de entrada. Como os arquivos de entrada variam em resolução, bitrate e outros atributos, nem todos os templates predefinidos são adequados para um determinado arquivo. Portanto, antes de usar um template predefinido, chame a operação Submit a template analysis job. Para obter o resultado, chame a operação QueryAnalysisJobList.
Template de marca d'água
Um template de marca d'água reúne parâmetros usados para adicionar uma marca d'água a um vídeo, como posição, deslocamento e tamanho da marca. Cada template de marca d'água é identificado por um ID exclusivo. Para adicionar uma marca d'água a um vídeo de saída, especifique um template de marca d'água ou passe os parâmetros correspondentes diretamente.
Conceitos de áudio e vídeo
Transcodificação
Transcodificação é o processo de converter um fluxo de áudio ou vídeo comprimido e codificado em outro fluxo de áudio ou vídeo, adaptando-o a diferentes larguras de banda de rede, capacidades de processamento de terminais e requisitos do usuário. Essencialmente, a transcodificação consiste em um processo de decodificação seguido por um processo de codificação. Assim, os fluxos antes e depois da conversão podem ou não usar o mesmo formato de codificação de vídeo. H.264, H.265 e AV1 são os formatos de codificação mais utilizados.
Conversão de formato de contêiner
A conversão de formato de contêiner altera o formato de contêiner de um arquivo de vídeo ou áudio, como converter um vídeo AVI para MP4. Nenhuma codificação ou decodificação de áudio ou vídeo é realizada. Em vez disso, o processo extrai os fluxos de vídeo e áudio comprimidos de um arquivo em um formato de contêiner e os empacota em um arquivo de outro formato. Comparada à transcodificação, a conversão de formato de contêiner apresenta duas características principais:
Processamento extremamente rápido — A codificação e decodificação de áudio e vídeo são altamente complexas e consomem a maior parte do tempo de transcodificação. A conversão de formato de contêiner não exige codificação ou decodificação, o que economiza muito tempo de processamento.
Sem perda de qualidade de áudio ou vídeo — Como não há decodificação (descompressão) nem codificação (compressão), não ocorre perda por compressão. O arquivo convertido mantém resolução e bitrate praticamente idênticos aos do arquivo original.
Ao converter MP4 para M3U8 e TS, o tamanho do pacote aumenta devido às especificações do protocolo.
Resolução
A resolução descreve a capacidade de um vídeo de reproduzir detalhes. Geralmente, expressa-se pelo número de pixels em cada dimensão. Por exemplo, 1280 × 720 indica que o vídeo tem 1280 pixels de largura e 720 pixels de altura. Um vídeo com maior resolução contém mais pixels, resultando em detalhes mais refinados e uma imagem mais nítida.
A resolução é o principal fator determinante do bitrate, e diferentes resoluções exigem bitrates distintos. Uma resolução mais alta geralmente requer um bitrate maior, mas cada resolução possui sua própria faixa de bitrate adequada. Abaixo dessa faixa, a qualidade da imagem é ruim. Acima dela, a melhoria na qualidade da imagem é pequena ou inexistente, desperdiçando tráfego de rede e espaço de armazenamento.
Bitrate
Bitrate é o volume de dados que um arquivo de vídeo utiliza por unidade de tempo. Também chamado de fluxo ou taxa de fluxo, é o fator mais importante para o controle de qualidade de imagem na codificação de vídeo. O bitrate é medido em bits por segundo (bit/s ou bps) e comumente expresso em Kbps (milhares de bits por segundo) ou Mbps. Na mesma resolução, um bitrate maior reduz a taxa de compressão e melhora a qualidade da imagem. Um bitrate mais alto também significa uma taxa de amostragem maior por unidade de tempo e maior precisão do fluxo de dados, mantendo o arquivo processado mais fiel ao original e a imagem mais nítida. Em contrapartida, o dispositivo de reprodução exige maiores capacidades de decodificação.
Um bitrate mais alto também gera um arquivo maior. O tamanho do arquivo é calculado pela seguinte fórmula: Tamanho do arquivo = Duração × Bitrate/8. Por exemplo, um arquivo de vídeo de 60 minutos em 720p com bitrate de 1 Mbps, comum online, tem aproximadamente 3600 segundos × 1 Mb/8 = 450 MB.
Frame rate
Frame rate é a unidade de medida para o número de quadros de vídeo exibidos por unidade de tempo, ou seja, a quantidade de imagens atualizadas por segundo. Mede-se em quadros por segundo (FPS) ou hertz (Hz).
Um frame rate mais alto proporciona imagens mais fluidas e realistas. Em geral, 25 a 30 FPS é aceitável, e aumentar o frame rate para 60 FPS melhora perceptivelmente a interatividade e o realismo. No entanto, acima de 75 FPS, torna-se difícil perceber melhorias adicionais na fluidez. Se o frame rate exceder a taxa de atualização da tela, o monitor não consegue acompanhar essa velocidade, desperdiçando os quadros extras e a capacidade de processamento gráfico gasta neles. Na mesma resolução, um frame rate mais alto exige maiores capacidades de processamento da placa de vídeo.
Intervalo de keyframes de vídeo (GOP)
Um grupo de imagens (GOP) é um conjunto de imagens consecutivas dentro de um vídeo ou fluxo de vídeo codificado em MPEG. Um GOP começa com um I-frame e termina no próximo I-frame. Um GOP contém os seguintes tipos de imagem:
I-frame (imagem codificada intra) — Também chamado de quadro codificado intra ou keyframe. Um I-frame é um quadro independente que carrega todas as suas próprias informações e pode ser decodificado sem referenciar outras imagens. Pense nele como uma imagem estática. O primeiro quadro de uma sequência de vídeo é sempre um I-frame, e cada GOP começa com um I-frame.
P-frame (imagem codificada preditiva) — Também chamado de quadro codificado preditivo interquadros. Um P-frame precisa referenciar o I-frame anterior para ser codificado. Ele representa a diferença entre o quadro atual e o quadro anterior, que pode ser um I-frame ou um P-frame. Durante a decodificação, a diferença definida pelo quadro atual é sobreposta à imagem previamente armazenada em cache para gerar a imagem final. Comparado a um I-frame, um P-frame geralmente ocupa menos bits de dados. No entanto, como um P-frame tem dependências complexas dos P-frames e I-frames anteriores, ele é altamente sensível a erros de transmissão.
B-frame (imagem codificada preditiva bidirecional) — Também chamado de quadro codificado preditivo bidirecional. Um B-frame registra a diferença entre o quadro atual e os quadros anterior e posterior. Para decodificar um B-frame, é necessário obter a imagem previamente armazenada em cache e também decodificar a imagem seguinte, sobrepondo ambas aos dados do quadro atual para obter a imagem final. Os B-frames oferecem uma alta taxa de compressão, mas exigem maior desempenho de decodificação. O valor GOP indica o intervalo de keyframes, ou seja, o número de quadros entre dois keyframes, a distância entre dois quadros IDR e o número máximo de quadros em um grupo de quadros. Em geral, é necessário pelo menos um keyframe para cada segundo de vídeo. Aumentar o número de keyframes melhora a qualidade do vídeo, mas também aumenta o consumo de largura de banda e a carga de rede. Para obter o intervalo de tempo, divida o valor GOP em quadros pelo frame rate. Por exemplo, um valor GOP de 250 quadros com um frame rate de 25 FPS resulta em um intervalo de tempo de 10 segundos.
Mantenha o valor GOP dentro de uma faixa razoável para equilibrar a qualidade do vídeo, o tamanho do arquivo (largura de banda de rede) e o comportamento de busca (velocidade de resposta ao arrastar e avançar rapidamente):
Aumentar o valor GOP ajuda a reduzir o tamanho do arquivo de vídeo. Contudo, evite defini-lo excessivamente alto. Um valor GOP muito grande distorce as imagens nos quadros finais do GOP e degrada a qualidade do vídeo.
O valor GOP também é um fator chave que afeta a velocidade de resposta da busca. Durante uma busca, o player localiza o keyframe anterior mais próximo da posição especificada. Um valor GOP maior significa que o keyframe pode estar mais distante da posição especificada, exigindo a decodificação de mais quadros preditivos e aumentando o tempo de resposta da busca (tempo de buffer).
Como os P-frames e B-frames são mais complexos que os I-frames, um valor GOP excessivamente grande gera muitos P-frames e B-frames, reduzindo a eficiência da codificação.
Por outro lado, se o valor GOP for muito pequeno, será necessário aumentar o bitrate de saída do vídeo para evitar a degradação da qualidade da imagem, o que eleva o consumo de largura de banda.
Perfil de codificação de áudio e vídeo
Um perfil de codificação é um conjunto de capacidades específicas de codificação para uma classe específica de aplicações.
O H.264 define os três perfis principais a seguir:
Baseline — Qualidade de imagem básica, adequada para dispositivos móveis. Este perfil suporta I-frames e P-frames, além de suportar apenas varredura progressiva e codificação de comprimento variável adaptativa ao contexto (CAVLC).
Main — Qualidade de imagem convencional, adequada para dispositivos de definição padrão, como players de MP4 com capacidades de decodificação relativamente baixas, players de vídeo portáteis, PSPs e iPods. Este perfil suporta I-frames, P-frames e B-frames, aceita varredura progressiva e entrelaçada, e suporta tanto CAVLC quanto codificação aritmética binária adaptativa ao contexto (CABAC).
High — Alta qualidade de imagem, adequada para dispositivos com alta resolução e telas grandes, como radiodifusão, armazenamento de discos de vídeo (Blu-ray Discs) e televisão de alta definição. Além das capacidades do perfil Main, este perfil adiciona intraprevisão 8 × 8, quantização personalizada, codificação de vídeo sem perdas e mais formatos YUV. Os principais perfis AAC são:
aac_low: Low Complexity AAC (LC)
aac_he: High Efficiency AAC (HE-AAC)
aac_he_v2: High Efficiency AAC version 2 (HE-AACv2)
aac_ld: Low Delay AAC (LD)
aac_eld: Enhanced Low Delay AAC (ELD)
Controle de bitrate e passadas de codificação
O controle de bitrate é o processo de determinação do bitrate de saída durante a codificação de vídeo. Duas configurações trabalham em conjunto: o método de controle de bitrate, que determina como o bitrate de saída é alocado, e o número de passadas de codificação, que define quantas vezes o codificador processa o vídeo. Os métodos de controle de bitrate a seguir são comumente utilizados:
CBR (bitrate constante) — Modo de bitrate fixo em que o arquivo usa um único bitrate do início ao fim. Comparado ao VBR e ABR, o CBR produz arquivos maiores, e a qualidade do vídeo não é significativamente superior à do VBR e ABR.
VBR (bitrate variável) — Modo de bitrate dinâmico, ou seja, bitrate não fixo. Durante a codificação de áudio e vídeo, o bitrate é determinado dinamicamente com base na complexidade do arquivo de entrada: bitrates mais altos são alocados para conteúdo complexo e bitrates mais baixos para conteúdo simples. O VBR geralmente é usado com o modo de codificação Two-Pass. É adequado para cenários de armazenamento porque aproveita melhor o espaço limitado, mas não permite prever o tamanho do arquivo de saída ou suas flutuações de bitrate.
ABR (bitrate médio) — Método padrão de controle de bitrate da Alibaba Cloud. O ABR é um modo de bitrate médio que funciona como uma variante interpolada do VBR. O LAME criou esse modo de codificação para resolver a relação ruim entre tamanho e qualidade do CBR e o tamanho imprevisível do arquivo do VBR. Dentro de um tamanho de arquivo especificado, o ABR divide o fluxo em segmentos de 50 quadros (30 quadros equivalem a cerca de um segundo), usando bitrates relativamente baixos para frequências graves e menos perceptíveis, e bitrates altos para conteúdo de alta frequência e grandes faixas dinâmicas. O ABR atinge o bitrate especificado dentro de um determinado intervalo de tempo: picos locais de bitrate podem exceder o valor especificado, mas o bitrate médio permanece constante dentro de uma faixa razoável e a codificação continua dinâmica com base na complexidade. Portanto, o ABR pode ser considerado um meio-termo entre VBR e CBR.
-
VBV (Video Buffering Verifier) — O verificador de buffer de vídeo oferece uma maneira de manter o bitrate abaixo de um valor máximo. Para usar este método, defina o bitrate máximo de saída (maxrate) e o tamanho do buffer (bufsize). O VBV pode ser usado com codificação Two-Pass ou CRF. Esta última combinação também é conhecida como Capped CRF.
Bufsize — Tamanho do buffer de vídeo. Defina-o com base na flutuação de bitrate esperada. Normalmente, defina bufsize como o dobro do valor de maxrate. Se o cliente tiver um cache pequeno, defina bufsize igual a maxrate. Para limitar o bitrate, defina bufsize como metade do valor de maxrate ou menos.
CRF (fator de taxa constante) — Modo de fator de controle de qualidade. A qualidade do vídeo é quantificada em níveis, onde 0 é sem perdas e 51 é a pior qualidade. Definir o CRF mantém a qualidade subjetiva geral do vídeo constante, fazendo com que o bitrate flutue conforme a complexidade da cena. (Recomendado) Se não tiver certeza de qual CRF usar, defina um valor entre 23 e 29. Ajuste-o com base na complexidade da imagem: cada aumento de 6 reduz o bitrate pela metade, e cada diminuição de 6 dobra o bitrate. Na mesma definição, animações geralmente podem ser configuradas com valores mais altos do que filmagens reais. O CRF oferece melhor qualidade de vídeo, mas não permite prever o tamanho do arquivo de saída ou suas flutuações de bitrate.
Capped CRF — O bitrate gerado pelo CRF não é fixo. Use o CRF junto com o VBV para limitar a faixa de flutuação do bitrate e evitar picos. O MPS suporta as seguintes passadas de codificação:
One-Pass — Método de codificação padrão da Alibaba Cloud. O One-Pass codifica mais rápido que o Two-Pass.
Two-Pass — O codificador executa duas vezes para alocar o bitrate com precisão e produzir um arquivo menor com maior qualidade. A primeira passada analisa o vídeo e gera um arquivo de log; a segunda passada codifica com base nos resultados da análise para alcançar a melhor qualidade de codificação. O Two-Pass leva mais tempo que o One-Pass, portanto não pode ser usado em cenários que exigem alta tempestividade de transcodificação, como streaming ao vivo e comunicação em tempo real. O Two-Pass também é inadequado quando o vídeo de entrada já está altamente comprimido, pois ocorrem artefatos de blocos.
Termos da plataforma Alibaba Cloud
Região
Uma região é um nó de service da Alibaba Cloud. Os services da Alibaba Cloud estão disponíveis em diferentes regiões, permitindo que você selecione services na região mais próxima para menor latência de acesso e melhor experiência do usuário.
Object Storage Service (OSS)
OSS refere-se ao Object Storage Service da Alibaba Cloud. O ApsaraVideo Media Processing transcodifica os arquivos de mídia que você armazena no OSS, e os arquivos de saída transcodificados também são armazenados no OSS. Para mais informações sobre conceitos do OSS, consulte OSS terms.
Bucket
Um bucket é um contêiner usado para armazenar objetos. Todo objeto pertence a um bucket. Um bucket possui vários atributos de configuração, incluindo região, permissões de acesso e classe de armazenamento. Crie diferentes tipos de buckets para armazenar dados distintos conforme suas necessidades. Para mais informações, consulte Bucket in OSS terms.
Objeto
Objetos são a unidade básica de armazenamento de dados no OSS e também são chamados de arquivos do OSS. Diferentemente de um sistema de arquivos tradicional, o OSS não possui estrutura de diretórios hierárquica para objetos. Um objeto consiste em metadados do objeto (Object Meta), dados do usuário (Data) e um nome de arquivo (Key), sendo identificado por uma Key exclusiva dentro do bucket. Os metadados do objeto são um conjunto de pares chave-valor que descrevem atributos do objeto, como a hora da última modificação e o tamanho. Também é possível armazenar informações personalizadas nos metadados. Para mais informações, consulte Object in OSS terms.
Par de AccessKey
Um AccessKey, ou AK, refere-se ao AccessKey ID e ao AccessKey secret usados para verificação de identidade de acesso. O OSS verifica a identidade do remetente de uma solicitação checando uma assinatura gerada a partir do AccessKey ID e do AccessKey secret por meio de criptografia simétrica. O AccessKey ID identifica o usuário. O AccessKey secret é a chave que você usa para criptografar strings de assinatura e que o OSS usa para verificar essas strings. Mantenha o AccessKey secret em sigilo.
Existem três tipos de AccessKeys:
Um AccessKey solicitado pelo proprietário do bucket.
Um AccessKey concedido pelo proprietário do bucket a um solicitante terceirizado por meio de autorização RAM.
Um AccessKey concedido pelo proprietário do bucket a um solicitante terceirizado por meio de STS. Para mais informações, consulte Create an AccessKey pair.