Neste artigo, você vai aprender sobre as noções básicas de arquivos de mídia, como os conceitos de contêiner e alguns dos vários formatos de codec disponíveis que podem ser usados em um stream. Além disso, aborde tópicos como streaming adaptável, taxa de bits e resolução. Vamos nos aprofundar nisso nas próximas seções.
Como veicular arquivos de vídeo
Pense que é possível pegar um arquivo bruto de uma câmera de vídeo e fazer o upload dele para a Web no estado em que se encontra. De fato, sites de streaming de vídeo, como o YouTube ou o Vimeo, permitem fazer exatamente isso e até oferecem recursos de transmissão ao vivo, normalmente conectando-se à porta HDMI da câmera e processando-o por meio de um cartão de captura. Esses serviços simplificam muito o processamento e o upload de vídeos, o que inclui a geração dos muitos arquivos e manifestos necessários para o streaming adaptável e várias resoluções. Além dos muitos outros requisitos complicados e variados que tornam a hospedagem automática um pouco trabalhosa. Preparar e veicular um vídeo do seu próprio site e, provavelmente, um servidor de mídia separado, é um pouco mais complicado do que fazer upload de um arquivo bruto de câmera, se você se importar com a experiência dos usuários no site.
Os arquivos de vídeo têm vários formatos. O formato que a câmera tira é
normalmente um arquivo .mov
ou .mp4
, caso você tenha uma boa câmera moderna sem espelho.
No entanto, embora uma .mov
seja boa 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 do arquivo de um .mp4
bruto em 4K dificultará a reprodução
desse arquivo em dispositivos móveis. Como os navegadores são compatíveis com diferentes formatos de arquivo,
você precisará criar vários arquivos otimizados e, possivelmente, um manifesto, caso queira
oferecer suporte ao streaming adaptável. Antes de converter arquivos, você precisa entender
alguns conceitos básicos sobre eles e as características deles.
Contêineres, codecs e streams?
O arquivo que você vê no shell do sistema operacional é um contêiner,
identificado por uma extensão de arquivo (.mp4
, .webm
, .ogg
etc.). O contêiner abriga um ou mais streams. Um arquivo de mídia pode ter qualquer número de streams, com muito mais formatos do que abordaremos aqui.
Os arquivos de amostra usados posteriormente 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, ambos fora do escopo deste artigo. Há casos em que streams de áudio e vídeo são tratados separadamente. A maioria dos arquivos que você vai encontrar conterá apenas um stream de áudio e um de vídeo.
Dentro dos 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 distinção entre um contêiner e um codec é importante porque 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 de contêiner com dois streams. À direita, estão as especificidades dessa estrutura para um único arquivo WebM.
Os arquivos em contêineres WebM podem ser menores que outros formatos, o que os torna uma boa opção para sites 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 código aberto e alta qualidade, mas a compatibilidade ainda não é universal. De acordo com a seção Posso usar, o Safari em particular não oferece suporte a WebM para vídeo incorporado. No entanto, o WebM tem suporte parcial com o codec VP8 e VP9 usado no WebRTC. Portanto, a melhor opção é fornecer um vídeo substituto.
Formatos de codec
Muitos tipos de arquivo aceitam vários codecs dentro do mesmo contêiner. Uma lista completa de codecs de vídeo e codecs de áudio disponíveis seria um site inteiro para si mesmo. Os links fornecidos são para listas práticas da MDN sobre o que pode ser usado na Web. Veja abaixo os tipos de arquivo preferidos e os codecs que eles podem usar. Acesse os links de tipos de arquivo para ver os navegadores compatíveis.
Tipo de arquivo | Codec de vídeo | Codec de áudio |
---|---|---|
MP4 | AV1, AVC (H.264)* e VP9 | AAC |
WebM | AV1 e VP9* | Vorbis e Opus (links em inglês) |
* 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 usados para codificar um segundo de stream, maiores serão os possíveis detalhes e a fidelidade. Veja mais informações sobre esse conceito em Bitrate (em inglês).
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. Disponibilizamos mais informações sobre esse conceito em Resolução.
A seguir, em Conceitos básicos de aplicativos de mídia, vamos mostrar como examinar essas características usando duas ferramentas de linha de comando: Shaka Packager e FFmpeg.