我有一个通过火线连接的高分辨率相机。SDK 让我可以将帧抓取到字节缓冲区中。例如:
unsigned char *buffer = new unsigned char[size];
GetFrameBuffer(cameraHandle, buffer);
由于 API 的性质,需要连续抓取帧 (20+ fps) 以显示实时视图。现在,我想在我的 WPF UI 中显示它。我可以想到几种方法,但我需要帮助确定选择哪种方法!
想法
- 通过互操作更新的属性
Source
不断更新Image元素。 HWND
在HwndHost中托管基于自定义的控件。当消息泵空闲时,图像将被更新。- 在 DirectShow 中编写一个源过滤器,使用某种计时逻辑连续读取缓冲区 - 从而可以使用MediaElement显示实时视图。
显然,我想最小化 CPU 负载。
问题归结为:
在 WPF 中,我如何使用原始 API显示来自火线连接的实时流GetFrameBuffer
?