我的应用程序做从GDI或DXGI方法捕获帧的编码。 目前我正在做编码与帮助x264库。
AFAIK x264是基于软件的库,我想用GPU来编码,所以可以节省CPU周期,希望速度也会更快。
经过search,我find了一个正在做h264编码的H.264video编码器 MFT。
但几个问题都回答了我。
1)它比x264编码库快吗?
2)可以帮助这个MFT编码位图帧吗?
– 我只看到MFVideoFormat_I420,MFVideoFormat_IYUV,MFVideoFormat_NV12,MFVideoFormat_YUY2,MFVideoFormat_YV12支持这些格式
3)是硬件加速(是指使用CPU还是GPU)?
– 最初我的理解是使用GPU,但是在阅读这篇文章之后,我感到困惑MFT编码器(h264)CPU利用率高 。
4)H.264 Video Encoder MFT可以独立使用而不使用接收器,因为我必须在networking上发送数据?
5)有没有其他的select在Windows中?
这可能是一些非常愚蠢的问题,请随时编辑。
Media Foundation H.264视频编码器是软件编码器。 从我的[主观]经验来看,它比x264慢,也许更重要的是,x264提供了更广泛的设置,特别是当选择速度超过范围的模式。 无论哪种方式,库存MS编码器都不是硬件加速的。
但是,可能还有其他可用硬件加速H.264编码的MFT(通常与各自的硬件驱动程序一起安装)。 您可以通过枚举MFT来发现它们,也许最受欢迎的是英特尔快速同步视频(QSV)编码器。
HardwareVideoEncoderTransform
应用程序进行枚举并为您提供相关的详细信息:
典型的输入是NV12,一些提供其他输入选择(例如32位RGB)。 如果您需要其他格式,则必须预先转换输入。
硬件支持的编码器CPU消耗低,其效率取决于硬件实现。 是的,您可以单独使用它们,完全独立使用,也可以使用DirectShow过滤器包含在普通的DirectShow管道中。
替代的H.264编码器通常是基于SDK的,或者是在DirectShow / MFT格式的这些SDK上进行封装,因为供应商将其实现方式打包为多媒体开发人员熟知的已知形式。