我正在做的是尝试在windows XP和Win7中记录屏幕。我使用DirectX的接口CreateOffscreenPlainSurface和GetFrontBufferData得到了位图。我需要将位图编码为H.264格式的视频。问题是捕获的位图是D3DFMT_A8R8G8B8格式,但H.264视频编码器只能支持MFVideoFormat_I420、MFVideoFormat_IYUV、MFVideoFormat_NV12、MFVideoFormat_YUY2和MFVideoFormat_YV12作为输入。我的问题是我是否需要自己转换格式(我不想这样做)?有没有其他更好的解决方案呢?
发布于 2020-01-11 20:12:44
输入格式对应于MFVideoFormat_ARGB32。
处理转换的常用OS组件是Video Processor MFT。我在MSDN文章的页脚没有看到可用性信息,但是我的印象是这个MFT是Windows Vista附带的,就像整个Media Foundation API一样。
在Windows XP中已经有一个类似的Color Converter DSP,它提供非常接近的服务,并且暴露了一个非常接近的DirectX媒体对象(DMO)接口。它在所有较新的操作系统中都可用,但它只是软件,从不利用GPU功能进行转换。
这两者都可以为您处理所请求的格式转换。
同样作为参考,H.264 Video Encoder仅在Windows7中引入。
https://stackoverflow.com/questions/59694103
复制相似问题