Visão geral da API Transcoder

Nesta página, fornecemos uma visão geral técnica da API Transcoder, incluindo recursos, terminologia e conceitos úteis. A API Transcoder implementa uma API REST e RPC que permite enviar, monitorar e gerenciar jobs de transcodificação no Google Cloud. Para enviar jobs usando a API Transcoder, primeiro é necessário fazer o upload de recursos de mídia no Cloud Storage. Após o processamento de um job, a API Transcoder salva a mídia resultante de volta no Cloud Storage.

Recursos

A API Transcoder inclui suporte para os seguintes recursos:

Para mais informações sobre os padrões MP4 e MPEG-DASH, consulte o site do grupo de especialistas de imagens em movimento. Para mais informações sobre o padrão HLS, consulte HTTP Live Streaming.

Contêineres compatíveis para criptografia de conteúdo

A tabela a seguir mostra os contêineres compatíveis com a criptografia de conteúdo.

Protocolo de streaming Contêiner Sistema DRM Esquema de criptografia
HLS TS ClearKey aes128
HLS TS FairPlay sampleAes
HLS fMP4 FairPlay Somente mpegCenc cbcs
MPEG-DASH fMP4 Widevine mpegCenc cenc ou cbcs
MPEG-DASH fMP4 PlayReady mpegCenc cenc ou cbcs

Controle de acesso

O modelo de controle de acesso da API Transcoder é baseado no Identity and Access Management do Google. As permissões detalhadas do IAM oferecem controle sobre o que pode ser feito com os dados de mídia e por quem.

Limites

Veja na tabela a seguir os limites por job de transcodificação.

Limites do job
Largura máxima da entrada4096 px
Altura máxima de entrada4096 px
Largura máxima de saída4.096 px
Altura máxima de saída2.160 pixels
Tamanho total da saída400 GB
Duração EditList máxima24 horas
Número máximo de streams de vídeo70
Número máximo de streams de áudio50
Número máximo de streams de texto50
Número máximo de streams mux100
Número máximo de manifestos100
Número máximo de spritesheets10

Conceitos

Esta seção apresenta conceitos importantes sobre arquivos de vídeo e como eles são usados com a API Transcoder.

Componentes de um arquivo de vídeo

Cada arquivo de vídeo tem um contêiner, que é o wrapper de todo o arquivo. A API Transcoder usa MuxStreams para definir o contêiner. Cada contêiner inclui um conjunto de ElementaryStreams para definir a codificação das faixas de vídeo, áudio e texto de legenda do arquivo. O vídeo e o áudio são compactados usando codecs.

No exemplo abaixo, o vídeo é compactado usando H.264, e o áudio é compactado usando AAC. Ambos são colocados em um contêiner MP4.

Componentes de um arquivo de vídeo e um exemplo
Figura 1. Componentes de um arquivo de vídeo (à esquerda) e um arquivo MP4 de exemplo (à direita).

Estrutura do protocolo de streaming

Para streaming de mídia, os provedores codificam o mesmo conteúdo em vários taxas de bits (medidas em quilobits por segundo). Em seguida, o provedor gera um arquivo de manifesto que aponta para os diferentes arquivos com taxas de bits diferentes. O player de mídia de streaming usa o arquivo de manifesto para selecionar o arquivo apropriado e, em seguida, extrai o vídeo por alguns segundos. Cada taxa de bits pode ser um único arquivo ou vários arquivos curtos, dependendo do que o player oferece suporte.

Diferentes resoluções de mídia são normalmente codificadas para segmentar diferentes taxas de bits. Por exemplo, taxas de bits mais baixas são codificadas em definição padrão (SD) em vez de alta definição (HD). O conjunto de taxas de bits, resoluções e codecs é chamado de escada de taxa de bits adaptativa (ABR). Os provedores de conteúdo de streaming podem ajustar a própria hierarquia com base nos custos de CDN, nos tipos de dispositivos dos usuários, na largura de banda na região e em outros fatores.

Componentes de uma estrutura de protocolo de streaming e um exemplo
Figura 2. Componentes de uma estrutura de protocolo de streaming (parte de cima) e um exemplo de implementação do HTTP Live Streaming (HLS, na parte de baixo).

Terminologia

Nesta seção, você verá um glossário de termos úteis para trabalhar com a API Transcoder.

Intervalo de anúncio

Um intervalo de anúncio é uma publicidade curta que aparece antes ou durante a reprodução de mídia. A API Transcoder é compatível com um frame-chave de intervalo de anúncio na configuração do job. A API Transcoder não insere ou reproduz anúncios, nem interrompe a reprodução de mídia. clientes de players de vídeo são responsáveis por manipular o frame-chave.

Atom

Um atom é uma estrutura de dados fundamentais para definir os metadados e o local de um vídeo. Um vídeo pode abranger uma hierarquia aninhada complexa de diferentes tipos de atoms, incluindo áudio, edição e atoms de texto.

Atom de áudio

Um atom de áudio mapeia o áudio de um stream básico para uma lista de edição.

Tipo de codec e perfil

Ao selecionar o codec para um stream de vídeo, especifique o tipo do codec, como H.264 e o perfil, como o perfil high padrão.

Contêiner

Um contêiner é um wrapper que descreve a relação entre os vários componentes em um stream multiplexado, incluindo arquivos de mídia e metadados. A API Transcoder é compatível com os formatos de contêiner MP4, MPEG-DASH e HLS.

Editar atom

Um atom de edição define os deslocamentos de início e término para os segmentos individuais de um stream que você quer combinar em uma lista de edição.

Editar lista

Uma lista de edições define uma sequência de edições como uma linha do tempo para o arquivo ou manifesto resultante de um trabalho de transcodificação.

Stream básico

Um stream básico é uma codificação de um arquivo de entrada, como uma faixa de áudio, vídeo ou legenda. É necessário empacotar streams principiantes antes de mapear e compartilhar o stream para diferentes formatos de saída.

Codificação de entropia

A codificação de entropia é uma forma de compactação sem perdas compatível com a API Transcoder. Ao configurar jobs, você pode especificar o Context-Adaptive Variable-Length Coding (CAVLC, na sigla em inglês) ou o Context-Adaptive Binary Arithmetic Coding (CABAC, na sigla em inglês).

Job

Um job é a unidade básica para gerenciar trabalhos com a API Transcoder. Quando você envia um job para a API Transcoder, ele é processado em uma localização geográfica conhecida como região. É possível listar e gerenciar todos os jobs de uma região.

O ciclo de vida de um job inclui três etapas: preparar, transcodificar e empacotar.

  • Preparar
    • Fazer o download de entradas do Cloud Storage
    • Analisar entradas
    • Validar entradas
  • Transcodificar
    • Executar operações de transcodificação em entradas
  • Empacotar
    • Agrupar entradas
    • Entradas multiplex
    • Faça upload de saídas para o Cloud Storage

O estado de um job é atualizado. O serviço informa erros usando o campo error.

Configuração do job

Uma configuração de job representa muitas das várias configurações que podem ser personalizadas ao criar e enviar um job à API Transcoder. É possível especificar definições de configuração, como listas de edição e onde inserir tags de intervalo de anúncio em um manifesto de saída. É possível criar configurações de jobs reutilizáveis como modelos de job para uso em uma região do Google Cloud.

Modo do job

A API Transcoder oferece suporte a dois modos de job: interativo e em lote.

O modo interativo é o modo de trabalho padrão. Use esse modo se quiser que o processamento do job comece o mais rápido possível ou se quiser ter um controle mais granular sobre quais jobs são executados primeiro. Nesse modo, a cota de contagem de jobs simultâneos controla quantos jobs são executados simultaneamente. Depois que essa cota é atingida, qualquer job que você tentar iniciar é rejeitado.

Use o modo de lote para enviar muitos jobs em que a latência de processamento não é tão crítica quanto os jobs enviados no modo interativo padrão. É possível especificar a prioridade de processamento de jobs para um job nesse modo. Os jobs enviados em modo de lote com o mesmo valor de prioridade são colocados em uma fila de primeiro a sair e têm um estado de job de PENDING enquanto aguardam a execução. Nesse modo, a cota de contagem de jobs pendentes em lote controla quantos jobs estão na fila. Depois que essa cota é atingida, todos os jobs que você tentar iniciar são rejeitados. Um job faz a transição para o estado RUNNING quando é executado. A cota de contagem de jobs simultâneos em lote controla quantos jobs são executados ao mesmo tempo.

Você pode usar os dois modos ao mesmo tempo. Um modo não tem prioridade sobre o outro. Para mais informações sobre como definir o modo de job, consulte Como criar jobs no modo de lote.

Modelo do job

Por padrão, a API Transcoder aplica um modelo predefinido chamado preset/web-hd para preencher uma configuração de job. Essa configuração de job produz os seguintes arquivos de saída:

  • manifest.m3u8: a playlist principal para um stream de mídia HLS. Este arquivo contém referências às playlists da variante de alta definição (HD) da saída e da variante de definição padrão (SD) da saída.
    • media-hd.m3u8: playlist para a variante de alta definição
      • media-hd0000000000.ts: arquivo de trecho de vídeo em alta definição
    • media-sd.m3u8: playlist para a variante de definição padrão
      • media-sd0000000000.ts: arquivo de trecho de vídeo de definição padrão
  • manifest.mpd: a playlist de um stream de mídia MPEG-DASH. Esse arquivo contém referências a arquivos de segmento somente de vídeo e somente de áudio.
    • audio-only0000000000.m4s: arquivo de segmento somente de áudio
    • video-only-hd0000000000.m4s: arquivo de segmento somente de vídeo de alta definição
    • video-only-sd0000000000.m4s: arquivo de segmento somente de vídeo de definição padrão
  • sd.mp4: arquivo de vídeo de definição padrão independente
  • hd.mp4: arquivo de vídeo de alta definição independente

É possível criar e gerenciar seus próprios modelos de job personalizados e especificá-los ao criar jobs.

Pré-processamento

O pré-processamento é o estágio de um job que ocorre antes da transcodificação principal.

Configuração de pré-processamento

Uma configuração de pré-processamento representa as configurações que podem ser aplicadas a um vídeo antes do estágio de transcodificação de um job. É possível aplicar cortes ou padding como parte dessa configuração.

Modo de controle de taxas

O modo de controle de taxa indica se o job é processado usando os modos de fator de taxa constante (CRF) ou taxa de bits variável (VBR). O CRF garante qualidade constante em todos os recursos de mídia processados. A VBR otimiza o processo de codificação para reduzir o tamanho do arquivo dos recursos de mídia processados. Para casos de uso de streaming, selecione o modo de controle de taxa VBR. Para fins de arquivamento, selecione o modo de controle de taxa de CRF.

Manifest

Um manifesto é uma descrição do conteúdo e dos metadados disponíveis de um stream de mídia adaptável para um cliente. Na API Transcoder, é possível configurar um job para gerar um manifesto com um nome de arquivo, uma lista de fluxos multiplexados e o tipo de manifesto, que precisa ser HLS ou MPEG-DASH.

Atom de texto

Um atom de texto mapeia o texto de um stream básico para uma lista de edição.

Stream de texto

Um stream de texto codifica dados de texto associados a um vídeo, como closed captions ou legendas.

A seguir