我有一个windows唯一的Direct2D应用程序,并想实现一个视频播放系统的卡通场景。这些文件是mp4格式的,但如果需要,可以更改格式。
DirectShow似乎是在windows上渲染视频/音频的推荐方式。
现在,如何让DirectShow将视频帧渲染到我的Direct2D渲染目标?
VMR-9过滤器看起来是最好的方法,但是我似乎找不到一种优雅的方法来将它集成到我的应用程序中
发布于 2020-11-02 00:25:45
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优化传输。
https://stackoverflow.com/questions/64633811
复制相似问题