如何在Windows中用H264视频编码器MFT编码位图

时间:2016-02-18 12:42:21

标签: windows encoding h.264 ms-media-foundation mft

我的应用程序从GDI或DXGI方法对捕获的帧进行编码。目前我在帮助x264库进行编码 AFAIK x264是基于软件的库,我想在GPU的帮助下进行编码,因此它可以节省CPU周期,希望速度也会更快。
搜索之后,我找到了H.264 Video Encoder MFT,它正在进行h264编码 但是我回答了几个问题 1)是否比x264编码库更快?
2)可以帮助这个MFT编码位图帧吗?     - 我只看到MFVideoFormat_I420,MFVideoFormat_IYUV,MFVideoFormat_NV12,MFVideoFormat_YUY2,MFVideoFormat_YV12支持这些格式
3)它是硬件加速的(意味着它是使用CPU还是GPU)?    - 最初我的理解是它使用GPU但我在阅读这篇文章MFT Encoder (h264) High CPU utilization后感到困惑 4)H.264视频编码器MFT可以单独使用而不使用接收器编写器,因为我必须在网络上发送数据? 5)Windows中还有其他替代方案吗?

可能有些问题非常愚蠢,请随时编辑。

1 个答案:

答案 0 :(得分:2)

Media Foundation H.264视频编码器是软件编码器。从我的[主观]体验来看,它比x264慢,或许更重要的是,x264提供更广泛的设置,特别是在速度超过范围的速度选择模式时。无论哪种方式,库存MS编码器都不是硬件加速的。

但是,可能存在其他可用于执行硬件加速H.264编码的MFT(通常与各自的硬件驱动程序一起安装)。您可以通过枚举MFT来发现它们,也许最受欢迎的是英特尔快速同步视频(QSV)编码器。

HardwareVideoEncoderTransform app执行枚举并为您提供相关详细信息:

enter image description here

典型输入是NV12,一些提供其他输入选择(例如32位RGB)。如果您需要其他格式,则必须预先转换输入。

硬件支持的编码器CPU消耗低,其效率取决于硬件实现。是的,您可以单独使用它们,完全独立使用或包装为DirectShow过滤器并包含在普通的DirectShow管道中。

备用H.264编码器通常是基于SDK的,或者是DirectShow / MFT格式的SDK包装器,因为供应商以多媒体开发人员已熟悉的众所周知的形式打包它们的实现。