Métodos de codificação (Microsoft Media Foundation)

A maioria dos codecs de Áudio e Vídeo do Windows Media dá suporte a vários métodos de codificação. Saber como e quando usar cada método pode ajudá-lo a criar conteúdo compactado de alta qualidade.

Todos os métodos de codificação se concentram no buffer usado pelo decodificador para gerenciar dados de entrada compactados. Esse buffer é definido pela taxa de bits do fluxo, em bits por segundo e pela janela de buffer, em milissegundos. Ao codificar, o codec cumpre as restrições do buffer. Para obter mais informações sobre o buffer, consulte O modelo de buffer de bucket com vazamento.

Codificação de taxa de bits constante

A taxa de bits para qualquer fluxo codificado por um dos codecs de Áudio e Vídeo do Windows Media não é constante. A codificação cbr (taxa de bits constante) é, portanto, um termo um tanto enganoso. O recurso de distinção de um fluxo codificado em CBR é uma pequena janela de buffer, que limita a variação de tamanhos de exemplo. A codificação CBR é usada principalmente para conteúdo transmitido por uma rede para seu destino. Nesse cenário, é importante poder contar com o uso consistente de largura de banda.

Do ponto de vista de configuração, a codificação CBR difere dos outros modos em que antes de começar a codificar, você define a taxa média de bits do conteúdo de saída e a janela de buffer que se aplica a essa taxa de bits. Em outros modos, um ou ambos os valores são desconhecidos quando você configura o codificador e é calculado pelo codec enquanto ele codifica. CBR é o modo de codificação padrão usado pelos DMOs do Codificador do Windows Media.

codificação de taxa de bits constante Two-Pass

O CBR Standard usa apenas uma única passagem de codificação. Você fornece seu conteúdo como exemplos de entrada e o codec compacta o conteúdo e retorna exemplos de saída. Também é possível processar amostras de entrada duas vezes. Na primeira passagem, o codec executa cálculos para otimizar a codificação para seu conteúdo. Na segunda passagem, o codec usa os dados coletados durante a primeira passagem para codificar o conteúdo.

A codificação CBR de dois passes tem muitas vantagens. Geralmente, ele gera ganhos significativos de qualidade em relação à codificação CBR padrão sem alterar nenhum dos requisitos de buffer. Isso torna esse modo de codificação ideal para o conteúdo que é transmitido por uma rede. A única situação em que o CBR de duas passões não é viável é quando você codifica o conteúdo de uma fonte dinâmica e não pode usar uma segunda passagem.

O tipo de mídia de saída de um fluxo CBR de duas passões é idêntico ao de um fluxo CBR padrão; você ainda especifica a taxa de bits e a janela de buffer a ser usada. Ao configurar o DMO, você deve defini-lo para executar duas passagens. E você deve notificar o DMO quando terminar de enviar amostras para a primeira passagem.

codificação de taxa de bits variável Quality-Based

Como a codificação CBR não mantém uma taxa de bits constante, a distinção entre ela e a VBR (codificação de taxa de bits variável) pode parecer um pouco nebulosa. A principal diferença entre CBR e VBR é o tamanho da janela de buffer usada. Os fluxos codificados em VBR geralmente têm grandes janelas de buffer em comparação com fluxos codificados em CBR. A VBR baseada em qualidade não é exceção, pois você não define nem a taxa de bits nem a janela de buffer para ela. Em vez disso, você define um valor de qualidade. Em seguida, o codec tenta compactar os dados para que a qualidade da mídia codificada seja consistente durante toda a duração, independentemente dos requisitos de buffer do fluxo resultante.

A VBR baseada em qualidade usa uma única passagem de codificação e tende a criar grandes fluxos compactados. Quando a codificação é concluída, o codec define os requisitos de buffer para que o decodificador possa descompactar os dados. O fluxo de VBR codificado não é adequado para streaming em uma rede, portanto, a VBR baseada em qualidade deve ser usada apenas para cenários de reprodução local (ou baixar e reproduzir).

Codificação de taxa de bits variável não treinada

Ao contrário da VBR baseada em qualidade, a VBR sem restrições não codifica para um nível de qualidade específico. Em vez disso, codifica o conteúdo para a qualidade mais alta possível, mantendo uma taxa de bits especificada. A VBR não treinada usa duas passagens de codificação e é semelhante ao CBR de duas passagens, exceto que você não especifica uma configuração de janela de buffer para o fluxo. Isso significa que não há limite para o tamanho de amostras individuais no fluxo, desde que a taxa média de bits seja menor ou igual ao valor definido.

A VBR não restrita é de uso limitado, pois há poucos cenários de reprodução que têm requisitos de acordo com seus requisitos de buffer. O codec pode definir a janela do buffer como qualquer valor necessário após a codificação, não oferecendo controle sobre o tamanho do buffer. Na maioria dos casos, se você não estiver preocupado com o tamanho do buffer ou com a consistência do uso da largura de banda, deverá usar a VBR baseada em qualidade.

codificação de taxa de bits variável Peak-Constrained

O modo de codificação final é VBR com restrição de pico. Assim como a VBR sem restrições, esse modo usa duas passagens de codificação e codificações para uma taxa de bits especificada. No entanto, com a VBR restrita de pico, você também configura o valor de pico para a codificação. Os valores de pico são semelhantes aos valores de configuração de buffer normais: há uma taxa de bits de pico e uma janela de buffer de pico. O arquivo é codificado para estar em conformidade com um buffer descrito pelos valores de pico, com a condição de que a taxa de bits média geral do fluxo seja igual ou menor que o valor médio da taxa de bits que você especificar.

A VBR restrita pode ser difícil de conceituar. Aqui está a maneira mais fácil de pensar no modelo de buffer usado. Suponha que o fluxo seja um fluxo CBR com a taxa de bits de pico e a janela de buffer de pico usada para definir o buffer. Normalmente, a taxa de bits de pico é bastante alta. O codificador garante que o valor de taxa média de bits esperado que você indica seja mantido durante a duração do fluxo. Em qualquer ponto específico do fluxo, é garantido que a taxa média de bits seja maior que o tamanho total do fluxo em bits divididos pela duração do fluxo em segundos).

Considere o exemplo a seguir: você configura um fluxo com uma taxa média de bits de 16.000 bits por segundo, uma taxa de bits de pico de 48.000 bits por segundo e uma janela de buffer de pico de 3.000 (3 segundos). O tamanho do buffer usado para o fluxo é de 144.000 bits (48.000 bits por segundo x 3 segundos), conforme determinado pelos valores de pico. O codificador compacta os dados para estar em conformidade com esse buffer. Além disso, a taxa média de bits do fluxo deve ser de 16.000 ou menos. Se o codificador precisar fazer alguns exemplos muito grandes para lidar com um segmento complexo de conteúdo, ele poderá aproveitar o tamanho do buffer grande. Mas outras partes do fluxo devem ser codificadas a uma taxa de bits mais baixa para reduzir a média para o nível especificado.

A codificação VBR restrita de pico é útil para dispositivos de reprodução com uma capacidade de buffer finito e algumas restrições de taxa de dados. Um exemplo comum disso é a codificação usada para DVDs.

Usando a codificação VBR

Codificações de mídia do Windows