Codificador de vídeo MPEG-2 de Microsoft

[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine y Captura de audio/vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y Audio/Video Capture en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

El filtro Codificador de vídeo MPEG-2 de Microsoft codifica el vídeo MPEG-2 y MPEG-1.

Para codificar y multiplex secuencias de audio/vídeo, use el filtro Codificador MPEG-2 de Microsoft , que encapsula las funciones de este filtro y del filtro Codificador de audio MPEG-2 de Microsoft .

Nota:

Este filtro no se admite en plataformas basadas en IA-64.

 

Información de filtro

Interfaces de filtro

IBaseFilter
ICodecAPI
IEncoderAPI
IMediaSeeking
IVideoEncoder

Tipos de medios de anclaje 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 patilla de entrada

IMemInputPin
Ipin
IQualityControl

Tipos de medios de anclaje de salida

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

Interfaces de pin de salida

IMediaSeeking
Ipin
IQualityControl

Filtrar CLSID

CLSID_CMPEG2EncoderVideoDS (declarado en wmcodecdsp.h)

Ejecutable

msmpeg2enc.dll

Mérito

MERIT_DO_NOT_USE

Categoría de filtro

CLSID_LegacyAmFilterCategory

 

Comentarios

Mpeg-2 Video Encoder puede producir los siguientes tipos de salida:

  • Secuencia elemental de vídeo
  • Vídeo en una secuencia de programa MPEG-2
  • Vídeo en una secuencia de transporte MPEG-2

Admite los siguientes perfiles y niveles MPEG-2:

Perfil Niveles Comentarios
Perfil simple Método Main
Perfil Main Bajo, Principal, Alto, Alto-1440
Perfil alto Main, High, High-1440 Sin escalabilidad ni compatibilidad con 4:2:2/4:4:4 (solo 4:2:0)
4:2:2 Perfil Main, High Sin escalabilidad ni compatibilidad con 4:2:2 (solo 4:2:0)

 

Propiedades de códec

El filtro admite las siguientes propiedades a través de ICodecAPI.

Propiedad Valor predeterminado Valores admitidos
AVEncCodecType Vídeo MPEG-2 CODECAPI_GUID_AVEncMPEG1Video
CODECAPI_GUID_AVEncMPEG2Video
AVEncCommonBufferInLevel bits de 12222464
AVEncCommonBufferOutLevel bits de 12222464
AVEncCommonBufferSize bits de 12222464
AVEncCommonFormatConstraint Sin especificar CODECAPI_GUID_AVEncCommonFormatUnSpecified (sin restricción 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 Sin especificar eAVEncInputVideoSystem_Unspecified
eAVEncInputVideoSystem_PAL
eAVEncInputVideoSystem_NTSC
AVEncMPVDefaultBPictureCount 2 0 — 2
AVEncMPVFrameFieldMode Modo marco
AVEncMPVGenerateHeaderSeqDispExt TRUE
AVEncMPVGenerateHeaderSeqExt TRUE
AVEncMPVGOPOpen FALSE
AVEncMPVGOPSInSeq 1 0 — 1
AVEncMPVGOPSize 18 fotogramas (36 campos) para NTSC; De lo contrario, 15 fotogramas (30 campos). 1 — 30; ver comentarios
AVEncMPVIntraDCPrecision 9 8 — 10
AVEncMPVLevel Alto
AVEncMPVProfile Método Main
AVEncVideoDefaultUpperFieldDominant TRUE
AVEncVideoForceSourceScanType Interlaced eAVEncVideoSourceScan_Interlaced
eAVEncVideoSourceScan_Progressive
AVEncVideoInputChromaResolution 4:2:0 eAVEncVideoChromaResolution_420 (4:2:0)
eAVEncVideoChromaResolution_SameAsSource
AVEncVideoInputChromaSubsampling Igual que el origen
AVEncVideoInputColorNominalRange Igual que el origen
AVEncVideoInputColorPrimaries Igual que el origen
AVEncVideoInputColorTransferFunction Igual que el origen
AVEncVideoInputColorTransferMatrix Igual que el origen
AVEncVideoMaxKeyframeDistance AVEncMPVGOPSize : 1 0 o AVEncMPVGOPSize - 1
AVEncVideoNoOfFieldsToEncode 0
AVEncVideoOutputChromaResolution 4:2:0 eAVEncVideoChromaResolution_420 (4:2:0)
eAVEncVideoChromaResolution_SameAsSource
AVEncVideoOutputFrameRate Debe ser igual que la velocidad de fotogramas de entrada.
AVEncVideoOutputScanType Igual que la entrada eAVEncVideoOutputScan_SameAsInput
AVEncVideoPixelAspectRatio 1:1

 

Se recomienda establecer propiedades en el orden siguiente:

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

Establezca las propiedades restantes en cualquier orden. (Sin embargo, consulte Estructura GOP).

Es posible establecer propiedades mientras se ejecuta el grafo de filtro. Hay un retraso de al menos un GOP antes de que la nueva configuración surta efecto.

Operación de codificador

Al codificar vídeo MPEG-1, el codificador establece automáticamente el código de constrained_parameters_flag de 1 bits en el encabezado de secuencia si se cumplen todas las restricciones.

Si es necesario, el codificador redondea las dimensiones de vídeo de entrada para que las dimensiones de vídeo de salida coincidan con los requisitos MPEG. En el caso del vídeo progresivo, las dimensiones de salida se redondean hasta un múltiplo de 16 en ancho y alto. En el caso del vídeo entrelazado, el ancho se redondea hasta un múltiplo de 16 y el alto se redondea hasta un múltiplo de 32. Esta operación de redondeo usa relleno según sea necesario.

Si el vídeo está entrelazado, el codificador realiza la detección automática de telecines (3:2 de extracción). El vídeo de entrada puede contener pares de imágenes de campo, además de fotogramas entrelazados.

El formato interno del codificador es 4:2:0 IYUV (idéntico a I420). Puede realizar la conversión de color desde formatos de vídeo YUY2, YV12, UYVY y RGB-24.

Para restringir la secuencia de bits a un formato de destino (DVD o VCD), establezca la propiedad AVEncCommonFormatConstraint . Si esta propiedad tiene un valor distinto de GUID_AVEncCommonFormatUnSpecified, el codificador limita la sintaxis MPEG a la permitida por el formato de destino.

Para la codificación en directo, establezca la propiedad AVEncCommonQualityVsSpeed en cero. Esto hace que el codificador optimice la velocidad.

Modos de codificación

El codificador admite varios modos de codificación:

  • Velocidad de bits constante de un paso (CBR).
  • Velocidad de bits variable basada en calidad de un paso (VBR), con un tamaño de paso de cuantificador constante. En este modo, el codificador intenta satisfacer un nivel de calidad de destino, hasta una velocidad de bits máxima.
  • VBR con restricción máxima de un paso. En este modo, el codificador intenta lograr una velocidad de bits media de destino dentro de determinados límites internos.

Para configurar el modo de codificación, establezca las siguientes propiedades:

Mode Propiedades
CBR AVEncCommonRateControlMode = eAVEncCommonRateControlMode_CBR
AVEncCommonQualityVsSpeed
AVEncCommonMeanBitRate
VBR basado en calidad AVEncCommonRateControlMode = eAVEncCommonRateControlMode_Quality
AVEncCommonQuality
AVEncCommonMaxBitRate
Nota: En este modo, no se usan las propiedades AVEncCommonMeanBitRate y AVEncCommonMinBitRate . Se supone que la velocidad de bits mínima es cero.
VBR con restricción máxima AVEncCommonRateControlMode = eAVEncCommonRateControlMode_PeakConstrainedVBR
AVEncCommonMultipassMode = 1
AVEncCommonMinBitRate
AVEncCommonMaxBitRate
AVEncCommonMeanBitRate

 

Nota:

No se admite VBR de dos pasos.

 

Relación de aspecto

La relación de aspecto de la pantalla y la relación de aspecto de píxeles (PAR) están relacionadas con la fórmula siguiente:

Relación de aspecto de pantalla = PAR × (ancho de imagen/ alto de imagen)

El codificador usa esta fórmula para calcular el valor de pel_aspect_ratio para secuencias de bits MPEG-1 o aspect_ratio_information para secuencias de bits MPEG-2. (Véase ISO/IEC 11172 e ISO/IEC 138181-2, respectivamente).

El codificador intenta la siguiente configuración, en orden:

  1. Si la aplicación establece la propiedad AVEncVideoPixelAspectRatio en cualquier momento antes de que se ejecute el grafo de filtro, esta propiedad se usa para el PAR.
  2. De lo contrario, si los miembros dwPictAspectRatioX y dwPictAspectRatioY de la estructura VIDEOINFOHEADER2 no son cero, estos miembros se usan para la relación de aspecto de la pantalla y el PAR se calcula a partir de la relación de aspecto de la pantalla.
  3. Si ninguno de estos valores está presente, se supone que par es 1,0 y la relación de aspecto de presentación se calcula en consecuencia.

En el modo de codificación en directo (AVEncCommonQualityVsSpeed igual a cero), la relación de aspecto de la pantalla debe ser 4:3 o 16:9, con un valor predeterminado de 4:3. Si la relación de aspecto de visualización calculada no es 4:3 o 16:9, el codificador usa el valor 4:3.

Estructura GOP

Para especificar el grupo de estructura de imagen (GOP), establezca las siguientes propiedades en orden:

  1. AVEncMPVGOPSize
  2. AVEncVideoMaxKeyframeDistance
  3. AVEncMPVDefaultBPictureCount

En función de esta configuración, el codificador genera una de las siguientes estructuras GOP:

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

 

La estructura GOP predeterminada es IBBPBBP... con un tamaño GOP de 15 fotogramas.

Si la aplicación restringe el formato de destino a DVD (a través de la propiedad AVEncCommonFormatConstraint ) y establece la propiedad AVEncInputVideoSystem en NTSC o PAL, el codificador admite los siguientes tamaños GOP:

Sistema de vídeo Tamaños gop válidos Tamaño predeterminado de GOP
NTSC 1-18 18 (36 campos)
PAL 1-15 15 (30 campos)

 

Listas de cambios de propiedades de códec

Establecer el valor de una propiedad de códec puede cambiar el intervalo válido de otra propiedad. (Por ejemplo, restringir el formato de destino restringe la velocidad de bits promedio). Cada vez que la aplicación establece una propiedad, el codificador comprueba si alguna otra propiedad se encuentra fuera de su intervalo válido. Si es así, el codificador restablece esa propiedad a su nuevo valor predeterminado. Para recibir notificaciones cuando esto ocurra, haga lo siguiente:

  1. Llame a ICodecAPI::RegisterForEvent con el valor CODECAPI_CHANGELISTS.
  2. Use la interfaz IMediaEventEx para supervisar los eventos del gráfico de filtros.
  3. Si cambia el intervalo o el valor predeterminado de una propiedad, el codificador envía un evento EC_CODECAPI_EVENT con una lista de propiedades modificadas.

Compatibilidad con IEncoderAPI

Por motivos de compatibilidad con versiones anteriores, el filtro admite las siguientes propiedades a través de la interfaz IEncoderAPI :

Propiedad Descripción
ENCAPIPARAM_BITRATE Equivalente a AVEncCommonMeanBitRate.
ENCAPIPARAM_PEAK_BITRATE Equivalente a AVEncCommonMaxBitRate.
ENCAPIPARAM_BITRATE_MODE Equivalente a AVEncCommonRateControlMode.

 

Al establecer la propiedad ENCAPIPARAM_BITRATE_MODE , los valores se asignan de la siguiente manera:

ENCAPIPARAM_BITRATE_MODE AVEncCommonRateControlMode
ConstantBitRate eAVEncCommonRateControlMode_CBR
VariableBitRateAverage Vea la Nota.
VariableBitRatePeak eAVEncCommonRateControlMode_PeakConstrainedVBR

 

Nota:

Actualmente, el codificador de vídeo MPEG-2 no admite el modo de codificación VariableBitRateAverage . Si establece este valor, el codificador tiene como valor predeterminado codificación CBR (eAVEncCommonRateControlMode_CBR).

 

Al obtener la propiedad ENCAPIPARAM_BITRATE_MODE , los valores se asignan de la siguiente manera:

AVEncCommonRateControlMode ENCAPIPARAM_BITRATE_MODE
eAVEncCommonRateControlMode_CBR ConstantBitRate
eAVEncCommonRateControlMode_Quality VariableBitRatePeak
eAVEncCommonRateControlMode_PeakConstrainedVBR VariableBitRatePeak

 

Limitaciones

Actualmente, el codificador no admite ninguna de las siguientes características:

  • Generación de paquetes de flujo elemental (PES) en paquetes.
  • Conversión de velocidad de fotogramas. La secuencia de entrada debe tener una velocidad de fotogramas válida para una secuencia de bits MPEG-2.
  • Extensiones de velocidad de fotogramas para MPEG-2 (frame_rate_extension_n, frame_rate_extension_d).
  • Posiciones de búfer de entrada y salida (VBV) para un clip.
  • Inserción de datos de línea 21 (información de subtítulos) en la secuencia elemental de vídeo.
  • Establecer el campo de time_code de 25 bits en el encabezado GOP para MPEG-2.
  • Desnoise filter.
  • Administración de derechos digitales (DRM).

El codificador presenta una latencia de codificación de al menos un GOP.

Requisitos

Requisito Value
Cliente mínimo compatible
Windows Vista Home Premium, Windows Vista Ultimate, Windows 7 Home Premium, Windows 7 Professional, Windows 7 Enterprise, Windows 7 Ultimate [solo aplicaciones de escritorio]
Servidor mínimo compatible
No se admite ninguno
Encabezado
Wmcodecdsp.h

Consulte también

Filtros directShow

Tipos de medios de demultiplexer MPEG-2