在WPF中显示火线连接的实时流?

时间:2013-03-18 13:02:24

标签: wpf directshow video-capture firewire

我有一个通过火线连接的高分辨率相机。 SDK允许我将帧抓取到字节缓冲区中。 E.g:

unsigned char *buffer = new unsigned char[size];
GetFrameBuffer(cameraHandle, buffer);

由于API的性质,需要连续抓取帧(20 + fps)以显示实时视图。现在,我想在我的WPF UI中显示它。我可以想到几种方法,但我需要帮助确定选择哪种方法!

  1. 通过互操作更新的属性不断更新Image元素的Source
  2. HwndHost中托管基于HWND的自定义控件。当消息泵空闲时,图像将被更新。
  3. 在DirectShow中编写源过滤器,使用某种定时逻辑连续读取缓冲区 - 使用MediaElement显示实时视图。
  4. 显然,我想尽量减少CPU负载。

    问题归结为:

    在WPF中,如何使用GetFrameBuffer等基本API显示来自火线连接的实时流

1 个答案:

答案 0 :(得分:0)

我认为最简单的方法是第一种方式。只需更新图像源。如果您只想显示它,则不需要为此设置directshow过滤器。但如果您还想捕获它,DirectShow过滤器是最好的方法!

更新图像源是一项简单的任务。一个很好的例子就是Mjpeg decoder for .net。您只需要用自己的抓取器逻辑替换Mjpeg阅读器/解析器。