将directshow流异步播放到合成输出中

Playing directshow streams asynchronously into composited output

本文关键字:输出 播放 directshow 异步      更新时间:2023-10-16

我是DirectShow新手。我正在尝试让DirectShow播放一组媒体文件,但不能同时播放。

我尝试分配一个图,并使用RendeFile将每个文件添加到其中,但当我调用IMediaControl::Run时,它们都会同时开始播放。

我试着为每个文件分配一个图和一个IMediaControl,然后在每个文件的不同时间调用Run。这是有效的,流独立播放。

如何将流组合到输出窗口?

有没有可能有一个主表面,其他流在其上渲染成矩形?

既然流不在同一个图中,那能做到吗?

曲面或输出使用什么?

感谢

所有过滤器都应该一起更改图中的状态,因此您确实需要为每个文件提供一个单独的图,以便独立于其他文件进行回放。

如果你想简单地并排播放文件,没有效果和重叠等,最简单的选择是使用单独的视频渲染器,并将它们用作控件,在你的UI中正确定位。

如果你想要更复杂的东西,那么有两种方法可供选择:你可以使用Sample Grabber或类似的过滤器从DirectShow过滤器图中取出解压缩的视频/音频,然后你自己负责用其他API呈现数据。或者,您实现了一个自定义分配器/呈现器(也称为视频渲染器的无渲染操作模式),并精细地控制视频的输出,这特别允许将帧放入纹理或屏幕外表面,将呈现本身留给您。