我的应用程序对从 GDI 或 DXGI 方法捕获的帧进行编码。目前我正在使用帮助 x264 库进行编码。
AFAIK x264 是基于软件的库,我想在 GPU 的帮助下进行编码,这样它可以节省 CPU 周期,并且希望速度也会更快。
经过搜索,我发现了一个H.264 视频编码器 https://msdn.microsoft.com/en-us/library/windows/desktop/dd797816(v=vs.85).aspxMFT正在做h264编码。
但有几个问题已经为我解答了。
1)它比x264编码库更快吗?
2)可以借助此MFT对位图帧进行编码吗?
- 我只看到 MFVideoFormat_I420、MFVideoFormat_IYUV、MFVideoFormat_NV12、MFVideoFormat_YUY2、MFVideoFormat_YV12 这些格式受支持
3)它是硬件加速的(意味着它使用CPU或GPU)?
- 最初我的理解是它使用 GPU,但读完这篇文章后我感到困惑MFT 编码器 (h264) CPU 利用率高 https://stackoverflow.com/questions/29322263/mft-encoder-h264-high-cpu-utilization.
4)H.264视频编码器MFT可以独立使用而不使用接收器编写器,因为我必须在网络上发送数据?
5)windows下还有其他选择吗?
可能有些问题很愚蠢,请随意编辑。
Media Foundation H.264 视频编码器是软件编码器。根据我的[主观]经验,它比 x264 慢,也许更重要的是,x264 提供了更广泛的设置,特别是在选择速度与质量范围末端的模式时。无论哪种方式,普通 MS 编码器都不是硬件加速的。
但是,可能还有其他可用的 MFT(通常与相应的硬件驱动程序一起安装)可以执行硬件加速 H.264 编码。您可以通过枚举 MFT 来发现它们,也许最流行的是英特尔快速同步视频 (QSV) 编码器。
HardwareVideoEncoderTransform app http://alax.info/blog/1609进行枚举并为您提供相关详细信息:
典型输入是 NV12,有些提供其他输入选择(例如 32 位 RGB)。如果您需要其他格式,则必须预先转换输入。
硬件支持的编码器 CPU 消耗较低,其效率取决于硬件实现。是的,您可以独立、完全独立地使用它们,也可以将它们包装为 DirectShow 过滤器并包含在普通 DirectShow 管道中。
替代 H.264 编码器通常基于 SDK,或者以 DirectShow/MFT 形式对这些 SDK 进行包装,因为供应商以多媒体开发人员已经熟悉的众所周知的形式打包其实现。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)