【发布时间】:2011-04-15 07:03:41
【问题描述】:
C# 能否用于开发一个实时应用程序,该应用程序涉及连续从网络摄像头获取输入并处理输入?
【问题讨论】:
-
我不确定您的应用是否属于“实时”类别,因为在您的应用停止时缓冲视频并不重要。唯一重要的问题是处理缓冲区的速度要快于它们填满的速度。
-
Windows 并非旨在成为“实时”操作系统。考虑无法实时处理的后果:在您的情况下,故障模式是您错过了一帧视频,可能没什么大不了的。一个实时系统,例如,控制工厂中机器人手臂的位置,或在高速铁路线上移动轨道开关,如果操作超出其时间预算或控制切换到另一个线程,则会对人类生命安全产生非常真实的影响一阵子。我不认为你真的需要 realtime;我认为你只需要 fast。
-
@Eric:软实时系统和硬实时系统之间是有区别的。从网络摄像头获取输入对我来说似乎是一个软实时场景,Windows 应该没问题。
-
@Nemanja:可以使用 Windows 应用程序(但不确定基于 CLR 的应用程序)进行一些硬实时测量。我开发了一个在 Windows 上运行的 C++ 应用程序,它能够将实时确定性保持在大约 2 毫秒——尽管我们只指望它达到 10 毫秒。我们从一个单独的 RT 关键线程执行所有 RT,该线程被锁定在内存中并使用 Windows 多媒体计时器触发。通过运行 Venturcom RTX 之类的产品,您可以在 WIndows 机器上获得完整的硬实时(亚毫秒)。