【问题标题】:How can I mix two streams of Video in C#?如何在 C# 中混合两个视频流?
【发布时间】:2011-05-04 21:16:05
【问题描述】:

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

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

【问题讨论】:

    标签: c# video video-processing


    【解决方案1】:

    在 WPF 中很容易做到。

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

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

    【讨论】:

    • 我认为这是一个非常有趣的想法,因为这个问题看起来很简单。我要试一试,看看我还能用视频画笔做什么。
    【解决方案2】:

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

    【讨论】:

    • 我之前没听说过这个库,谢谢指出。如果我最终走上繁重的道路 - 我会检查一下。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-09-27
          • 2016-10-19
          • 1970-01-01
          • 2013-08-29
          • 1970-01-01
          • 2013-12-30
          • 2021-05-24
          • 2014-06-04
          相关资源
          最近更新 更多