我正在尝试在Windows XP和Win7中记录屏幕。我通过使用DirectX的接口CreateOffscreenPlainSurface和GetFrontBufferData获得了位图。我需要将位图编码为H.264格式的视频。问题是捕获的位图格式为D3DFMT_A8R8G8B8,但是H.264视频编码器只能支持MFVideoFormat_I420,MFVideoFormat_IYUV,MFVideoFormat_NV12,MFVideoFormat_YUY2和MFVideoFormat_YV12作为输入。我的问题是我是否需要自己传输格式(我不想)?还有其他更好的解决方案吗?
输入格式对应于MFVideoFormat_ARGB32
。
处理转换的Stock OS组件为Video Processor MFT。我没有在MSDN文章的页脚中看到可用性信息,但是,我印象深刻的是,该MFT随Windows Vista一起提供,就像整个Media Foundation API一样。
在Windows XP中,有一个类似的Color Converter DSP,它提供了非常紧密的服务,并公开了DirectX Media Object(DMO)的非常紧密的接口。它在所有更新的操作系统中都可用,但是它仅是软件,从不利用GPU功能进行转换。
这两个都可以为您处理请求的格式转换。
也作为参考,H.264 Video Encoder仅在Windows 7中引入。