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
MERIT_DO_NOT_USE
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:
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:
- 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.
- 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.
- 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:
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:
- Chame ICodecAPI::RegisterForEvent com o valor CODECAPI_CHANGELISTS.
- Use a interface IMediaEventEx para monitorar eventos do grafo de filtro.
- 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 |
|
Confira também