如何解决将DirectShow与Direct2D一起使用
我有一个仅限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优化传输。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。