前言
rtsp视频流在网页上播放 需要借助本地node服务进行转码才可以进行播放,但问题是在一台崭新的或者用户的电脑上不可能去一个一个安装和配置nodejs和ffmpeg等这些依赖。最便捷的方式就是让用户去执行一个exe的文件 一键运行就好了
解决方式和思路
1.使用pkg打包, 这个命令可以将node和所需要的依赖打包成一个exe文件,并且可以在没有安装node的电脑上去运行 所以将node先打包成一个exe文件
2.ffmpeg 找到ffmpeg的二进制(exe)文件 并且指定执行ffmpeg.exe的文件,
// 获取当前执行文件所在的目录,并构建 FFmpeg 的路径
const ffmpegPath = path.join(path.dirname(process.execPath), "ffmpeg.exe");
因为videoTool.exe文件的运行依赖ffmpeg.exe文件 ,那么代码中去寻找这个路径是需要放在一个文件目录下 以相对路径的方式去寻找.
现在所有问题都解决了,那么只差一个如何让这个服务一直在运行 并且下次进入页面后还是可以正常播放的
我之前想使用pm2管理工具来进行进程管理,但是在结合pkg打包的时候出现了兼容问题 解决不了
后来我换成了以下面这种方式去运动 inno setup +nssm +pkg三种结合的方式去解决
- Windows 服务的概念
Windows 服务是一个长时间运行的可执行程序,它可以在 Windows 操作系统启动时自动启动,并在后台运行而不需要用户登录。Windows 服务通常用于执行后台任务,例如服务器进程、监控应用、后台计算等。
服务的特点:
自动启动:服务可以配置为在操作系统启动时自动运行。
无用户界面:服务在后台运行,不会直接显示在用户界面上。
持续运行:即使用户注销或关闭会话,服务仍然可以继续运行。
管理接口:Windows 提供了服务管理器、命令行工具(如 sc、PowerShell)、任务管理器等来管理服务的状态(启动、停止、重启等)。
- NSSM 工具的作用
NSSM(Non-Sucking Service Manager) 是一个轻量级的工具,用于将任何可执行文件(如 exe、批处理脚本等)转换为 Windows 服务。NSSM 为应用程序提供以下功能:
将应用程序注册为服务:NSSM 能够将任意可执行文件注册为 Windows 服务,这样它可以按照服务的方式运行。
配置服务行为:NSSM 允许你设置服务的启动参数、工作目录、依赖项等。
管理服务的生命周期:NSSM 通过服务管理器、命令行等接口管理服务的启动和停止,并能在服务崩溃时自动重启服务。
- Inno Setup 的角色
Inno Setup 是一个强大的安装程序创建工具,用于打包应用程序并创建自定义安装程序。在这个场景中,Inno Setup 的主要作用是:
打包应用程序和依赖项:Inno Setup 将 VideoTool.exe、ffmpeg.exe、nssm.exe 等文件打包在一起,并安装到用户的计算机上。
自动化服务注册:通过 Inno Setup 的脚本配置,安装程序会自动调用 NSSM 来注册并启动服务,使得 VideoTool.exe 在安装完成后立即作为服务运行。
- 实现过程的原理
以下是整个实现过程的原理分解:
文件打包和复制:
Inno Setup 将所有必需的文件(VideoTool.exe、ffmpeg.exe、nssm.exe)打包在一个安装程序中。
安装程序在运行时,会将这些文件复制到用户计算机的指定目录中(例如 C:\Program Files\MyVideoTool\)。
注册服务:
安装完成后,Inno Setup 调用 nssm.exe,并传递 install 命令,指定 VideoTool.exe 为服务的主程序。nssm 工具会:
在 Windows 服务控制管理器中注册一个新的服务(如 MyVideoToolService)。
设置服务的工作目录为安装目录,确保服务可以找到其依赖文件(如 ffmpeg.exe)。
此外,还会自动启动该服务,使 VideoTool.exe 在后台以服务的方式运行。
服务运行:
VideoTool.exe 作为服务在后台运行,并可以与 ffmpeg.exe 交互,处理指定的任务。
因为 VideoTool.exe 是通过 NSSM 注册为服务的,所以即使用户注销或关闭用户会话,服务仍然保持运行。
服务管理:
用户可以通过 Windows 服务管理器、命令行工具(如 sc 和 PowerShell)来管理这个服务。
通过卸载程序,Inno Setup 可以自动调用 nssm.exe 来停止并移除服务,清理安装的文件。
- 优势
自动化:用户只需运行安装程序,服务的注册和启动就会自动完成,不需要手动配置。
后台运行:VideoTool.exe 作为服务在后台持续运行,提供长期稳定的操作。
系统集成:通过 NSSM 注册的服务与 Windows 系统服务无缝集成,可以通过系统工具进行管理。 - 适用场景
长时间运行的后台任务:需要持续运行的任务(如服务器、监控工具等)。
系统启动自动运行:需要在系统启动时自动运行的应用程序。
无用户交互的后台进程:需要在后台无界面运行的应用程序。
NSSM
将可执行文件作为服务运行:管理服务的启动和停止 配置服务行为:
下载NSSM
inno setup
下载之后还需要一个安装向导的中文版 让用户更便捷的使用
中文安装向导包
存在你安装目录下的language下
然后进行打包使用
-
1
单击file>new 新创建一个打包
image.png -
2
image.png -
3
image.png -
4
image.png