将DirectShow与Direct2D一起使用



我有一个仅限windows的Direct2D应用程序,希望实现一个用于过场的视频播放系统。这些文件是mp4,但如果需要,可以更改格式。

DirectShow似乎是在窗口上渲染视频/音频的建议方法。

现在,我如何让DirectShow将视频帧渲染到我的Direct2D渲染目标?

VMR-9过滤器看起来是最好的途径,但我似乎找不到将其集成到我的应用程序中的优雅方法

Windows中没有Direct2D/DirectShow互操作层。为了适应这两种技术,您必须以一种相当低效的方式在API之间复制数据(这仍然需要一些时间来开发适应(。

使用H.264/HEVC MP4视频文件,您最好使用Media Foundation来读取和解码帧,然后将它们加载到Direct2D位图中并在应用程序中显示。就性能而言,可以通过GPU以合理的成本和合理的开发努力将视频帧传输到Direct2D位图,但即使你走捷径,粗略而低效地进行集成,它也将与DirectShow不相上下。

我建议从使用Media Foundation源代码阅读器API读取和解码视频帧开始。一旦您熟悉了这些技术,您将采取下一步行动,通过使用GPU容量和Direct3D和Direct2D之间的互操作来优化传输。

最新更新