我只有Windows Direct2D应用程序,并且想为过场动画实现视频播放系统。这些文件是mp4,但可以根据需要更改格式。
似乎DirectShow是在Windows上呈现视频/音频的建议方法。
现在如何让DirectShow将视频帧渲染到我的Direct2D渲染目标?
VMR-9过滤器看起来是最佳途径,但是我似乎找不到一种将其集成到应用程序中的优雅方法

最佳答案

Windows中没有Direct2D / DirectShow互操作性层。为了适合这两种技术,您将不得不以一种相当低效的方式在API之间复制数据(并且仍然需要一些时间来开发适合性)。
使用H.264 / HEVC MP4视频文件时,最好使用Media Foundation读取和解码帧,然后将它们加载到Direct2D位图中并显示在应用程序中。在性能方面,可以通过GPU以合理的成本和合理的开发工作将视频帧传输到Direct2D位图,但是即使您做一个捷径并进行粗略和低效的集成,它也可以与DirectShow相提并论。
我建议从使用Media Foundation Source Reader API开始阅读和解码视频帧开始。熟悉这些技术后,您将采取下一步操作,并使用GPU容量和interop between Direct3D and Direct2D优化传输。

关于c++ - 将DirectShow与Direct2D一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64633811/

10-10 08:56