我在 Linux 中有一个网络摄像头应用程序。启动时,它会初始化网络摄像头,图像会在 startx 内的新窗口中实时显示。还会执行一些计算,结果将显示在窗口中。窗口上还有一些按钮供用户调整设置。
现在我希望该程序在每次 Linux 启动时自动开始运行(从而启动网络摄像头)。问题是,如果我将该程序放入 /etc/rc.local 之类的脚本中并作为后台运行,则由于 X 显示器不存在,该程序无法运行。此外,我希望允许用户按需查看实时图像和处理结果。现在我想出了一些可能的解决方案:
(1)通过某种方式(比如VNCserver)启动X server但不在屏幕上显示,然后将显示重定向到服务器上并运行程序。当用户想看到实时图像和处理结果时,他们启动VNC客户端进行查看。
(2) 使用某种方法将显示重定向到虚拟 X 服务器,以便程序可以无错误地启动。但随后需要某种方法让用户调用程序,继承执行过程的信息,以便根据需要查看实时图像和处理结果。
(3)修改程序,如果显示器不支持X windows,则跳过显示部分。与(2)相同,需要有某种方法供用户调用程序,继承执行过程的信息,以便根据需要查看实时图像和处理结果。
(4) 修改程序并将其拆分成两个程序,使得自动运行的程序仅处理网络摄像头初始化、获取图像数据并执行计算,而另一个程序获取图像数据和处理结果(例如,通过IPC共享内存),并且当用户调用时,它在X窗口中显示结果。
虽然我相信 (1) 和 (4) 是可行的,但 (2) 和 (3) 呢?在所有可能的解决方案中,哪一个是最好的?
答案1
根据以下情况有多种解决方案可供选择网络摄像头使用方法。这里有几个可以录制照片/视频的工具。使用脚本,您可以实现任何您想要的功能。以下是网站上列出的可能满足您需求的工具列表。
- 飘带
- 凸轮
- 运动
- 摄像头
- 萨内