Noções básicas sobre arquivos de mídia

Derek Herman
Derek Herman
Joe Medley
Joe Medley

Neste artigo, você vai aprender sobre os conceitos básicos de arquivos de mídia, como os de um contêiner e alguns dos muitos formatos de codec disponíveis que podem ser usados em um stream. Além disso, abordamos brevemente temas como streaming adaptativo, taxa de bits e resolução, mas vamos nos aprofundar em todos eles em seções posteriores.

Como veicular arquivos de vídeo

Você pode pensar que pode pegar um arquivo bruto de uma câmera de vídeo e fazer o upload na Web como está. De fato, sites de streaming de vídeo, como o YouTube ou o Vimeo, permitem que você faça isso e até oferecem recursos de transmissão ao vivo, normalmente fazendo a conexão com a porta HDMI da câmera e processando-a por um cartão de captura. Esses serviços simplificam muito o processamento e o envio de vídeos, o que inclui a geração de muitos arquivos e manifestos necessários para streaming adaptável e várias resoluções. Além de muitos outros requisitos complicados e sutis que tornam a hospedagem própria um pouco trabalhosa. Preparar e exibir um vídeo do seu próprio site e provavelmente de um servidor de mídia separado é um pouco mais complicado do que apenas enviar um arquivo bruto da câmera se você se preocupa com a experiência dos usuários no seu site.

Os arquivos de vídeo têm vários formatos. O formato que sai da câmera é normalmente um arquivo .mov ou um .mp4 se você tiver uma câmera mirrorless moderna. No entanto, embora um .mov seja bom para gravação, edição e outros processos iniciais de pós-produção, o tamanho do arquivo significa que ele não é bom para streaming pela Web. Além disso, o tamanho de um .mp4 bruto em 4K vai tornar a reprodução desse arquivo em dispositivos móveis muito proibitiva. Como os navegadores oferecem suporte a diferentes formatos de arquivo, você precisará criar vários arquivos otimizados e, possivelmente, um manifesto se pretender oferecer suporte ao streaming adaptável. Antes de converter arquivos, é preciso entender alguns conceitos básicos sobre eles e suas características.

Contêineres, codecs e streams?

O arquivo que aparece no shell do sistema operacional é um contêiner, identificado por uma extensão de arquivo (.mp4, .webm, .ogg etc.). O contêiner armazena um ou mais fluxos. Um arquivo de mídia pode ter qualquer número de streams, de muitos mais formatos do que vamos abordar aqui.

Os arquivos de exemplo usados mais adiante nesta seção contêm no máximo dois streams: um de áudio e um de vídeo. Entre os outros tipos que você pode encontrar estão legendas e dados, que estão fora do escopo deste artigo. Há casos em que os streams de áudio e vídeo são tratados separadamente. A maioria dos arquivos que você encontrar terá apenas um stream de áudio e um de vídeo.

Nos streams de áudio e vídeo, os dados reais são compactados usando um codec. Um codec, ou codificador/decodificador, é um formato de compactação para dados de vídeo ou áudio. A diferença entre um contêiner e um codec é importante porque os arquivos com o mesmo contêiner podem ter o conteúdo codificado com codecs diferentes.

A imagem abaixo ilustra essa estrutura. À esquerda, está a estrutura básica do contêiner com duas streams. À direita estão as especificações dessa estrutura para um único arquivo WebM.

Comparação da estrutura do arquivo de mídia com um arquivo de mídia hipotético.
Partes de um arquivo de mídia.

Os arquivos em contêineres WebM podem ser ordens de magnitude menores que outros formatos, o que os torna uma boa opção para streaming em sites para dispositivos móveis. Infelizmente, nem todos os navegadores são compatíveis com contêineres e codecs atualizados. Por exemplo, o WebM foi criado especificamente para a Web como uma opção de alta qualidade e de código aberto, mas o suporte ainda não é universal. De acordo com o Can I use (em inglês) no momento da escrita deste artigo, o Safari não oferece suporte ao WebM para vídeos incorporados. No entanto, o WebM tem suporte parcial para o codec VP8 e VP9 usado no WebRTC. Então, sua melhor opção é fornecer um vídeo substituto.

Formatos de codec

Muitos tipos de arquivos oferecem suporte a vários codecs no mesmo contêiner. Uma lista completa de codecs de vídeo e codecs de áudio disponíveis seria um site inteiro. Os links fornecidos são para as listas práticas do MDN sobre o que é utilizável na Web. Confira abaixo os tipos de arquivo preferidos no momento e os codecs que eles podem usar. Siga os links de tipo de arquivo para conferir os navegadores compatíveis.

Tipo de arquivo Codec de vídeo Codec de áudio
MP4 AV1, AVC (H.264)*, VP9 AAC
WebM AV1, VP9* Vorbis, Opus

* Indica o codec de vídeo preferido.

Taxa de bits e resolução

A taxa de bits é o número máximo de bits usados para codificar um segundo de um stream. Quanto mais bits forem usados para codificar um segundo de stream, maior será o potencial de detalhes e fidelidade. Confira mais informações sobre esse conceito em Taxa de bits.

A resolução é a quantidade de informações em um único frame de vídeo, indicada como o número de pixels lógicos em cada dimensão. Confira mais informações sobre esse conceito em Resolução.

No próximo artigo, Noções básicas de aplicativos de mídia, vamos mostrar como examinar essas características usando duas ferramentas de linha de comando: Shaka Packager e FFmpeg.