【问题标题】:Windows Enhanced Video Renderer (EVR): Layer multiple 1080p Videos with transparency?Windows 增强型视频渲染器 (EVR):以透明方式分层多个 1080p 视频?
【发布时间】:2014-02-20 20:41:02
【问题描述】:
我正在寻找使用 C++ 和 DirectX 或 Opengl 在 Windows 上以透明方式分层多个 1080p 视频的方法。视频将在不同的时间点开始。理想情况下,视频可以与另一个渲染目标与其他游戏内容混合,因此生成的视频纹理应该包含透明像素。
这可以通过 EVR 和硬件加速来完成吗?支持哪些编解码器? http://en.wikipedia.org/wiki/Media_Foundation 提到透明度,但没有回答我的问题。听起来好像所有视频都必须同时开始,并且生成的视频纹理没有透明度。
TIA
克里斯托弗
【问题讨论】:
标签:
c++
windows
video
directx
transparency
【解决方案1】:
这是我 03/14 左右的研究结果,对此问题没有明确的答案。
我没有尝试媒体基金会中提到的可能性,因为听起来结果好像没有透明度。
我能够使用第二个灰度视频来掩盖着色器内的 rgb 视频。这可以通过单独的视频流来完成,但需要同步。此外,可以对具有并排两帧的视频进行编码,但许多硬件加速视频编解码器不允许这样做,WMF 是个例外。性能不是很好,但我可以同时播放 3 个 1080p30 视频。
顺便说一句,令我惊讶的是,Flash 能够同时播放 5+ 1080p30 的透明视频。 flash 视频编解码器允许使用 alpha 值,但我只在 flash 内部管理以使用它们。