Configurando a codificação de vídeo (Microsoft Media Foundation)

Para configurar o codificador de vídeo, execute as seguintes etapas:

  1. De acordo com as propriedades do codificador DMO usando IPropertyBag::Write. A lista a seguir resume o conjunto mínimo de propriedades necessárias para codificar um fluxo de vídeo CBR (todos esses valores têm padrões que podem ser usados):

    • Apropriedade _ VIDEOWINDOW MFPKEY especifica a janela de buffer a ser usada para o fluxo. Para obter mais informações sobre a configuração de janelas de buffer e como ela afeta o conteúdo, consulte Métodos de codificação. A janela de buffer padrão é de três segundos, o que é apropriado para muitos cenários.
    • A complexidade do vídeo é definida para determinar a diferença entre a qualidade do conteúdo codificado e o tempo necessário para codificar. Se você não definir um valor, o valor padrão será usado. No entanto, você pode encontrar os modos recomendados para um codec específico chamando IWMCodecProps::GetCodecProp para recuperar g _ wszWMVCComplexityExLive, g _ wszWMVCComplexityExOffline e g _ wszWMVCComplexityExMax. Em seguida, você pode definir MFPKEY _ COMPLEXITYEX como um valor entre 0 e a complexidade máxima relatada.
    • MFPKEY _ O COD especifica a importância relativa da suavidade de vídeo e a qualidade da imagem de quadros codificados. Na maioria dos casos, o valor padrão funciona bem.
    • Para conteúdo de vídeo armazenado em um contêiner diferente de ASF, a propriedade _ MFPKEY ASFOVERHEADPERFRAME deve ser definida como 0. Esse não é o valor padrão.

    Para obter informações sobre como configurar fluxos VBR, consulte Using VBR Encoding.

  2. Configure a estrutura DMO _ MEDIA _ TYPE para o tipo de entrada ou, se você estiver usando o SDK do Media Foundation, use a função MFInitMediaTypeFromVideoInfoHeader. Use uma estrutura VIDEOINFOHEADER que descreve o conteúdo de entrada descompactado. O codec não resize o vídeo nem converte o espaço de cores.

  3. De definir o tipo de entrada usando IMediaObject::SetInputType ou IMFTransform::SetInputType.

  4. Configure o tipo de saída para o codificador. Depois que o tipo de entrada é definido, o codificador enumera os tipos de saída completos, exceto o membro dwBitrate da estrutura VIDEOINFOHEADER ou o atributo _ MT _ AVG _ BITRATE da interface IMFMediaType. Se você recuperar um tipo de saída antes de definir um tipo de entrada, a estrutura DMO _ MEDIA _ TYPE não terá um VIDEOINFOHEADER associado.

  5. Recupere os dados particulares do codec e adeque-os à estrutura VIDEOINFOHEADER que você passa para a estrutura DMO MEDIA _ _ TYPE ou para IMFMediaType. Para obter mais informações, consulte Using Video Codec Private Data.

  6. De definir o tipo de saída chamando o método IMediaObject::SetOutputType ou IMFTransform::SetOutputType. Passe a estrutura DMO _ MEDIA _ TYPE com a estrutura VIDEOINFOHEADER concluída (incluindo dados privados anexados) referenciada no membro pbFormat ou construa um IMFMediaType chamando MFInitMediaTypeFromVideoInfoHeader.

Observação

O objeto do codificador de vídeo dá suporte a duas saídas. A segunda saída é para o codificador "post view". Ele fornece as amostras descompactadas, pois elas serão entregues do decodificador. Isso permite que você monitore a qualidade da codificação sem precisar esperar até que todo o fluxo seja processado. Essa saída é opcional. Se você quiser usá-lo, configure seu tipo seguindo o mesmo processo usado para definir o tipo de entrada do codificador.

Trabalhando com vídeo