Estou tão confuso ... qual é a diferença entre um codec de áudio / vídeo (que aparentemente é uma abreviação de "codificador / decodificador", tipo como "modem" é realmente "modulador / demodulador") e um áudio / formato de vídeo?
(Estou usando a terminologia correta?)
ie: Qual é a diferença entre dizer algo é "MPEG-4" e dizer que algo usa o codec "DivX"? Por que o Windows Media Player às vezes executa .mpg
arquivos e outras não?
Além disso, quais dos seguintes são codecs, quais são os formatos de arquivo e quais não são?
- Quicktime MOV
- MPEG (1, 2, 3, 4)
- WMV
- FFmpeg
- AVC
- Xvid
- DivX (como é diferente de seu palíndromo, Xvid?)
- H.264
video
codec
file-format
video-codecs
Mehrdad
fonte
fonte
Respostas:
Algumas definições principais:
Como você pode ver, teremos que explicar algumas coisas aqui.
O que é um codec?
Um codec é a abreviação de codificador / decodificador, o que basicamente significa apenas o seguinte: Os dados gerados por um codificador sempre podem ser decodificados por um decodificador apropriado. Isso é válido para vídeo, áudio, mas você também pode pensar em criptografia (um codificador precisa de um decodificador apropriado para exibir uma mensagem criptografada).
Atualmente, quando um codec de vídeo é especificado, as instituições que participam dele geralmente especificam apenas a sintaxe do padrão. Por exemplo, eles dirão: "O formato de fluxo de bits deve ser assim", "O
0x810429AAB
aqui será traduzido para isso", etc. Muitas vezes, eles fornecem um codificador e decodificador de referência, mas como um codificador é então escrito para corresponder a tal formato completamente depende dos fabricantes.Esta é a razão pela qual você encontrará tantos codificadores para o mesmo codec, e alguns deles até comerciais.
Um exemplo de caso - H.264
Antes de misturarmos a terminologia, vamos dar um exemplo. Considere o caso do H.264 . O nome do padrão é H.264 - esse não é o nome do codificador real. O Mainconcept é um codificador comercial muito bom, enquanto o x264 é um código livre e de código aberto. Ambos pretendem oferecer boa qualidade, é claro.
O simples fato de que você pode otimizar a codificação cria uma competição aqui. Ambos os codificadores fornecerão um fluxo de bits padronizado que sempre pode ser decodificado por um decodificador compatível com H.264.
Resumir
Então, em suma, digamos que um codificador irá:
O fluxo de bits é então multiplexado em um contêiner.
O decodificador irá:
Ambos estão em conformidade com um padrão de codec. Isso é tudo!
Codecs atuais
Atualmente, você provavelmente encontrará apenas vídeos codificados com os codecs que mencionarei abaixo. Curiosamente, quase todos eles foram criados pelo Motion Picture Experts Group (MPEG). Mas existem outros codecs isentos de royalties, por exemplo, aqueles criados pelo Google ou pela Alliance for Open Media, que são concorrentes dos padrões MPEG.
Observe que "MPEG" pode se referir a codecs e contêineres, como você verá abaixo. Isso aumenta a confusão, mas saiba que apenas "MPEG" não significa nada, por exemplo, "Eu tenho um arquivo no formato MPEG" é muito ambíguo ".
MPEG-2
MPEG-2 é bastante antigo. Seu primeiro lançamento público é de 1996. O vídeo MPEG-2 é usado principalmente para transmissão de DVDs e TV, por exemplo, DVB-T ou satélite, e aplicativos legados em que a compatibilidade é importante. Os vídeos MPEG-2 são encontrados principalmente em um contêiner .MPG .
MPEG-4 Parte 2
Este é provavelmente o que foi usado principalmente para codificar vídeos para a web em meados dos anos 2000, mas foi substituído nesse meio tempo. Ele oferece boa qualidade em tamanhos de arquivo práticos, o que significa que você pode gravar um filme inteiro de 90 minutos em um CD de 600 MB (enquanto que com o MPEG-2 você precisaria de um DVD, veja minha resposta aqui ). Não funciona mais tão bem para conteúdo HD ou 4K.
Alguns codificadores que emitem vídeo MPEG-4 Parte 2 são o DivX , seu ripoff de fonte aberta XviD e o Nero Digital .
Os vídeos MPEG-4 Parte 2 geralmente vêm em um contêiner AVI , mas o MP4 também é visto com frequência.
MPEG-4 Parte 10 / AVC / H.264
Isso também é conhecido como MPEG-4 Advanced Video Coding (AVC) ou H.264 ; hoje é o codec mais usado. Ele oferece boa qualidade em arquivos pequenos e, portanto, é perfeitamente adequado para todos os tipos de vídeo na Internet ou em dispositivos móveis. Você encontrará o H.264 em quase todas as aplicações modernas, de telefones a filmadoras. Nos discos Blu-ray, o vídeo agora é codificado no H.264.
Alguns codificadores são: x264 , NVENC (da NVIDIA), Mainconcept . Os vídeos vêm principalmente em contêineres MP4 , MKV ou MOV .
HEVC / H.265
Também chamado MPEG-H Part 2, este é o sucessor do MPEG-4 Part 10 / AVC / H.264. Ele tem como objetivo resoluções mais altas (até 8K ) e pode oferecer desempenho de codificação até 50% mais alto (em termos de qualidade vs. taxa de bits) em comparação com o H.264 (consulte este documento , por exemplo).
O padrão foi publicado em 2013 e, lentamente, o codec está começando a ser usado cada vez mais, por exemplo, para IPTV ou transmissão de vídeo online. O HEVC também é usado pela Apple para armazenar vídeos e imagens (usando HEIF ) no iOS. No entanto, o fato de haver vários pools de patentes associados ao HEVC faz com que muitas empresas (quase todas, exceto a Apple) mudem para alternativas livres de royalties. O HEVC também não é suportado nativamente por todos os navegadores, tornando-o inutilizável para transmissão na Web.
O codificador mais conhecido é x265 . Há também o NVENC . Os vídeos geralmente vêm em contêineres MP4 .
VP9 e AV1
O VP9 (sucessor do VP8) é um codec desenvolvido principalmente pelo Google. É aberto e livre de royalties e implementado em muitos navegadores . Sua qualidade é quase tão boa quanto a HEVC e às vezes até melhor (veja este artigo da Netflix). VP9 é o que você obtém quando assiste ao YouTube em um navegador compatível.
O VP9 pode ser codificado com o codificador libvpx e geralmente é fornecido em contêineres WebM ou MKV .
Algumas empresas se uniram para formar um concorrente ainda mais forte do HEVC - mas como uma alternativa livre de royalties. O AV1 será o sucessor do VP9 e é baseado no que deveria ser o VP10. É apoiado pela Alliance for Open Media (fundada pela Amazon, Cisco, Google, Intel, Microsoft, Mozilla e Netflix). Leia mais sobre isso aqui .
O codificador libaom pode ser usado para gerar fluxos de bits AV1, mas ainda é experimental.
O que é um formato (contêiner)?
Até agora, apenas explicamos o "fluxo de bits" bruto, que é basicamente apenas dados de vídeo realmente brutos. Você pode realmente assistir e assistir ao vídeo usando um fluxo de bits tão bruto. Mas na maioria dos casos isso não é suficiente ou não é prático.
Portanto, você precisa agrupar o vídeo em um contêiner. Existem várias razões pelas quais:
Por todas essas razões, os formatos de contêiner foram inventados, alguns simples, outros mais avançados. O que todos eles fazem é "agrupar" o fluxo de bits do vídeo em outro fluxo de bits.
Um contêiner sincronizará os quadros de vídeo e áudio de acordo com o PTS ( Presentation Time Stamp ), o que garante que eles sejam exibidos exatamente ao mesmo tempo. Também se encarregaria de adicionar informações para servidores de streaming, se necessário, para que um servidor saiba quando enviar qual parte do arquivo.
Vamos dar uma olhada em alguns contêineres populares.
Contentores populares
Você encontrará vídeos embalados principalmente nos seguintes recipientes. Existem outros menos populares também, mas como eu disse, são principalmente:
AVI
Intercalação de áudio e vídeo - este é o contêiner mais básico, existe apenas para intercalar áudio e vídeo. Foi escrito em 1992 e ainda é usado hoje, mas considerado legado, portanto, não o use mais.
MP4
também é conhecido como MPEG-4 Parte 14 e é baseado no formato de arquivo do QuickTime. Este é o formato para vídeo H.264, mas também envolve HEVC, MPEG-4 Parte 2 e MPEG-2.
Esse contêiner também pode incluir apenas áudio, e é por isso que você encontrará tantos arquivos .mp4 que não são vídeos, mas áudio codificado em AAC , também em arquivos .m4a (apenas uma extensão diferente). A extensão .m4v geralmente é usada para fluxos de bits de vídeo.
MKV e WebM
O Matroska Video (MKV) é um formato de arquivo gratuito e de código aberto que é frequentemente encontrado atualmente, pois suporta basicamente qualquer codec, do H.264 ao VP9, e, é claro, também muitos codecs de áudio.
O WebM é baseado em MKV e é usado principalmente para vídeo VP9 e áudio Opus - é o contêiner de escolha para streaming de vídeo na Web quando esses codecs são usados.
Ogg
O contêiner Ogg é o contêiner de escolha para o codec de vídeo Theora (e o codec de áudio Vorbis ), também criado pela Xiph.Org Foundation. Também é gratuito e de código aberto (assim como o codec).
FLV
O formato de vídeo em Flash foi criado pela Adobe, para uso em seus aplicativos de streaming. Não é mais usado muito, pois a maneira como a transmissão é feita mudou significativamente nos últimos anos.
Codecs e formatos populares
libavcodec
e aslibavformat
bibliotecas para criar codecs e contêineres, respectivamente. A maioria das ferramentas de vídeo que você encontra hoje se baseia nela.Em uma nota lateral:
Eu acho que uma vez preferiria usar especificamente "codec" e "container" em vez de "format" para evitar mal-entendidos. Teoricamente, um formato pode ser qualquer coisa, porque codecs e contêineres especificam um formato (ou seja, como os dados devem ser representados).
Dito isto, a terminologia do FFmpeg seria usar "formato" para o contêiner. Isso também se deve à distinção entre:
libavcodec
, a biblioteca para codificação / decodificaçãolibavformat
, a biblioteca para os contêineresfonte
Em geral, um 'formato' de mídia é realmente um contêiner, contendo um fluxo de áudio (de algum codec de áudio) e um fluxo de vídeo (de algum codec de vídeo) e, às vezes, informações adicionais. Na maioria dos arquivos, você tem um tipo de arquivo baseado no contêiner e não no codec
O FFmpeg não é um contêiner nem um codec - é um conjunto versátil de bibliotecas, codecs e software para conversão de arquivos subjacentes a muitos conversores e players de música.
H.264 / AVC e xvid / divx são codecs
AVI (que são arquivos divx / xvid), mp4, mpeg são contêineres.
Não tenho certeza sobre o quicktime mov - .mov é um contêiner, o quicktime é um codec.
fonte
existem codecs e contêineres (formatos de arquivo). O codec descreve como os dados são codificados / decodificados. O outro descreve como os dados codificados são colocados dentro do arquivo.
A maioria dos players de mídia suporta vários tipos de codec e contêiner. Isso é confuso, então sugiro que você leia minhas referências para obter mais informações
fonte
Um formato é o nome dado a um tipo específico de formato de arquivo e tipo de compactação (a maioria dos vídeos é compactada para manter o tamanho baixo), e o codec é o que pode realmente comprimir, ler e traduzir no vídeo que você vê descompactando-o . Em outras palavras, um é do tipo arquivo, mas o outro é um software.
Geralmente, nos referimos à maioria dos vídeos com o nome do formato, portanto, o Quicktime MOV, MPEG e WMV são formatos.
FFmpeg (eu nunca tinha ouvido falar disso) parece ser o nome de um software para converter vários formatos em outros formatos.
AVC e H.264 são iguais e são um formato para codificação de vídeo HD.
DivX é um codec vendido comercialmente.
Xvid é um codec para MPEG-4.
fonte