Видеокодировщик 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 |
Рекомендуется задавать свойства в следующем порядке:
Задайте остальные свойства в любом порядке. (Однако см. раздел Структура 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 соответственно.)
Кодировщик пытается выполнить следующие параметры по порядку:
- Если приложение задает свойство AVEncVideoPixelAspectRatio в любое время перед запуском графа фильтра, это свойство используется для PAR.
- В противном случае, если элементы dwPictAspectRatioX и dwPictAspectRatioY структуры VIDEOINFOHEADER2 не равны нулю, эти элементы используются для пропорций отображения, а par вычисляется на основе пропорций отображения.
- Если ни одно из этих значений отсутствует, предполагается, что значение PAR равно 1,0, а пропорции отображения вычисляются соответствующим образом.
В режиме кодирования в реальном времени (AVEncCommonQualityVsSpeed равно нулю) пропорции дисплея должны быть 4:3 или 16:9 со значением по умолчанию 4:3. Если вычисленное соотношение сторон отображения не равно 4:3 или 16:9, кодировщик использует значение 4:3.
Структура GOP
Чтобы указать структуру группы рисунков (GOP), задайте следующие свойства по порядку:
На основе этих параметров кодировщик создает одну из следующих структур 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 полей) |
Списки изменений свойств кодека
Установка значения одного свойства кодека может изменить допустимый диапазон другого свойства. (Например, ограничение целевого формата ограничивает среднюю скорость передачи.) Всякий раз, когда приложение задает свойство, кодировщик проверяет, выходят ли другие свойства за пределы допустимого диапазона. Если да, кодировщик сбрасывает это свойство до нового значения по умолчанию. Чтобы получать уведомления в этом случае, сделайте следующее:
- Вызовите метод ICodecAPI::RegisterForEvent со значением CODECAPI_CHANGELISTS.
- Используйте интерфейс IMediaEventEx для отслеживания событий из графа фильтра.
- При изменении диапазона или значения по умолчанию свойства кодировщик отправляет событие 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 Максимальная [только классические приложения] |
Минимальная версия сервера |
Ни одна версия не поддерживается |
Заголовок |
|
См. также раздел