C# 摄像头服务,带 FTP 和安装程序






4.68/5 (25投票s)
2003年3月27日
2分钟阅读

393316

3212
使用 FTP 上传的 C# 网络摄像头 Windows 服务,包含 Windows 服务安装程序和文件轮换。
引言
我厌倦了寻找一个可以将摄像头快照写入磁盘的应用程序,该应用程序是免费的,没有广告软件,并且图像上没有广告。我找到了一位将 DirectX 库封装在 C# 中的人 - 真是太棒了!这里是他的文章链接。无论如何,他有一个完整的库叫做 DShowNET,我调用了它,创建了一个 Windows 服务,当我的 PC 启动时始终运行。我添加了一个完整的 FTP 库,该库扩展了 Jaimon Mathew 的工作。
概述
此软件包包含一个项目和一个 DLL (DShowNET)。它包含以下文件:
- WebCamService.cs
- FtpClient.cs
- Capture.cs
- WebCamInstaller.cs
现在,使用 DShowNET 库有点棘手,仅仅从网络摄像头工具中获取一张照片就需要大约 400 行代码。我扩展了 DShowNET 提供的 Sample Grabber,并添加了重置事件,以便可以同步获取照片。
最糟糕的问题是使其稳定,但这个程序已经在我的工作站上运行了 20 多天,没有重启。稳定性最重要的代码在 CloseInterfaces
方法中 - 请注意大量的 try/catch - 必须清理所有内容,否则会观察到奇怪的错误(包括蓝屏)。
我扩展了 FTP 库,以便将其用作功能齐全的 FTP 客户端。我已将其添加到此项目中,以便将文件上传到服务器。
要求
- DirectX 8.1
- .NET Framework
- Visual Studio .NET(如果您计划编辑它的话)
- 支持 Windows 服务的 Windows 操作系统 (2K, XP)
- 任何 DirectX 支持的视频设备(调谐器、采集器、摄像头等...)
- 您花费的 5 分钟时间
安装
安装程序组件用于使用以下命令安装服务:
C:\>installutil.exe D:\projects\webcam\webcamservice\bin\debug\webcamservice.exe
您还需要编辑配置文件以反映您的需求
<add key="path" value="D:\Projects\WebCamService\out\WebCam.jpg"/>
<add key="CaptureCycleSeconds" value="10"/>
<add key="KeepOldImageCount" value="20"/>
<add key="FtpServer" value="???"/>
<add key="FtpUserName" value="???"/>
<add key="FtpPassword" value="???"/>
path
是您希望上传图片到的位置。CaptureCycleSeconds
是在拍摄另一张照片之前等待的时间(加上捕获时间,为 11+ 秒)KeepOldImageCount
是保留最后 n 张拍摄的照片
其余的都相当容易理解。
现在您可以使用以下命令启动和停止服务:
net start WebCamService
net stop WebCamService
该服务将在后台运行,并在您的机器启动时启动,而不是在您登录时启动。