Pesquisar este blog

Páginas

Boo-box

terça-feira, agosto 14, 2007

Formatos de Video

Esse post é uma coletânia de definições sobre os formatos de video, encontrados na Web.

== AVI ==
AVI é a abreviatura de "Audio Video Interleave" e trata-se de um formato encapsulador de áudio e vídeo criado pela Microsoft cuja extensão oficial é .avi. É um dos formatos mais populares no mundo, sendo nativamente reconhecido pela maioria das versões do Windows e por todos os leitores de DVD que são compatíveis com o codec DivX. É o que todos podemos chamar de container: um espaço em que se guarda informação. O AVI pode ser um container de uma faixa de vídeo encodada em XviD, famoso codec atual. Muxado (isto é, junto) desta faixa de vídeo, podemos ter um áudio em mp3. Isto é um AVI: um entrelace de áudio e vídeo, e cada um deles em suas respectivas proporções e particularidades.

== MPEG ==

Na década de 80 ficou aparente que a imagem estava tendendo para a tecnologia digital. Também era claro que se padrões internacionais não fossem desenvolvidos para a imagem digital, haveria uma "Torre de Babel" de diferentes padrões que porventura se proliferariam; assim, em 1988 ISO esquematizou o MPEG (Moving Picture Experts Group), para desenvolver padrões para o vídeo digital. Foram definidos três itens a serem desenvolvidos:

  1. Video e audio associados a uma taxa de 1.5 Mbps (mais tarde chamado de MPEG-1);
  2. Imagens em movimento e audio associados a uma taxa de 10 Mbps (mais tarde chamado de MPEG-2);
  3. Imagens em movimento e audio associados a uma taxa de 60 Mbps (mais tarde reduzido para 40 Mbps e então cancelado).

MPEG 1 era orientado como imagem digital armazenada em Mídia de armazenagem digital (DSM - Digital Storage Media). MPEG-2 foi orientado como broadcast. MPEG-3 para televisão de alta-definição (HDTV). Enquanto os padrões se desenvolviam ficou claro que as técnicas empregadas nos padrões poderiam ser usados em qualquer bitrate (quantidade de bits necessários para codificar um segundo de informação, seja esta vídeo, áudio ou ambos). Assim o título dos it que incluiam a taxa de transmissão, foram alterados para MPEG-1 e MPEG-2 e ficou claro que MPEG-2 poderia satisfazer as necessidades do HDTV, assim, o MPEG-3 foi descartado.

[editar] O papel do MPEG Systems

O vídeo, audio, ou qualquer outra informação para um serviço codificado em MPEG deve ser multiplexado num único fluxo de bits. Essa é a principal tarefa do MPEG-2 Sistems. Quando o multiplexador está recebendo um fluxo de bits de vídeo e áudio comprimidos, como eles devem ser multiplexados para que o decodificador possa obtê-los sincronizados? Uma outra tarefa do Sistema é fornecer meios para tal sincronização.

Apesar de que um fluxo MPEG representa um fluxo constante de bits, os bits precisam ser organizados em grupos (pacotes) para que erros de bit não se propaguem além das fronteiras de um único pacote. Geralmente, quanto maior o pacote, mais suscetível ele é a erros de bit. Por outro lado, agrupando os bits em pacotes cria um maior tráfego para acomodar os cabeçalhos dos pacotes. Geralmente quanto menores os pacotes, maior o tráfego. Assim, existe um tradeoff entre escolher o tamanho do pacote e sua resiliência e eficiência. Pode-se considerar portanto que formar pacotes é uma terceira função para os MPEG Systems.

Na maioria dos casos, decodificadores necessitam de Informações Específicas do Programa (PSI - Program Specific Information) para decodificar o os dados que chegam. Fornecer estas PSIs é a quarta tarefa do MPEG Systems. Um MPEG Systems deve:

  1. Multiplexar fluxos de bits individuais num único fluxo de bits.
  2. Prover maneiras para sincronizar os fluxos de bits que compôem um serviço de áudio e/ou vídeo.
  3. Empacota os bits em grupos.
  4. Provê informações específicas chamadas PSI.

Nos MPEG-2 Systems, um programa é definido como o conjunto de Fluxos Elementares significativos, como áudio e vídeo, que têm a mesma base de tempo.

Um arquivo MPEG é um arquivo digital contendo vídeo e áudio digitais codificados seguindo determinados padrões de compressão e armazenados em um dado formato específico. O comitê ISO especifica separadamente o tratamento de áudio e de vídeo, permitindo streams sem áudio, por exemplo.

Um filme é uma sequência de blocos arranjados sequencialmente. Cada bloco do filme contém seções individuais para o vídeo e para o áudio. A sincronização entre o vídeo e o áudio é feita através de marcadores de tempo que são afixados durante a codificação nos identificadores de blocos.

O padrão MPEG especifica 3 tipos de quadros comprimidos no arquivo de saída, como mostra a Figura 2. Nos quadros I (Intraframe) somente se aplicam algoritmos de redução de redundância espacial. Nos quadros P (Predicted) e B (Bidirectionally Predicted) também se aplicam algoritmos de redução de redundância temporal. No caso dos quadros B a predição de movimento é bidirecional, ou seja, é feita com quadros no passado e no futuro em relação ao quadro sendo codificado.

Os quadros apresentam diferentes taxas de compressão, sendo que os quadros B apresentam a maior taxa, seguidos dos P e dos I. Isto se deve ao fato de que nos quadros I eliminamos apenas a redundância espacial. Quanto maior a compressão maiores as perdas de qualidade sofridas nos quadros, por isso há a necessidade de intercalar quadros I de tempos em tempos para permitir a “restauração” da qualidade do sinal e também acesso aleatório aos quadros do filme.

O padrão publicado pela ISO especifica o formato final do arquivo comprimido, deixando margem para que diferentes abordagens possam ser utilizadas, com diferentes compromissos entre compressão e complexidade computacional. Além disso, também fazem parte do padrão:

  • Uso da Transformada Discreta do Cosseno (DCT), seguida de Quantização e Run Length Encoding [Hel96] (RLE) para redução da redundância espacial de cada quadro do filme;
  • Uso de Motion Estimation e Motion Compensation (MEC) preditiva e interpolativa para redução de redundância temporal entre quadros e
  • Uso de Codificação de Huffman [Huf52] ao final do processo, gerando a compressão efetiva.

A DCT faz uma transformação na imagem, mudando o domínio de representação da mesma. Este processo não introduz perdas de qualidade na imagem, sua utilização se dá porque ela permite uma representação mais compacta da imagem, facilitando a compressão.

Existem diferentes formas de se detectar movimento de objetos numa sequência de imagens. O padrão MPEG adota algoritmos de MEC baseados em casamento de blocos. Este algoritmo consiste na procura de um bloco de tamanho fixo (16x16 pixels no padrão MPEG) de um quadro em uma janela de busca em um quadro seguinte (ou anterior). Esta janela pode ser de tamanho variável mas o tamanho usual é de 30x30 pixels [BK97].




== DivX ==
O DivX ® é um codec de vídeo criado pela DivX, Inc. Ele foi produzido para ser usado em compactação de vídeo digital, deixando os vídeos com qualidade, apesar da alta compactação, utilizada para ocupar menos espaço no Disco rígido. Para alcançar tal compactação é necessário muito processamento, o que pode fazer com que um computador tecnologicamente defasado demore para realizar a operação ou tenha dificuldades para realizar a exibição. O DivX é compatível com Windows, Linux, Solaris e Mac OS X.

Atualmente os arquivos DivX estão amplamente presentes nas redes dos programas de P2P, devido ao seu reduzido tamanho e à ótima qualidade.

O método de compactação DIVX funciona como um MP3 para vídeo. Mas, ao contrário do MP3, que apaga sons sobrepostos que nosso cérebro não conseguiria reconhecer, o DIVX torna repetitivas as imagens que não se modificam no decorrer dos frames (quadros) que formam o vídeo. Simplificando: tomando-se uma cena onde a câmera é estática e fundo não se modifica, o codec DIVX grava um único frame dessa imagem e repete-o até a imagem sofrer alguma alteração. Na mesma cena, caso haja uma pessoa andando, somente os pixels em que sua imagem se sobrepõe são modificados. O resto da cena pode ser considerado, grosseiramente, como uma foto estática ao fundo do vídeo. Desta forma, são guardados muito menos dados pelo vídeo compactado, resultando um arquivo de tamanho reduzido com uma perda de qualidade pequena.


= XviD

XviD é um software livre e codec de vídeo MPEG-4 código aberto. Foi criado por um grupo de programadores voluntários depois que o OpenDivx foi fechado em julho de 2001.

XviD é o maior competidor do DivX (XviD de trás para frente). Enquanto DivX é um código fechado e pode rodar apenas no Microsoft Windows, Mac OS X, e Linux, Xvid é código aberto e pode rodar em qualquer plataforma.

Em janeiro de 2001, DivXNetworks fundou o OpenDivX como uma parte do Projeto Mayo que teve a intenção de ser a o lugar de projetos multimídias de código aberto. OpenDivx criou um codec de vídeo código aberto para MPEG-4, baseado na versão do MoMuSys do encoder MPEG-4. O código fonte, entretanto, foi colocado com uma licença restrita e somente membros do Centro de Pesquisas Avançadas DivX (DARC em inglês) poderiam ter acesso aos repositódios dos códigos do projeto (CVS). No inicio de 2001, um membro da DARC chamado Sparky escreveu uma versão do encoder core chamado encore2, que foi atualizado muitas vezes depois. Em abril, o código foi removido do repositório sem qualquer aviso. A explicação dada por Sparky foi Nós (nossos chefes) decidimos que ainda não estamos prontos para ter nosso projeto como público.

Em julho de 2001, desenvolvedores começaram a se queixar sobre a falta de atividade do projeto; o último CVS foi atualizado muitos meses antes, bugfixes foram ignorados, e a documentação prometida não foi escrita. Logo depois, DARC lançou a versão beta do seu codec comercial DivX 4 de código fechado, que foi baseado no encore2, dizendo que "o que a comunidade realmente quer é o Winamp, não o Linux". Muitos acusaram o DivXNetworks de começar o OpenDivX com o propósito de colecionar idéias de muitas pessoas para usar no seu codec DivX 4, alguns ficaram desapontados ao ver que o codec estava estagnado e quiseram continuar trabalhando com ele, enquanto outros ficaram com raiva da forma que o DivXNetworks declarou o projeto como código aberto. Isso foi depois que o repositório do OpenDivX foi criado, usando a última versão do encore2 que foi baixado antes que fosse removido. Desde então, todo o código do OpenDivx foi substituido e o XviD foi publicado sobre a licença GLP.

Acredita-se que algumas características do XviD é coberto por patentes de software em vários países (mais especificamente nos Estados Unidos e Japão). Por essa razão, a versão do XviD 0.9.x não foi licenciado em países onde esses tipos de patentes estão em vigor. Entretanto, na versão 1.0.x, a licença GNU GPL v2 foi usada sem explicitar as restrições geográficas. O uso legal do XviD pode ainda estar restrito por leis locais. (Veja a lista de discussão por e-mail [1], [2], [3].)



== RMVB ==

RealMedia Variable Bitrate, conhecida também pelo acrônimo RMVB, é uma extensão de bitrate variável do container multimídia RealMedia, desenvolvido pela RealNetworks.

Consiste do tradicional arquivo .rm (arquivo Real Media com taxa de dados constante), porém com maior tecnologia embarcada, provendo ao arquivo a capacidade de variar a taxa de dados de acordo com a complexidade das imagens em cada quadro do vídeo. Desta maneira se torna maior o valor da relação qualidade/tamanho. Assim o arquivo de vídeo terá excepcional qualidade em um tamanho bem menor que o usual.

Para se ter uma idéia da capacidade deste formato, um arquivo DivX/XviD de 700MB, contendo aproximadamente 100 minutos de vídeo com qualidade próxima à do DVD, seria reduzido para um arquivo de aproximadamente 350MB.

Para converter um arquivo de vídeo para o formato RMVB, pode-se utilizar o software denominado "Easy RealMedia Producer". Ele é de origem chinesa e está hospedado em servidores chineses. Nele, há a opção de escolher a linguagem entre o chinês tradicional, o chinês simplificado e o inglês.


== MKV ==

MKV, é a sigla do formato para video digital do padrão Matroska, ou Matroska Video. É complementado pelo formato MKA, ou Matroska Audio. Ambos têm como característica o fato de serem formatos livres; isto é: não são restritos por patentes.

MKV usa a notação EBML, uma extensão do XML que permite dados binários, além dos dados em texto usuais.

MKV é um container de dados de vídeo. Deste modo, MKV permite conter vários dados resultantes de diferentes tipos de codificações (ou codecs) de video; sua maior utilidade é a sincronização dos dados de video com os de audio, com os títulos e legendas etc.

Como parte da iniciativa Matroska, os criadores do MKV tem a grande ambição de que este formato torne-se o único formato de video em uso, com adoção universal. Sua adoção é bastante limitada, mas entusiástica: adotam-no muitos softwares livres de video digital, como x264 , the KMPlayer e VirtualDubMod.




Nenhum comentário: