Armazenar mídia compactada em arquivos AVI (Microsoft Media Foundation)
Qualquer conteúdo compactado usando os codecs de áudio e vídeo do Windows Media deve ser colocado em algum formato de contêiner. Um dos formatos mais populares é o Audio Video Interleave, ou AVI. Você pode usar o Microsoft Video para Windows (VfW) ou o Microsoft DirectShow para criar arquivos AVI.
Os codecs de áudio e vídeo do Windows Media foram desenvolvidos para usar as propriedades do ASF (Advanced Systems Format), que é o contêiner usado pelo Windows Media. Como o AVI e o ASF armazenam o conteúdo de maneira diferente, surgem algumas dificuldades ao armazenar conteúdo compactado com os codecs de áudio e vídeo do Windows Media em um arquivo AVI.
Os codecs Windows Media Audio compactam o conteúdo de áudio de forma que ele não possa ser descompactado corretamente sem carimbos de data/hora para os exemplos individuais. Isso habilita alguma otimização na mídia compactada. Como o contêiner ASF mantém carimbos de data/hora com todas as amostras, essa característica dos algoritmos de áudio sempre funcionou bem.
Os arquivos AVI, no entanto, não mantêm carimbos de data/hora com amostras. Isso significa que o conteúdo do Windows Media Audio não pode ser descompactado corretamente quando armazenado em um arquivo AVI. O conteúdo do Windows Media Video não tem essa limitação e pode ser incluído em arquivos AVI. Para codificar o conteúdo do Windows Media Video em um arquivo AVI com som sincronizado, você deve usar outro codec de áudio.
O outro problema com o uso de um arquivo AVI como um contêiner para o Windows Media diz respeito ao vídeo com baixa taxa de bits. Uma das maneiras pelas quais os codecs Windows Media Video produzem conteúdo de vídeo para taxas de bits baixas é descartando quadros duplicados. Se você quiser colocar o conteúdo do Windows Media Video em um arquivo ASF, precisará definir o codificador para fornecer quadros fictícios para quadros duplicados (defina MFPKEY_PRODUCEDUMMYFRAMES para VARIANT_TRUE) que cada quadro seja representado no arquivo. Os quadros fictícios produzidos pelo codec têm 8 bytes de tamanho. No entanto, o quadro gravado no arquivo pelo multiplexador AVI pode ser centenas de bytes maior e preenchido com dados aleatórios. Um arquivo AVI feito dessa maneira ainda poderá ser reproduzido, mas será muito maior do que o esperado. Você pode evitar esse problema usando taxas de bits mais altas ao codificar um vídeo para armazenamento em arquivos AVI.
Tópicos relacionados