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

时间:2014-10-30 22:49:31

标签: c++ directshow win32gui

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

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

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

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

是否可以将其他流渲染为矩形的主曲面?

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

我对表面或输出使用什么?

由于

1 个答案:

答案 0 :(得分:0)

预计所有过滤器都会在图表中一起更改状态,因此您确实需要为您想要独立播放的每个文件单独生成图表。

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

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