Видеокодировщик Microsoft MPEG-2

[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]

Фильтр Видеокодировщика Microsoft MPEG-2 кодирует видео MPEG-2 и MPEG-1.

Для кодирования и мультиплексных аудио-видеопотоков используйте фильтр кодировщика Microsoft MPEG-2 , который инкапсулирует функции этого фильтра и фильтра аудиокодировщика Microsoft MPEG-2 .

Примечание

Этот фильтр не поддерживается на платформах на основе IA-64.

 

Сведения о фильтре

Интерфейсы фильтра

IBaseFilter
ICodecAPI
IEncoderAPI
IMediaSeeking
IVideoEncoder

Типы носителей входных закрепления

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

Интерфейсы ввода-закрепления

IMemInputPin
IPin
IQualityControl

Типы носителей выходных закрепления

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

Интерфейсы вывода закрепления

IMediaSeeking
IPin
IQualityControl

Фильтрация CLSID

CLSID_CMPEG2EncoderVideoDS (объявлено в wmcodecdsp.h)

Исполняемый файл

msmpeg2enc.dll

Заслуга

MERIT_DO_NOT_USE

Категория фильтра

CLSID_LegacyAmFilterCategory

 

Комментарии

Видеокодировщик MPEG-2 может создавать следующие типы выходных данных:

  • Простейший поток видео
  • Видео в потоке программы MPEG-2
  • Видео в транспортном потоке MPEG-2

Он поддерживает следующие профили и уровни MPEG-2:

Профиль Уровни Комментарии
Простой профиль Главная ветвь
Профиль Main Low, Main, High, High-1440
Высокий профиль Main, High, High-1440 Отсутствует масштабируемость или поддержка 4:2:2/4:4:4 (только 4:2:0)
Профиль 4:2:2 Main, High Отсутствует масштабируемость или поддержка 4:2:2 (только 4:2:0)

 

Свойства кодека

Фильтр поддерживает следующие свойства через ICodecAPI.

Свойство По умолчанию Поддерживаемые значения
AVEncCodecType Видео MPEG-2 CODECAPI_GUID_AVEncMPEG1Video
CODECAPI_GUID_AVEncMPEG2Video
AVEncCommonBufferInLevel биты 12222464
AVEncCommonBufferOutLevel биты 12222464
AVEncCommonBufferSize биты 12222464
AVEncCommonFormatConstraint Не указан CODECAPI_GUID_AVEncCommonFormatUnSpecified (без ограничения формата)
CODECAPI_GUID_AVEncCommonFormatDVD_V (DVD-Видео)
CODECAPI_GUID_AVEncCommonFormatVCD (видео cd)
AVEncCommonMaxBitRate 9800000 (9,8 Мбит/с)
AVEncCommonMeanBitRate 7000000 (7,0 Мбит/с)
AVEncCommonMinBitRate 128
AVEncCommonMultipassMode 1 1
AVEncCommonQuality 100 1 — 100
AVEncCommonQualityVsSpeed 75 0 — 100
AVEncCommonRateControlMode CBR eAVEncCommonRateControlMode_CBR
eAVEncCommonRateControlMode_PeakConstrainedVBR
eAVEncCommonRateControlMode_Quality
AVEncInputVideoSystem Не указан eAVEncInputVideoSystem_Unspecified
eAVEncInputVideoSystem_PAL
eAVEncInputVideoSystem_NTSC
AVEncMPVDefaultBPictureCount 2 0 — 2
AVEncMPVFrameFieldMode Режим кадра
AVEncMPVGenerateHeaderSeqDispExt TRUE
AVEncMPVGenerateHeaderSeqExt TRUE
AVEncMPVGOPОткрыть FALSE
AVEncMPVGOPSInSeq 1 0 — 1
AVEncMPVGOPSize 18 кадров (36 полей) для NTSC; 15 кадров (30 полей) в противном случае. 1 — 30; См. примечания
AVEncMPVIntraDCPrecision 9 8 — 10
AVEncMPVLevel Высокий
AVEncMPVProfile Главная ветвь
AVEncVideoDefaultUpperFieldDominant TRUE
AVEncVideoForceSourceScanType Interlaced eAVEncVideoSourceScan_Interlaced
eAVEncVideoSourceScan_Progressive
AVEncVideoInputChromaResolution 4:2:0 eAVEncVideoChromaResolution_420 (4:2:0)
eAVEncVideoChromaResolution_SameAsSource
AVEncVideoInputChromaSubsampling То же, что и источник
AVEncVideoInputColorNominalRange То же, что и источник
AVEncVideoInputColorPrimaries То же, что и источник
AVEncVideoInputColorTransferFunction То же, что и источник
AVEncVideoInputColorTransferMatrix То же, что и источник
AVEncVideoMaxKeyframeDistance AVEncMPVGOPSize — 1 0 или AVEncMPVGOPSize — 1
AVEncVideoNoOfFieldsToEncode 0
AVEncVideoOutputChromaResolution 4:2:0 eAVEncVideoChromaResolution_420 (4:2:0)
eAVEncVideoChromaResolution_SameAsSource
AVEncVideoOutputFrameRate Должен совпадать с частотой входных кадров.
AVEncVideoOutputScanType Так же, как и для входных данных eAVEncVideoOutputScan_SameAsInput
AVEncVideoPixelAspectRatio 1:1

 

Рекомендуется задавать свойства в следующем порядке:

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

Задайте остальные свойства в любом порядке. (Однако см. раздел Структура GOP.)

Можно задать свойства во время работы графа фильтра. Существует задержка по крайней мере одной GOP, прежде чем новые параметры вступают в силу.

Операция кодировщика

При кодировании видео MPEG-1 кодировщик автоматически задает 1-разрядный код constrained_parameters_flag в заголовке последовательности при соблюдении всех ограничений.

При необходимости кодировщик округляет размер входного видео, чтобы размеры выходного видео соответствовали требованиям MPEG. Для прогрессивного видео размеры выходных данных округляются до кратного 16 по ширине и высоте. Для видео с чередованием ширина округляется до кратного 16, а высота округляется до кратного 32. Эта операция округления по мере необходимости использует заполнение.

Если видео чередуется, кодировщик выполняет автоматическое обнаружение телесины (раскрывающийся 3:2). Входное видео может содержать пары рисунков полей, а также чередуемые кадры.

Внутренний формат кодировщика — 4:2:0 IYUV (идентичен I420). Он может выполнять преобразование цвета из форматов видео YUY2, YV12, UYVY и RGB-24.

Чтобы ограничить битовый поток целевым форматом (DVD или VCD), задайте свойство AVEncCommonFormatConstraint . Если это свойство имеет значение, отличное от GUID_AVEncCommonFormatUnSpecified, кодировщик ограничивает синтаксис MPEG тем, что разрешено целевым форматом.

Для кодирования в реальном времени задайте для свойства AVEncCommonQualityVsSpeed значение 0. Это приводит к оптимизации скорости кодировщика.

Режимы кодирования

Кодировщик поддерживает несколько режимов кодирования:

  • Однопрохожая постоянная скорость передачи (CBR).
  • Однопрохожая переменная скорость (VBR) на основе качества с использованием постоянного размера шага квантайзера. В этом режиме кодировщик пытается достичь целевого уровня качества до максимальной скорости передачи.
  • VBR с ограничением на один проход с пиковой нагрузкой. В этом режиме кодировщик пытается достичь целевой средней скорости передачи в пределах определенных внутренних ограничений.

Чтобы настроить режим кодирования, задайте следующие свойства:

Режим Свойства
CBR AVEncCommonRateControlMode = eAVEncCommonRateControlMode_CBR
AVEncCommonQualityVsSpeed
AVEncCommonMeanBitRate
VBR на основе качества AVEncCommonRateControlMode = eAVEncCommonRateControlMode_Quality
AVEncCommonQuality
AVEncCommonMaxBitRate
Примечание: В этом режиме свойства AVEncCommonMeanBitRate и AVEncCommonMinBitRate не используются. Предполагается, что минимальная скорость передачи данных равна нулю.
VBR с пиковой нагрузкой AVEncCommonRateControlMode = eAVEncCommonRateControlMode_PeakConstrainedVBR
AVEncCommonMultipassMode = 1
AVEncCommonMinBitRate
AVEncCommonMaxBitRate
AVEncCommonMeanBitRate

 

Примечание

Двухпрохожая VBR не поддерживается.

 

Пропорции

Пропорции дисплея и пропорции пикселей (PAR) связаны по следующей формуле:

Пропорции дисплея = PAR × (ширина изображения/высота рисунка)

Кодировщик использует эту формулу для вычисления значения pel_aspect_ratio для битовых потоков MPEG-1 или aspect_ratio_information для битовых потоков MPEG-2. (См. ISO/IEC 11172 и ISO/IEC 138181-2 соответственно.)

Кодировщик пытается выполнить следующие параметры по порядку:

  1. Если приложение задает свойство AVEncVideoPixelAspectRatio в любое время перед запуском графа фильтра, это свойство используется для PAR.
  2. В противном случае, если элементы dwPictAspectRatioX и dwPictAspectRatioY структуры VIDEOINFOHEADER2 не равны нулю, эти элементы используются для пропорций отображения, а par вычисляется на основе пропорций отображения.
  3. Если ни одно из этих значений отсутствует, предполагается, что значение PAR равно 1,0, а пропорции отображения вычисляются соответствующим образом.

В режиме кодирования в реальном времени (AVEncCommonQualityVsSpeed равно нулю) пропорции дисплея должны быть 4:3 или 16:9 со значением по умолчанию 4:3. Если вычисленное соотношение сторон отображения не равно 4:3 или 16:9, кодировщик использует значение 4:3.

Структура GOP

Чтобы указать структуру группы рисунков (GOP), задайте следующие свойства по порядку:

  1. AVEncMPVGOPSize
  2. AVEncVideoMaxKeyframeDistance
  3. AVEncMPVDefaultBPictureCount

На основе этих параметров кодировщик создает одну из следующих структур GOP:

AVEncVideoMaxKeyframeDistance AVEncMPVDefaultBPictureCount Структура GOP
0 0 IIII...
AVEncMPVGOPSize — 1 0 IPPP...
AVEncMPVGOPSize — 1 1 IBPBP...
AVEncMPVGOPSize — 1 2 IBBPBBP...

 

Структура GOP по умолчанию — IBBPBBP... с gop размером 15 кадров.

Если приложение ограничивает целевой формат DVD (с помощью свойства AVEncCommonFormatConstraint ) и задает для свойства AVEncInputVideoSystem значение NTSC или PAL, кодировщик поддерживает следующие размеры GOP:

Видеосистема Допустимые размеры GOP Размер GOP по умолчанию
NTSC 1-18 18 (36 полей)
список доступа к публикации От 1 до 15 15 (30 полей)

 

Списки изменений свойств кодека

Установка значения одного свойства кодека может изменить допустимый диапазон другого свойства. (Например, ограничение целевого формата ограничивает среднюю скорость передачи.) Всякий раз, когда приложение задает свойство, кодировщик проверяет, выходят ли другие свойства за пределы допустимого диапазона. Если да, кодировщик сбрасывает это свойство до нового значения по умолчанию. Чтобы получать уведомления в этом случае, сделайте следующее:

  1. Вызовите метод ICodecAPI::RegisterForEvent со значением CODECAPI_CHANGELISTS.
  2. Используйте интерфейс IMediaEventEx для отслеживания событий из графа фильтра.
  3. При изменении диапазона или значения по умолчанию свойства кодировщик отправляет событие EC_CODECAPI_EVENT со списком измененных свойств.

Поддержка IEncoderAPI

Для обеспечения обратной совместимости фильтр поддерживает следующие свойства через интерфейс IEncoderAPI :

Свойство Описание
ENCAPIPARAM_BITRATE Эквивалент avEncCommonMeanBitRate.
ENCAPIPARAM_PEAK_BITRATE Эквивалент avEncCommonMaxBitRate.
ENCAPIPARAM_BITRATE_MODE Эквивалент avEncCommonRateControlMode.

 

При задании свойства ENCAPIPARAM_BITRATE_MODE значения сопоставляются следующим образом:

ENCAPIPARAM_BITRATE_MODE AVEncCommonRateControlMode
ConstantBitRate eAVEncCommonRateControlMode_CBR
VariableBitRateAverage См. примечание.
VariableBitRatePeak eAVEncCommonRateControlMode_PeakConstrainedVBR

 

Примечание

В настоящее время видеокодировщик MPEG-2 не поддерживает режим кодирования VariableBitRateAverage . Если задать это значение, кодировщик по умолчанию использует кодировку CBR (eAVEncCommonRateControlMode_CBR).

 

При получении свойства ENCAPIPARAM_BITRATE_MODE значения сопоставляются следующим образом:

AVEncCommonRateControlMode ENCAPIPARAM_BITRATE_MODE
eAVEncCommonRateControlMode_CBR ConstantBitRate
eAVEncCommonRateControlMode_Quality VariableBitRatePeak
eAVEncCommonRateControlMode_PeakConstrainedVBR VariableBitRatePeak

 

Ограничения

В настоящее время кодировщик не поддерживает следующие функции:

  • Создание пакетизованных пакетов элементарных потоков (PES).
  • Преобразование частоты кадров. Входной поток должен иметь частоту кадров, допустимую для битового потока MPEG-2.
  • Расширения частоты кадров для MPEG-2 (frame_rate_extension_n, frame_rate_extension_d).
  • Позиции буфера входа и выхода (VBV) для клипа.
  • Вставка данных строки 21 (сведения о закрытом субтитре) в элементарный поток видео.
  • Задание 25-разрядного поля time_code в заголовке GOP для MPEG-2.
  • Фильтр denoise.
  • Управление цифровыми правами (DRM).

Кодировщик вводит задержку кодирования по крайней мере одной GOP.

Требования

Требование Значение
Минимальная версия клиента
Windows Vista Home Premium, Windows Vista Ultimate, Windows 7 Домашняя Премиум, Windows 7 Профессиональная, Windows 7 Корпоративная, Windows 7 Максимальная [только классические приложения]
Минимальная версия сервера
Ни одна версия не поддерживается
Заголовок
Wmcodecdsp.h

См. также раздел

Фильтры DirectShow

Типы носителей demultiplexer MPEG-2