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



我有一个通过火线连接的高分辨率摄像机。SDK允许我将帧捕获到字节缓冲区中。例如:

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

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

思想
  1. 通过互操作更新属性,持续更新Image元素的Source
  2. 在HwndHost中设置基于HWND的自定义控件。当消息泵空闲时,将更新图像。
  3. 在DirectShow中编写一个源过滤器,使用某种定时逻辑,连续读取缓冲区-使得使用MediaElement显示实时视图成为可能。

显然,我想要最小化CPU负载。

问题归结为:

在WPF中,如何使用GetFrameBuffer等原始api显示来自火线连接的实时流?

我认为最简单的方法是第一个。只需更新图像源。如果你只想显示它,你不需要directshow过滤器。但是如果你也想捕捉它,DirectShow过滤器是最好的方法!

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

相关内容

  • 没有找到相关文章

最新更新