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:
- Saída em formatos de contêiner diferentes, incluindo MPEG-4 (MP4), Dynamic Adaptive Streaming over HTTP (DASH, também conhecido como MPEG-DASH) e HTTP Live Streaming (HLS).
- Saída em diferentes taxas de bits e resoluções, incluindo saída somente de áudio
- Conversão para um formato High Dynamic Range (HDR)
- Melhore a saída do vídeo de maneira programática, incluindo:
- Configure parâmetros de codificação de baixo nível, como a taxa de bits
- Remixar o conteúdo de mídia existente usando listas de edição abrangentes
- Defina o modo de job como interativo de baixa latência ou em lote
- Especificar a normalização de volume do áudio
- Configure a criptografia do seu vídeo de saída para oferecer suporte ao gerenciamento de direitos digitais e à proteção de conteúdo
- Inserir frames-chave de anúncios para permitir que os clientes do player de vídeo insiram anúncios
- Crie miniaturas a partir de uma spritesheet de frames de vídeo gerada
- Criar modelos de job para salvar e reutilizar configurações personalizadas ou complexas para jobs de transcodificação.
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 entrada | 4096 px |
Altura máxima de entrada | 4096 px |
Largura máxima de saída | 4.096 px |
Altura máxima de saída | 2.160 pixels |
Tamanho total da saída | 400 GB |
Duração EditList máxima | 24 horas |
Número máximo de streams de vídeo | 70 |
Número máximo de streams de áudio | 50 |
Número máximo de streams de texto | 50 |
Número máximo de streams mux | 100 |
Número máximo de manifestos | 100 |
Número máximo de spritesheets | 10 |
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.
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.
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çãomedia-hd0000000000.ts
: arquivo de trecho de vídeo em alta definição
media-sd.m3u8
: playlist para a variante de definição padrãomedia-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 áudiovideo-only-hd0000000000.m4s
: arquivo de segmento somente de vídeo de alta definiçãovideo-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 independentehd.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
- Conheça o guia de início rápido.
- Saiba como concluir tarefas da API Transcoder específicas.