C++ 在合成输出中异步播放directshow流

C++ 在合成输出中异步播放directshow流,c++,directshow,win32gui,C++,Directshow,Win32gui,我是DirectShow的新手。我试图让DirectShow播放一组媒体文件,但不能同时播放 我尝试分配一个图形并使用RendeFile将每个文件添加到其中,但当我调用IMediaControl::Run时,它们都同时开始播放 我尝试过为每个文件分配一个图形和一个IMediaControl,然后在每个文件的不同时间调用Run。这样一来,溪流就可以独立发挥作用了 如何将流组合到输出窗口 是否可能有一个主曲面,其他流在该主曲面上渲染为矩形 由于流不在同一个图中,可以这样做吗 曲面或输出使用什么 多亏

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

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

我尝试过为每个文件分配一个图形和一个IMediaControl,然后在每个文件的不同时间调用Run。这样一来,溪流就可以独立发挥作用了

如何将流组合到输出窗口

是否可能有一个主曲面,其他流在该主曲面上渲染为矩形

由于流不在同一个图中,可以这样做吗

曲面或输出使用什么


多亏了所有过滤器都需要在一个图中同时更改状态,因此您确实需要为每个您认为要独立于其他文件播放的文件创建一个单独的图

如果要简单地并排播放文件,而不产生效果和重叠等,最简单的方法是使用单独的视频渲染器,并将其用作控件,在UI中正确定位它们

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