Partilhar via


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

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

  1. Defina quaisquer propriedades no 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):

    • A propriedade MFPKEY_VIDEOWINDOW 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 Encoding Methods. 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 compensação 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 para um valor entre 0 e a complexidade máxima relatada.
    • MFPKEY_CRISP especifica a importância relativa entre a suavidade do vídeo e a qualidade da imagem dos fotogramas 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. Este não é o valor padrão.

    Para obter informações sobre como configurar fluxos VBR, consulte Usando a codificação VBR.

  2. Configure a estrutura DMO_MEDIA_TYPE para o tipo de entrada ou, se estiver usando o SDK do Media Foundation, use a funçãoMFInitMediaTypeFromVideoInfoHeader. Use uma estrutura VIDEOINFOHEADER que descreve o conteúdo de entrada não compactado. O codec não redimensiona o vídeo ou converte o espaço de cor.

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

  4. Configure o tipo de saída para o codificador. Uma vez que o tipo de entrada é definido, o codificador enumera os tipos de saída que estão completos, exceto pelo membro dwBitrate da estrutura VIDEOINFOHEADER ou pelo atributo MF_MT_AVG_BITRATE da interface IMFMediaType. Caso recuperes um tipo de saída antes de definires um tipo de entrada, a estrutura do DMO_MEDIA_TYPE entregue não terá um VIDEOINFOHEADER associado ao.

  5. Recupere os dados privados do codec e acrescente-os à estrutura deVIDEOINFOHEADER que você passa para a estrutura DMO_MEDIA_TYPE ou para IMFMediaType. Para obter mais informações, consulte Utilização de dados privados do codec de vídeo.

  6. Defina o tipo de saída chamando o IMediaObject::SetOutputType ou IMFTransform::SetOutputType método. 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 codificador de vídeo suporta duas saídas. A segunda saída é para o codificador "post view". Entrega as amostras não comprimidas tal como são entregues pelo descodificador. Isso permite que você monitore a qualidade da codificação sem ter que esperar até que todo o fluxo seja processado. Esta saída é opcional. Se você quiser usá-lo, configure seu tipo seguindo o mesmo processo usado para definir o tipo de entrada do codificador.

Trabalhar com Vídeo