Partilhar via


Como criar uma topologia para codificação do Windows Media Two-Pass

Os modos de codificação de duas passas têm suporte de determinados codificadores do Windows Media e do Media Foundation na camada de pipeline. O aplicativo deve configurar e configurar a topologia de codificação semelhante à da codificação de passagem única, mas no modo de codificação de 2 pass, o aplicativo deve executar a sessão de codificação duas vezes. Na primeira passagem, o codificador coleta informações sobre o conteúdo do fluxo. Na segunda passagem, usando as informações coletadas na primeira passagem, o arquivo de saída final é gerado. Ao processar os exemplos para o fluxo duas vezes, a codificação de duas passões otimiza o processo de codificação e produz arquivos codificados de maior qualidade. Os modos de codificação de duas passões não podem ser usados em transmissões ao vivo.

O Media Foundation dá suporte aos seguintes modos de codificação de duas passões:

A criação de uma topologia de codificação para codificação de duas passões é semelhante aos modos de passagem única. A lista a seguir mostra as principais diferenças.

  • A configuração do codificador deve incluir a propriedade MFPKEY_PASSESUSED definida como 2 e a propriedade MFPKEY_VBRENABLED para VARIANT_TRUE. Isso filtra os recursos do codificador para modos de duas passões. Se você estiver usando objetos de ativação, passe essas propriedades para MFCreateWMAEncoderActivate ou MFCreateWMVEncoderActivate.
  • Para a primeira passagem, use um coletor de mídia fictício no nó de saída porque os exemplos gerados nessa passagem não são adicionados ao arquivo final.
  • Para a segunda passagem, consulte o codificador para as propriedades pós-codificação necessárias e substitua o nó de coletor de mídia fictícia pelo coletor de mídia ASF por essas propriedades definidas.

Para obter mais informações sobre como configurar uma topologia de codificação, consulte Tutorial: Codificação de mídia do Windows de passagem única.

O procedimento a seguir resume as etapas para codificar o conteúdo do Windows Media em um contêiner do ASF usando um modo de codificação de duas passões.

  1. Crie uma fonte de mídia para o especificado usando o resolvedor de origem.

  2. Enumerar os fluxos na fonte de mídia.

  3. Crie o coletor de mídia ASF e adicione coletores de fluxo dependendo dos fluxos na fonte de mídia que precisam ser codificados.

  4. Crie o coletor de mídia.

  5. Crie os codificadores do Windows Media para os fluxos no arquivo de saída.

  6. Configure os codificadores com as propriedades de codificação de 2 pass.

  7. Crie uma topologia de codificação parcial conectando a origem, os codificadores e o coletor de mídia.

  8. Instancie a Sessão de Mídia e defina a topologia na Sessão de Mídia.

  9. Execute a primeira passagem de codificação controlando a Sessão de Mídia e obtendo todos os eventos relevantes da Sessão de Mídia.

  10. Feche e desligue a sessão de codificação.

  11. Consulte o codificador para as seguintes propriedades, dependendo do tipo de codificação:

    Tipo de codificação Nome da propriedade
    Codificação de taxa de bits variável não treinada MFPKEY_PASSESUSED
    MFPKEY_VBRENABLED
    MFPKEY_BAVG
    MFPKEY_RAVG
    Codificação de taxa de bits variável restrita de pico MFPKEY_PASSESUSED
    MFPKEY_VBRENABLED
    MFPKEY_BAVG
    MFPKEY_RAVG
    MFPKEY_BMAX
    MFPKEY_RMAX

     

  12. Crie o coletor de arquivos ASF e adicione os coletores de fluxo necessários dependendo dos fluxos que você deseja incluir no arquivo de saída final.

  13. Defina as propriedades do codificador recuperadas na etapa 11 no coletor de arquivos.

  14. Substitua o coletor de mídia no nó de saída pelo coletor de arquivos recém-criado.

  15. Instancie a Sessão de Mídia e defina a topologia atualizada na Sessão de Mídia.

  16. Execute a segunda passagem de codificação controlando a Sessão de Mídia e obtendo todos os eventos relevantes da Sessão de Mídia.

  17. Aguarde o evento MEEndOfPresentation da Sessão de Mídia e, no manipulador de eventos, obtenha os valores da propriedade de codificação do codificador e defina-os no coletor de arquivos. Para obter mais informações, consulte "Atualizar propriedades de codificação no coletor de arquivos" no Tutorial: Codificação de mídia do Windows de passagem única.

  18. Feche e desligue a sessão de codificação.

Componentes ASF da camada de pipeline