【问题标题】:Show Videosignal in .Net WPF/DirectX在 .Net WPF/DirectX 中显示视频信号
【发布时间】:2010-12-03 08:41:07
【问题描述】:

我有一个视频信号,它为我提供了一个带有 YCbCR 信号的缓冲区。我可以通过做一些数学将其转换为 RGB,但我不知道如何在 .Net WPF 中显示视频。我也尝试使用 SlimDX 并将流渲染为精灵,但这只是一个想法,我也不知道如何开始。

感谢您的帮助, 梅尔杜尔

【问题讨论】:

    标签: c# wpf video directx capture


    【解决方案1】:

    如果您可以将其转换为 RGB,那么您手中就有位图。您可以锁定位图并设置它的数据。新建Bitmap时,可以设置像素格式(24bpp、32bpp),所以从视频帧创建Bitmap应该没有问题。

    每次获得新帧时,您只需在 DirectX 中更新纹理即可。 DirectX 中的纹理有多种格式,其中一些与位图格式兼容,您甚至可以使用位图创建新的纹理。

    首先找到一些如何在 DirectX(SlimDX、ManagedDirectX...)中渲染纹理的示例,然后在每次新帧进入时更新纹理。如果您不想为纹理锁定和更新而烦恼,您可以创建新的每次新帧出现时纹理,使用此构造函数

    public Texture(Device, Bitmap, Usage, Pool); 
    

    即使你不想打扰 DirectX,你也可以在 WPF 中直接渲染到 Canvas 中

    class MyCanvas : Canvas {
    protected override void OnRender (DrawingContext dc) {
          BitmapImage img = ...;
          dc.DrawImage (img, new Rect (0, 0, img.PixelWidth, img.PixelHeight));
       }
    }
    

    要从 Bitmap 获取 BitmapImage,请看这里link text

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      相关资源
      最近更新 更多