# Matroska

Matroska ou Matrioska (do russo: матрёшка; romanizado: matrioshka) é um conjunto universal de arquivos computacionais de código aberto criado em 2002 que armazenam (contentores ou containers) audio e video digitais, que possibilitam uma evolução constante de acordo com as necessidades dos desenvolvedores e distribuidores de conteúdos digitais. Este não é um formato de compressão de video, a principal finalidade do arquivo no formato MKV é o armazenamento de video digital de alta definição, este é baseado no formato EBML (Extensible Binary Meta Language) derivado da linguagem XML.
Matroska se concretiza como biblioteca de software, escrita em C++ (com suporte a C e Java),que pode ser usadas pelos criadores de players multimídia. Porém este container não está associado a uma codificação (do inglês codecs) específica, e permite que o desenvolvedor tenha flexibilidade na escolha do formato de compressão de vídeo, por exemplo, você pode reunir em somente um arquivo computacional, o container de forma concisa e eficiente o video, áudio, imagens e legendas, facilitando a vida do desenvolvedor e do usuário final.
Sua adoção é ainda limitada mas é entusiástica, adotado por muitos softwares livres de video digital como x264 e VirtualDubMod. Apesar de ser uma iniciativa Software Livre, Matroska não limita-se a sistemas operacionais livres, como o GNU/Linux; seu "analisador léxico" (do inglês parser) de DirectShow é muito considerado pela equipe do projeto Matroska.

## Etimologia

O termo matroska ou matrioska provêm do russo матрёшка, diminutivo do nome próprio matriona, como é chamada a série de bonecas típicas russas colocadas umas dentro das outras, ou seja, uma boneca grande contém outra menor, que contém outra, e assim sucessivamente. Deste modo, os formatos de arquivos do conjunto Matroska permitem conter dados resultantes de diferentes tipos de codificações (do inglês codecs) de mídias digitais.

## Histórico

O projeto foi anunciado em 6 de dezembro de 2002 como uma divisão do formato MCF, após discordâncias entre alguns de seus desenvolvedores, sendo que grande parte da comunidade que participava do desenvolvimento inicial migrou para o novo projeto.
Durante a conferência Google I/O de 2010, o Google anunciou a adoção do Matroska como contêiner de seu novo formato para arquivos multimídia para a web, batizado de WebM.

## Objetivos

Por ser um projeto de Padrão Aberto, com sua especificações disponíveis gratuitamente, pode ser usado para fins pessoais, e até mesmo para empresas que desejem incluir este padrão em seu portfólio de formatos suportados em seus produtos, que sejam de Hardware ou Software. Matroska está licenciado sob GNU e L-GPL, e também existem algumas licenças em BSD, para fins comerciais.
As premissas do projeto Matroska, de acordo com seus criadores, são as seguintes:
* Rápida procura no arquivo de multimídia;
* Melhor recuperação de erros;
* Entradas de capitulação mais simples;
* Possibilidade de seleção entre diferentes legendas e áudio;
* Ser estendido em módulos, mantendo o que já existe (legado ou legacy);
* Capaz de ser transmitido via Internet (Vídeo On-Demand, BitTorrent, etc.);
* Possuir Menus com um certo grau de interatividade;
* Criar e documentar um padrão que seja flexível para distribuir conteúdos de multimídia;
* Estabelecer Matroska como a alternativa de Código Aberto para outros formatos proprietários;
* Desenvolver as ferramentas para edição de conteúdos Matroska;
* Fazer parte do desenvolvimento de novos chipsets para que estes sejam compatíveis em produtos standalone ou dedicados, em cooperação com os fabricantes de semicondutores;
* Torná-lo compatível ao maior número de sistemas operacionais existentes.

## Formatos do conjunto

Os formatos de arquivo para o padrão Matroska são:
* .MKV para video com as legendas e áudio;
* .MKA para conteúdos de áudio somente, e;
* .MKS para legendas;
* .MK3D para arquivos com vídeo em 3D (Matroska Stereo 3D video format, estereoscopia).

## Estrutura Básica

A estrutura básica do formato Matroska (veja imagem ilustrativa ao lado, não está em uma escala quantitativa em relação ao real, serve somente para uma primeira ideia):

### Header

(ou cabeçalho)
O Header contém as informações que definem qual versão do EBML eles foram criados, e qual tipo de EBML é o arquivo. Neste caso, um arquivo Matroska.

### Metaseek

A seção Metaseek (ou índice dinâmico, em tradução livre) contém um índice onde todos os outros grupos estão localizados dentro do arquivo, como as faixas de video e áudio, capítulos, anexos (figuras)e etc. Não é tecnicamente mandatório, porém se não for incluído será necessário procurar em todo o arquivo até encontrar o que procura. Isto porque qualquer um dos outros itens podem ocorrer em ordem aleatória.

### Segment Information

Aqui contém as informações básicas que dizem respeito a todo o arquivo, incluindo o título do arquivo, uma identidade única que permite o arquivo ser localizado individualmente, e também qual seriam os arquivos que o antecedem ou sua sequência, em caso de o arquivo fazer parte de uma série, por exemplo. Neste último caso também iria conter as identidades dos arquivos anteriores e posteriores.

### Track Section

(Seção das Faixas)
Nesta seção estão as informações básicas de cada uma das faixas, por exemplo, se estas são de áudio, vídeo ou legenda, qual a resolução do video, qual a taxa de amostragem do áudio. Também informa qual tipo de codec deve ser utilizado para exibir as faixas.

### Chapters Section

Esta seção lista todos os capítulos. Os capítulos são uma forma conveniente de localizar pontos pré definidos nas faixas de vídeo e áudio.

### Clusters Section

Esta seção contem os agrupamentos de dados na forma de quadros (para o vídeo )e segmentos (para o áudio)de cada faixa individualmente.

### Cueing data section

Esta seção contém as informações de início e fim de cada faixa (Cue). São muito similares ao Metaseek, mas no Matroska a diferença fundamental é que o Cue é utilizado para localizar um ponto específico no tempo de execução do arquivo. Sem o Cueing data é possível buscar os pontos, mas o player precisa buscar dentro de cada arquivo a informação de Timecode correta.

### Attachment Section

Esta seção é bem interessante para anexar quaisquer arquivos pertinentes ao conteúdo. Fotos, capas de álbuns, letras, sítios de Internet, até mesmo o próprio codec necessário para tocar o formato do arquivo.

### Tagging section

Aqui pode-se adicionar informações básicas sobre o arquivo, como nome de artista, ou o autor das músicas, entre outras informações. A ideia inicial segue o padrão usado nas Tags de MP3.

## Conteúdos em formato Matroska

Inicialmente a adoção do formato foi muito restrita, sendo usada principalmente em ações de pirataria de conteúdos de DVD, VHS, e conteúdos capturados de transmissões das emissoras, muitos no padrão HDTV. Como o formato permite a inclusão de legendas embutidas e conteúdos de áudio com maior facilidade, passou a ter maior aceitação. Normalmente este container possui arquivos de multimídia com codificação H.264, e uma ou mais faixas de áudio AC3 e legendas.