将RGB编码为H.264

问题描述 投票:1回答:1

我正在尝试在Windows XP和Win7中记录屏幕。我通过使用DirectX的接口CreateOffscreenPlainSurface和GetFrontBufferData获得了位图。我需要将位图编码为H.264格式的视频。问题是捕获的位图格式为D3DFMT_A8R8G8B8,但是H.264视频编码器只能支持MFVideoFormat_I420,MFVideoFormat_IYUV,MFVideoFormat_NV12,MFVideoFormat_YUY2和MFVideoFormat_YV12作为输入。我的问题是我是否需要自己传输格式(我不想)?还有其他更好的解决方案吗?

c++ video directx h.264 ms-media-foundation
1个回答
0
投票

输入格式对应于MFVideoFormat_ARGB32

处理转换的Stock OS组件为Video Processor MFT。我没有在MSDN文章的页脚中看到可用性信息,但是,我印象深刻的是,该MFT随Win​​dows Vista一起提供,就像整个Media Foundation API一样。

在Windows XP中,有一个类似的Color Converter DSP,它提供了非常紧密的服务,并公开了DirectX Media Object(DMO)的非常紧密的接口。它在所有更新的操作系统中都可用,但是它仅是软件,从不利用GPU功能进行转换。

这两个都可以为您处理请求的格式转换。

也作为参考,H.264 Video Encoder仅在Windows 7中引入。

© www.soinside.com 2019 - 2024. All rights reserved.