2

过去,我使用 Managed Direct X 和 DirectShow.Net 将视频播放到简单网格上的纹理。然后,我使用相同的技术将多个视频源组合成一个纹理,使用通过纹理暴露的各种功能将这些流混合在一起。这是 2 年前的一个非常有趣的实验,非常适合 Managed Dirext X 仍在开发和支持(不再支持)的目的,并且与 DirectShow.Net 类似 - 它似乎没有更新自 2007 年 7 月起。

我希望再次涉足这个领域,并想知道如何在 C# 中做到这一点,而不使用折旧或报废的 API,以及如何最好地处理它。

4

5 回答 5

3

在 WPF 中很容易做到。

使用两个MediaElement控件,一个在另一个之上,并使上面的一个 50% 透明。

但是,我认为无法将其保存到新视频中

于 2009-08-26T06:04:50.290 回答
3

您可以使用与MDX和DirectShow几乎相同的SlimDX开源库,并且在win7.0中也支持vista

于 2009-08-26T07:25:01.907 回答
2

我今天遇到的另一个选择可能是 AForge.net - 它包含一个用于播放视频的命名空间。http://www.aforgenet.com/framework/samples/video.html并在 LGPL 许可下发布。

于 2009-08-26T20:50:47.223 回答
2

另一个选项是 OpenTK;用于混合视频流提供的帧: http ://www.opentk.com/doc/graphics

于 2009-08-29T22:55:34.257 回答
1

我在 2003 年左右就这样做了。我不得不使用不安全的代码,换句话说,将两个视频流中复制的每个图像帧转换为 RGB 格式并平均每个像素值然后转换回原始格式的指针。如果您不使用不安全的代码,性能损失会非常大。我的理解是,在处理视频流时,DirectShow 通过自动对齐许多编解码器来发挥作用。同时,这些图像流必须是线程安全的并正确同步,这意味着很多开销。但是更了解的人应该参与其中。

于 2011-05-04T13:16:05.410 回答