Поделиться через


H.265 / Кодировщик видео HEVC

Кодировщик видео Media Foundation H.265 — это преобразование Media Foundation, которое поддерживает кодирование содержимого в формате H.265/HEVC. Кодировщик поддерживает следующие профили:

  • Профиль Main

Кодировщик видео H.265 предоставляет следующие интерфейсы:

Типы входных данных

Тип входного носителя должен иметь один из следующих подтипов:

  • MFVideoFormat_IYUV
  • MFVideoFormat_NV12
  • MFVideoFormat_YUY2
  • MFVideoFormat_YV12

Дополнительные сведения об этих подтипах см. в разделе Guid подтипа видео.

Тип выходных данных должен быть задан перед типом входных данных. Пока не будет задан тип выходных данных, метод IMFTransform::SetInputType кодировщика возвращает MF_E_TRANSFORM_TYPE_NOT_SET.

Типы вывода

Кодировщик поддерживает один выходной подтип:

  • MFVideoFormat_H265

Задайте следующие атрибуты для типа выходного носителя.

attribute Описание
MF_MT_MAJOR_TYPE Основной тип. Должен быть MFMediaType_Video.
MF_MT_SUBTYPE Подтип видео. Должен быть MFVideoFormat_HEVC.
MF_MT_AVG_BITRATE Средняя скорость закодированных битов в битах в секунду. Должен быть больше нуля.
MF_MT_FRAME_RATE Частота кадров.
MF_MT_FRAME_SIZE Размер кадра.
MF_MT_INTERLACE_MODE Режим чередоперемежений.
MF_MT_VIDEO_PROFILE Профиль кодирования H.265.
Поддерживаются такие значения:
  • eAVEncH265VProfile_Main_420_8
MF_MT_MPEG2_LEVEL Указывает уровень закодированного видео. Дополнительные сведения об ограничениях профиля и уровня см. в приложении A к ITU-T H.265.
MF_MT_PIXEL_ASPECT_RATIO Необязательный элемент. Указывает пропорции пикселей. Значение по умолчанию — 1:1.

 

После установки типа вывода кодировщик видео обновляет тип, добавляя атрибут MF_MT_MPEG_SEQUENCE_HEADER . Этот атрибут содержит заголовок последовательности.

Поддерживаемые методы IMFTransform

Для кодировщика H.265/HEVC поддерживаются следующие методы интерфейса IMFTransform :

Все остальные методы IMFTransform возвращают ошибку E_NOTIMPL.

Поддерживаемые методы ICodecAPI

Для кодировщика H.265/HEVC поддерживаются следующие методы интерфейса ICodecAPI :

Все остальные методы ICodecAPI возвращают E_NOTIMPL ошибки.

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

Кодировщик H.265 реализует интерфейс ICodecAPI для настройки параметров кодирования. Он поддерживает следующие свойства.

Требования к кодеку для сертификации кодировщика HCK см. в разделе Сертифицированный аппаратный кодировщик ниже.

Свойство Описание
CODECAPI_AVEncCommonRateControlMode Задает режим управления скоростью. Ниже приведены поддерживаемые режимы.
  • eAVEncCommonRateControlMode_CBR
  • eAVEncCommonRateControlMode_Quality
Если указаны другие режимы, будет использоваться eAVEncCommonRateControlMode_CBR управление скоростью .
Это VT_UI4 значение.
CODECAPI_AVEncCommonMeanBitRate Задает среднюю скорость для закодированного битового потока в битах в секунду.
Допустимый диапазон — [1 ... 2²–1].
Это VT_UI4 значение.
CODECAPI_AVEncCommonBufferSize Задает размер буфера (в байтах) для кодирования с постоянной скоростью (CBR).
Допустимый диапазон — [1 ... 2²–1].
Это VT_UI4 значение.
CODECAPI_AVEncCommonMaxBitRate Задает максимальную скорость для режимов управления скоростью, допускающих пиковую скорость.
Допустимый диапазон — [1 ... 2²–1].
Это VT_UI4 значение.
CODECAPI_AVEncMPVGOPSize Задает число рисунков из одного заголовка GOP в следующий, включая начальную привязку, но не следующую.
Допустимый диапазон — [0 ... 2²–1]. Если значение равно нулю, кодировщик выбирает размер GOP. Значение по умолчанию равно нулю.
Это VT_UI4 значение.
CODECAPI_AVLowLatencyMode Включает или отключает режим низкой задержки.
Это VT_BOOL значение.
CODECAPI_AVEncCommonQualityVsSpeed Устанавливает компромисс между качеством и скоростью. Это значение влияет на то, как кодировщик выполняет различные операции кодирования, такие как компенсация движения. При более высоких уровнях сложности кодировщик работает медленнее, но обеспечивает более высокое качество с той же скоростью передачи.
Допустимый диапазон — от 0 до 100. Внутренне это значение сопоставляется с меньшим набором уровней качества и скорости, поддерживаемых кодировщиком.
Это VT_UI4 значение.
CODECAPI_AVEncVideoForceKeyFrame При принудительном кодировщике кодирует следующий кадр в качестве ключевого кадра.
Это VT_UI4 значение.
CODECAPI_AVEncVideoEncodeQP Если это свойство задано, кодировщик будет использовать указанный QP для кодирования следующего кадра и всех последующих кадров до тех пор, пока не будет указан новый QP.
Допустимый диапазон: 0–51 включительно
CODECAPI_AVEncVideoMinQP Это свойство задает ограничение на минимальное значение QP, которое кодировщик может использовать во время управления скоростью CBR.
Это VT_UI4 значение.
CODECAPI_AVEncVideoMaxQP Это свойство задает ограничение на максимальное значение QP, которое кодировщик может использовать во время управления скоростью CBR.
Это VT_UI4 значение.
CODECAPI_VideoEncoderDisplayContentType Задает, является ли содержимое полноэкранным, в отличие от содержимого экрана, которое может иметь меньшее окно видео или вообще не иметь видео.
Это VT_UI4 значение.
CODECAPI_AVEncNumWorkerThreads Задает количество потоков, используемых для выполнения операции сжатия. Кодировщик разделит кадр на плитки таким образом, чтобы количество потоков равнялось количеству плиток.
  • Количество логических процессоров. Число потоков должно быть меньше или равно числу логических процессоров.
  • Размер кадра. Размер плитки должен быть больше или равен 265 x 64 пикселей.
  • С контролем четности. Число потоков должно быть четным значением. Если указанное значение нечетное, будет использоваться следующее более низкое четное значение.
Это VT_UI4 значение.

 

Сертифицированный аппаратный кодировщик

Если имеется сертифицированный аппаратный кодировщик, он обычно используется вместо системного кодировщика папки "Входящие" для сценариев, связанных с Media Foundation. Сертифицированные кодировщики должны поддерживать определенный набор свойств ICodecAPI и при необходимости могут поддерживать другой набор свойств. Процесс сертификации должен гарантировать правильную поддержку необходимых свойств и, если поддерживается необязательное свойство, он также поддерживается должным образом.

Ниже приведен набор обязательных и необязательных свойств ICodecAPI , которые кодировщики должны пройти сертификацию кодировщика HCK.

Требования

Требование Значение
Минимальная версия клиента
Windows 10 [только классические приложения]
Минимальная версия сервера
Ни одна версия не поддерживается
DLL
Mfh265enc.dll

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

Объекты кодека