H.265 /HEVC 视频编码器

Media Foundation H.265 视频编码器是一种 媒体基础转换 ,支持将内容编码为 H.265/HEVC 格式。 编码器支持以下配置文件:

  • Main Profile

H.265 视频编码器公开以下接口:

输入类型

输入媒体类型必须具有以下子类型之一:

  • MFVideoFormat_IYUV
  • MFVideoFormat_NV12
  • MFVideoFormat_YUY2
  • MFVideoFormat_YV12

有关这些子类型的详细信息,请参阅 视频子类型 GUID

输出类型必须在输入类型之前设置。 在设置输出类型之前,编码器的 IMFTransform::SetInputType 方法将返回 MF_E_TRANSFORM_TYPE_NOT_SET

输出类型

编码器支持单个输出子类型:

  • MFVideoFormat_H265

在输出媒体类型上设置以下属性。

属性 说明
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 指定编码视频的级别。 有关配置文件和级别约束的详细信息,请参阅ITU-T H.265的附件 A。
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 标头到下一个 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 此属性将设置在 CBR 速率控制期间编码器可以使用的最小 QP 限制。
这是一个VT_UI4值。
CODECAPI_AVEncVideoMaxQP 此属性将设置在 CBR 速率控制期间编码器可以使用的最大 QP 限制。
这是一个VT_UI4值。
CODECAPI_VideoEncoderDisplayContentType 设置内容是否为全屏视频,而不是视频窗口可能较小或根本没有视频的屏幕内容。
这是一个VT_UI4值。
CODECAPI_AVEncNumWorkerThreads 设置用于执行压缩操作的线程数。 编码器将帧划分为多个磁贴,使线程数等于磁贴数。
  • 逻辑处理器的数目。 线程数必须小于或等于逻辑处理器数。
  • 框架的大小。 磁贴的大小必须大于或等于 265x64 像素。
  • 奇偶校验。 线程数必须是偶数值。 如果指定的值为奇数,则使用下一个较低偶数值。
这是一个VT_UI4值。

 

认证硬件编码器

如果存在经过认证的硬件编码器,则通常使用它,而不是媒体基础相关方案的收件箱系统编码器。 需要经过认证的编码器才能支持一组特定的 ICodecAPI 属性,并且可以选择性地支持另一组属性。 认证过程应保证正确支持所需属性,如果支持可选属性,则也得到适当支持。

下面是编码器通过 HCK 编码器认证的必需和可选 ICodecAPI 属性集。

要求

要求
最低受支持的客户端
Windows 10 [仅限桌面应用]
最低受支持的服务器
无受支持的版本
DLL
Mfh265enc.dll

另请参阅

编解码器对象