(Microsoft Media Foundation) 获取编码统计信息

有关编码会话中发生的情况的信息通常立即以处理样本时返回的错误代码的形式提供。 但是,可以从编解码器检索有关各种编码方面的一些统计信息。

视频帧信息

可以检索的一些视频统计信息处理编码器处理的帧数。 可以从视频编码器读取三个帧编号属性:

  • MFPKEY_TOTALFRAMES 是通过 DMO 的输入流处理的帧数。
  • MFPKEY_CODEDFRAMES 是编码的帧数。 通过从传递的帧总数中减去此值,可以确定丢弃的帧数。
  • MFPKEY_ZEROBYTEFRAMES 是未编码的帧数,因为它们已包含重复的内容。 此值不会从 DMO 报告的编码帧数中减去。

可以在编码期间随时读取视频帧属性。 这对于确定编码设置是否适合你的内容非常有用;如果总帧数和编码帧之间存在较大差异,则压缩内容可能无法满足质量要求。 完成编码后,可以读取最终值。

VBR 缓冲区统计信息

根据所使用的编码模式,某些或所有缓冲区设置可能在编码 (例如,在内容编码) 之前,基于质量的 VBR 比特率是未知的。 可以使用 IPropertyBag::Read 方法获取四个 VBR 缓冲区属性:

开始处理示例后,在对流进行编码之前,不应读取任何 VBR 属性。 如果这样做,编码器会将你的请求解释为编码已完成的信号。 处理的下一个示例被视为新的编码会话。

Windows Media 编解码器