AMDh264Encoder 在检查 MFSampleExtension_CleanPoint 时返回 MF_E_ATTRIBUTENOTFOUND

AMDh264Encoder returning MF_E_ATTRIBUTENOTFOUND when checking MFSampleExtension_CleanPoint

当接收到来自 IMFTransform::ProcessOutput 的输出时,在样本上调用 GetUINT32(MFSampleExtension_CleanPoint) 失败并且 returns MF_E_ATTRIBUTENOTFOUND 仅在使用 AMDh264Encoder(NV12 in,H264出),因此最终输出视频中没有关键帧,因此它已损坏。

是什么导致获取属性 MFSampleExtension_CleanPoint MF_E_ATTRIBUTENOTFOUND 失败,仅在 AMDh264Encoder 上?

视频编码器 MFT 由硬件供应商提供。 AMD 为他们的硬件做了“AMDh264Encoder”,并特别在他们的视频驱动程序中引入了它。

由于这个原因,不同供应商的实现略有不同,AMD 人员决定不在制作的媒体样本上设置此属性。

您应该优雅地跳过这个并将该属性视为可选属性。