Partilhar via


Codificador de vídeo do Microsoft MPEG-2

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

O filtro do Codificador de Vídeo MPEG-2 da Microsoft codifica o vídeo MPEG-2 e MPEG-1.

Para codificar e multiplexar fluxos de áudio/vídeo, use o filtro Codificador do Microsoft MPEG-2 , que encapsula as funções desse filtro e do filtro do Codificador de Áudio MPEG-2 da Microsoft .

Observação

Não há suporte para esse filtro em plataformas baseadas em IA-64.

 

Filtrar Informações

Interfaces de filtro

Ibasefilter
ICodecAPI
IEncoderAPI
Imediaseeking
IVideoEncoder

Tipos de mídia de pino de entrada

MEDIATYPE_Video, MEDIASUBTYPE_I420
MEDIATYPE_Video, MEDIASUBTYPE_IYUV
MEDIATYPE_Video, MEDIASUBTYPE_RGB24
MEDIATYPE_Video, MEDIASUBTYPE_UYVY
MEDIATYPE_Video, MEDIASUBTYPE_YUY2
MEDIATYPE_Video, MEDIASUBTYPE_YV12

Interfaces de pino de entrada

Imeminputpin
Ipin
Iqualitycontrol

Tipos de mídia de pino de saída

MEDIATYPE_Stream, MEDIASUBTYPE_MPEG2_VIDEO
MEDIATYPE_Stream, MEDIASUBTYPE_MPEG2_PROGRAM
MEDIATYPE_Stream, MEDIASUBTYPE_MPEG2_TRANSPORT
MEDIATYPE_Video, MEDIASUBTYPE_MPEG2_VIDEO

Interfaces de pino de saída

Imediaseeking
Ipin
Iqualitycontrol

Filtrar CLSID

CLSID_CMPEG2EncoderVideoDS (declarado em wmcodecdsp.h)

Executável

msmpeg2enc.dll

Mérito

MERIT_DO_NOT_USE

Categoria de Filtro

CLSID_LegacyAmFilterCategory

 

Comentários

O Codificador de Vídeo MPEG-2 pode produzir os seguintes tipos de saída:

  • Fluxo elementar de vídeo
  • Vídeo em um fluxo de programa MPEG-2
  • Vídeo em um fluxo de transporte MPEG-2

Ele dá suporte aos seguintes perfis e níveis MPEG-2:

Perfil Níveis Comentários
Perfil Simples Principal
Perfil Principal Baixo, Principal, Alto, Alto-1440
Alto Perfil Main, High, High-1440 Sem escalabilidade ou suporte a 4:2:2/4:4:4 (apenas 4:2:0)
Perfil 4:2:2 Principal, Alto Sem escalabilidade ou suporte a 4:2:2 (apenas 4:2:0)

 

Propriedades do Codec

O filtro dá suporte às propriedades a seguir por meio de ICodecAPI.

Propriedade Padrão Valores com suporte
AVEncCodecType Vídeo MPEG-2 CODECAPI_GUID_AVEncMPEG1Video
CODECAPI_GUID_AVEncMPEG2Video
AVEncCommonBufferInLevel 12222464 bits
AVEncCommonBufferOutLevel 12222464 bits
AVEncCommonBufferSize 12222464 bits
AVEncCommonFormatConstraint Não Especificado CODECAPI_GUID_AVEncCommonFormatUnSpecified (sem restrição de formato)
CODECAPI_GUID_AVEncCommonFormatDVD_V (DVD-Video)
CODECAPI_GUID_AVEncCommonFormatVCD (CD de vídeo)
AVEncCommonMaxBitRate 9800000 (9,8 Mbits/segundo)
AVEncCommonMeanBitRate 7000000 (7,0 Mbits/segundo)
AVEncCommonMinBitRate 128
AVEncCommonMultipassMode 1 1
AVEncCommonQuality 100 1 — 100
AVEncCommonQualityVsSpeed 75 0 — 100
AVEncCommonRateControlMode CBR eAVEncCommonRateControlMode_CBR
eAVEncCommonRateControlMode_PeakConstrainedVBR
eAVEncCommonRateControlMode_Quality
AVEncInputVideoSystem Não Especificado eAVEncInputVideoSystem_Unspecified
eAVEncInputVideoSystem_PAL
eAVEncInputVideoSystem_NTSC
AVEncMPVDefaultBPictureCount 2 0 — 2
AVEncMPVFrameFieldMode Modo de quadro
AVEncMPVGenerateHeaderSeqDispExt TRUE
AVEncMPVGenerateHeaderSeqExt TRUE
AVEncMPVGOPOpen FALSE
AVEncMPVGOPSInSeq 1 0 — 1
AVEncMPVGOPSize 18 quadros (36 campos) para NTSC; Caso contrário, 15 quadros (30 campos). 1 — 30; consulte Comentários
AVEncMPVIntraDCPrecision 9 8 — 10
AVEncMPVLevel Alto
AVEncMPVProfile Principal
AVEncVideoDefaultUpperFieldDominant TRUE
AVEncVideoForceSourceScanType Interlaced eAVEncVideoSourceScan_Interlaced
eAVEncVideoSourceScan_Progressive
AVEncVideoInputChromaResolution 4:2:0 eAVEncVideoChromaResolution_420 (4:2:0)
eAVEncVideoChromaResolution_SameAsSource
AVEncVideoInputChromaSubsampling O mesmo que a origem
AVEncVideoInputColorNominalRange O mesmo que a origem
AVEncVideoInputColorPrimaries O mesmo que a origem
AVEncVideoInputColorTransferFunction O mesmo que a origem
AVEncVideoInputColorTransferMatrix O mesmo que a origem
AVEncVideoMaxKeyframeDistance AVEncMPVGOPSize - 1 0 ou AVEncMPVGOPSize - 1
AVEncVideoNoOfFieldsToEncode 0
AVEncVideoOutputChromaResolution 4:2:0 eAVEncVideoChromaResolution_420 (4:2:0)
eAVEncVideoChromaResolution_SameAsSource
AVEncVideoOutputFrameRate Deve ser o mesmo que a taxa de quadros de entrada.
AVEncVideoOutputScanType Igual à entrada eAVEncVideoOutputScan_SameAsInput
AVEncVideoPixelAspectRatio 1:1

 

É recomendável definir propriedades na seguinte ordem:

  1. AVEncCommonFormatConstraint
  2. AVEncCodecType
  3. AVEncMPVProfile
  4. AVEncMPVLevel
  5. AVEncInputVideoSystem

Defina as propriedades restantes em qualquer ordem. (No entanto, consulte Estrutura GOP.)

É possível definir propriedades enquanto o grafo de filtro está em execução. Há um atraso de pelo menos um GOP antes que as novas configurações entrem em vigor.

Operação do codificador

Ao codificar o vídeo MPEG-1, o codificador define automaticamente o código de constrained_parameters_flag de 1 bit no cabeçalho da sequência se todas as restrições forem atendidas.

Se necessário, o codificador arredonda as dimensões de vídeo de entrada para que as dimensões de vídeo de saída correspondam aos requisitos do MPEG. Para vídeo progressivo, as dimensões de saída são arredondadas para um múltiplo de 16 na largura e na altura. Para vídeo entrelaçado, a largura é arredondada para cima até um múltiplo de 16, e a altura é arredondada para um múltiplo de 32. Essa operação de arredondamento usa preenchimento conforme necessário.

Se o vídeo estiver entrelaçado, o codificador executará a detecção automática de telecine (3:2 pull-down). O vídeo de entrada pode conter pares de imagens de campo, além de quadros entrelaçados.

O formato interno do codificador é 4:2:0 IYUV (idêntico a I420). Ele pode executar a conversão de cores dos formatos de vídeo YUY2, YV12, UYVY e RGB-24.

Para restringir o bitstream a um formato de destino (DVD ou VCD), defina a propriedade AVEncCommonFormatConstraint . Se essa propriedade tiver um valor diferente de GUID_AVEncCommonFormatUnSpecified, o codificador limitará a sintaxe MPEG à permitida pelo formato de destino.

Para codificação dinâmica, defina a propriedade AVEncCommonQualityVsSpeed como zero. Isso faz com que o codificador otimize para velocidade.

Modos de codificação

O codificador dá suporte a vários modos de codificação:

  • CBR (taxa de bits constante de um passe).
  • VBR (taxa de bits variável) baseada em qualidade de um passe, usando um tamanho de etapa de quantizador constante. Nesse modo, o codificador tenta atender a um nível de qualidade de destino, até uma taxa máxima de bits.
  • VBR com restrição de pico de uma passagem. Nesse modo, o codificador tenta atingir uma taxa média de bits de destino dentro de determinados limites internos.

Para configurar o modo de codificação, defina as seguintes propriedades:

Mode Propriedades
CBR AVEncCommonRateControlMode = eAVEncCommonRateControlMode_CBR
AVEncCommonQualityVsSpeed
AVEncCommonMeanBitRate
VBR baseada em qualidade AVEncCommonRateControlMode = eAVEncCommonRateControlMode_Quality
AVEncCommonQuality
AVEncCommonMaxBitRate
Nota: Nesse modo, as propriedades AVEncCommonMeanBitRate e AVEncCommonMinBitRate não são usadas. Presume-se que a taxa de bits mínima seja zero.
VBR com restrição de pico AVEncCommonRateControlMode = eAVEncCommonRateControlMode_PeakConstrainedVBR
AVEncCommonMultipassMode = 1
AVEncCommonMinBitRate
AVEncCommonMaxBitRate
AVEncCommonMeanBitRate

 

Observação

Não há suporte para VBR de duas passões.

 

Taxa de proporção

A taxa de proporção de exibição e a PAR (taxa de proporção de pixel) estão relacionadas pela seguinte fórmula:

Taxa de proporção de exibição = PAR × (largura da imagem/altura da imagem)

O codificador usa essa fórmula para calcular o valor de pel_aspect_ratio para bitstreams MPEG-1 ou aspect_ratio_information para bitstreams MPEG-2. (Consulte ISO/IEC 11172 e ISO/IEC 138181-2, respectivamente.)

O codificador tenta as seguintes configurações, na ordem:

  1. Se o aplicativo definir a propriedade AVEncVideoPixelAspectRatio a qualquer momento antes da execução do grafo de filtro, essa propriedade será usada para o PAR.
  2. Caso contrário, se os membros dwPictAspectRatioX e dwPictAspectRatioY da estrutura VIDEOINFOHEADER2 não forem zero, esses membros serão usados para a taxa de proporção de exibição e a PAR será calculada a partir da taxa de proporção de exibição.
  3. Se nenhum desses valores estiver presente, a PAR será considerada 1,0 e a taxa de proporção de exibição será calculada adequadamente.

No modo de codificação dinâmica (AVEncCommonQualityVsSpeed igual a zero), a taxa de proporção de exibição deve ser 4:3 ou 16:9, com um valor padrão de 4:3. Se a taxa de proporção de exibição computada não for 4:3 ou 16:9, o codificador usará o valor 4:3.

Estrutura GOP

Para especificar a estrutura do grupo de imagens (GOP), defina as seguintes propriedades na ordem:

  1. AVEncMPVGOPSize
  2. AVEncVideoMaxKeyframeDistance
  3. AVEncMPVDefaultBPictureCount

Com base nessas configurações, o codificador produz uma das seguintes estruturas GOP:

AVEncVideoMaxKeyframeDistance AVEncMPVDefaultBPictureCount Estrutura GOP
0 0 IIII...
AVEncMPVGOPSize - 1 0 IPPP...
AVEncMPVGOPSize - 1 1 IBPBP...
AVEncMPVGOPSize - 1 2 IBBPBBP...

 

A estrutura gop padrão é IBBPBBP... com um tamanho gop de 15 quadros.

Se o aplicativo restringir o formato de destino para DVD (por meio da propriedade AVEncCommonFormatConstraint ) e definir a propriedade AVEncInputVideoSystem como NTSC ou PAL, o codificador oferecerá suporte aos seguintes tamanhos de GOP:

Sistema de Vídeo Tamanhos gop válidos Tamanho padrão do GOP
NTSC 1-18 18 (36 campos)
PAL 1-15 15 (30 campos)

 

Listas de alterações de propriedade codec

Definir o valor de uma propriedade codec pode alterar o intervalo válido de outra propriedade. (Por exemplo, restringir o formato de destino restringe a taxa média de bits.) Sempre que o aplicativo define uma propriedade, o codificador verifica se outras propriedades agora estão fora do intervalo válido. Nesse caso, o codificador redefine essa propriedade para seu novo valor padrão. Para receber notificações quando isso ocorrer, faça o seguinte:

  1. Chame ICodecAPI::RegisterForEvent com o valor CODECAPI_CHANGELISTS.
  2. Use a interface IMediaEventEx para monitorar eventos do grafo de filtro.
  3. Se o intervalo ou o valor padrão de uma propriedade for alterado, o codificador enviará um evento EC_CODECAPI_EVENT com uma lista de propriedades alteradas.

Suporte a IEncoderAPI

Para compatibilidade com versões anteriores, o filtro dá suporte às seguintes propriedades por meio da interface IEncoderAPI :

Propriedade Descrição
ENCAPIPARAM_BITRATE Equivalente a AVEncCommonMeanBitRate.
ENCAPIPARAM_PEAK_BITRATE Equivalente a AVEncCommonMaxBitRate.
ENCAPIPARAM_BITRATE_MODE Equivalente a AVEncCommonRateControlMode.

 

Ao definir a propriedade ENCAPIPARAM_BITRATE_MODE , os valores são mapeados da seguinte maneira:

ENCAPIPARAM_BITRATE_MODE AVEncCommonRateControlMode
ConstantBitRate eAVEncCommonRateControlMode_CBR
VariableBitRateAverage Consulte a observação.
VariableBitRatePeak eAVEncCommonRateControlMode_PeakConstrainedVBR

 

Observação

Atualmente, o codificador de vídeo MPEG-2 não dá suporte ao modo de codificação VariableBitRateAverage . Se você definir esse valor, o codificador usará como padrão a codificação CBR (eAVEncCommonRateControlMode_CBR).

 

Ao obter a propriedade ENCAPIPARAM_BITRATE_MODE , os valores são mapeados da seguinte maneira:

AVEncCommonRateControlMode ENCAPIPARAM_BITRATE_MODE
eAVEncCommonRateControlMode_CBR ConstantBitRate
eAVEncCommonRateControlMode_Quality VariableBitRatePeak
eAVEncCommonRateControlMode_PeakConstrainedVBR VariableBitRatePeak

 

Limitações

Atualmente, o codificador não dá suporte a nenhum dos seguintes recursos:

  • Geração de pacotes DE FLUXO ELEMENTAR (PES).
  • Conversão de taxa de quadros. O fluxo de entrada deve ter uma taxa de quadros válida para um bitstream MPEG-2.
  • Extensões de taxa de quadros para MPEG-2 (frame_rate_extension_n, frame_rate_extension_d).
  • Posições de buffer de entrada/saída (VBV) para um clipe.
  • Inserção de dados de linha 21 (informações de Legenda Fechada) no fluxo elementar do vídeo.
  • Definindo o campo time_code de 25 bits no cabeçalho GOP para MPEG-2.
  • Denoise filter.
  • DRM (gerenciamento de direitos digitais).

O codificador introduz uma latência de codificação de pelo menos um GOP.

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows Vista Home Premium, Windows Vista Ultimate, Windows 7 Home Premium, Windows 7 Professional, Windows 7 Enterprise, Windows 7 Ultimate [somente aplicativos da área de trabalho]
Servidor mínimo com suporte
Nenhum compatível
Cabeçalho
Wmcodecdsp.h

Confira também

Filtros do DirectShow

Tipos de mídia mpeg-2 demultiplexer