Windows 基于媒体基础的硬件H264编码ID3D11TraceUR2D
我正在做一个项目,捕捉屏幕和编码它。我已经可以使用桌面复制API(Win8+)捕获屏幕。使用API,我可以获得Windows 基于媒体基础的硬件H264编码ID3D11TraceUR2D,windows,encoding,h.264,directx-11,ms-media-foundation,Windows,Encoding,H.264,Directx 11,Ms Media Foundation,我正在做一个项目,捕捉屏幕和编码它。我已经可以使用桌面复制API(Win8+)捕获屏幕。使用API,我可以获得ID3D11Texture2D纹理,并将它们从GPU传输到CPU,然后使用libx264对它们进行编码 然而,将纹理从GPU拉到CPU可能是一个瓶颈,这可能会降低fps。另外,libx264需要占用CPU周期(取决于质量)来编码帧。我希望在GPU本身中编码ID3D11Texture2D纹理,而不是使用CPU进行编码作为优化 我已经检查了文档和一些示例代码,但没有成功。如果有人能给我指出一
ID3D11Texture2D
纹理,并将它们从GPU传输到CPU,然后使用libx264对它们进行编码
然而,将纹理从GPU拉到CPU可能是一个瓶颈,这可能会降低fps。另外,libx264需要占用CPU周期(取决于质量)来编码帧。我希望在GPU本身中编码ID3D11Texture2D
纹理,而不是使用CPU进行编码作为优化
我已经检查了文档和一些示例代码,但没有成功。如果有人能给我指出一些可靠的资源,我将不胜感激。视频编码器,硬件和软件,可能有不同的形式。Windows本身提供了可扩展的API,可以选择编码器,然后其他编码器可能作为库和SDK提供。您已经在使用其中一个库(x264)。硬件编码器通常是特定于供应商的,取决于编码过程中直接涉及的可用硬件。若您对特定硬件的解决方案感兴趣,那个么检查相应的SDK可能是有意义的 否则,Windows中基于硬件的视频编码的典型通用接口是。微软只提供股票软件的H.264视频编码器,除了与其他选项共享MFT接口外,它不太可能比x264有任何优势。然而,视频硬件驱动程序通常会为可用的硬件安装额外的MFT,从而添加更多由硬件实现支持的MFT。例如:
- 英特尔快速同步视频H.264编码器MFT
- NVIDIA H.264编码器MFT
- AMDH264编码器