前言
rtsp視頻流在網(wǎng)頁上播放 需要借助本地node服務進行轉(zhuǎn)碼才可以進行播放,但問題是在一臺嶄新的或者用戶的電腦上不可能去一個一個安裝和配置nodejs和ffmpeg等這些依賴。最便捷的方式就是讓用戶去執(zhí)行一個exe的文件 一鍵運行就好了
解決方式和思路
1.使用pkg打包, 這個命令可以將node和所需要的依賴打包成一個exe文件,并且可以在沒有安裝node的電腦上去運行 所以將node先打包成一個exe文件
2.ffmpeg 找到ffmpeg的二進制(exe)文件 并且指定執(zhí)行ffmpeg.exe的文件,
// 獲取當前執(zhí)行文件所在的目錄,并構(gòu)建 FFmpeg 的路徑
const ffmpegPath = path.join(path.dirname(process.execPath), "ffmpeg.exe");
因為videoTool.exe文件的運行依賴ffmpeg.exe文件 ,那么代碼中去尋找這個路徑是需要放在一個文件目錄下 以相對路徑的方式去尋找.
現(xiàn)在所有問題都解決了,那么只差一個如何讓這個服務一直在運行 并且下次進入頁面后還是可以正常播放的
我之前想使用pm2管理工具來進行進程管理,但是在結(jié)合pkg打包的時候出現(xiàn)了兼容問題 解決不了
后來我換成了以下面這種方式去運動 inno setup +nssm +pkg三種結(jié)合的方式去解決
- Windows 服務的概念
Windows 服務是一個長時間運行的可執(zhí)行程序,它可以在 Windows 操作系統(tǒng)啟動時自動啟動,并在后臺運行而不需要用戶登錄。Windows 服務通常用于執(zhí)行后臺任務,例如服務器進程、監(jiān)控應用、后臺計算等。
服務的特點:
自動啟動:服務可以配置為在操作系統(tǒng)啟動時自動運行。
無用戶界面:服務在后臺運行,不會直接顯示在用戶界面上。
持續(xù)運行:即使用戶注銷或關閉會話,服務仍然可以繼續(xù)運行。
管理接口:Windows 提供了服務管理器、命令行工具(如 sc、PowerShell)、任務管理器等來管理服務的狀態(tài)(啟動、停止、重啟等)。
- NSSM 工具的作用
NSSM(Non-Sucking Service Manager) 是一個輕量級的工具,用于將任何可執(zhí)行文件(如 exe、批處理腳本等)轉(zhuǎn)換為 Windows 服務。NSSM 為應用程序提供以下功能:
將應用程序注冊為服務:NSSM 能夠?qū)⑷我饪蓤?zhí)行文件注冊為 Windows 服務,這樣它可以按照服務的方式運行。
配置服務行為:NSSM 允許你設置服務的啟動參數(shù)、工作目錄、依賴項等。
管理服務的生命周期:NSSM 通過服務管理器、命令行等接口管理服務的啟動和停止,并能在服務崩潰時自動重啟服務。
- Inno Setup 的角色
Inno Setup 是一個強大的安裝程序創(chuàng)建工具,用于打包應用程序并創(chuàng)建自定義安裝程序。在這個場景中,Inno Setup 的主要作用是:
打包應用程序和依賴項:Inno Setup 將 VideoTool.exe、ffmpeg.exe、nssm.exe 等文件打包在一起,并安裝到用戶的計算機上。
自動化服務注冊:通過 Inno Setup 的腳本配置,安裝程序會自動調(diào)用 NSSM 來注冊并啟動服務,使得 VideoTool.exe 在安裝完成后立即作為服務運行。
- 實現(xiàn)過程的原理
以下是整個實現(xiàn)過程的原理分解:
文件打包和復制:
Inno Setup 將所有必需的文件(VideoTool.exe、ffmpeg.exe、nssm.exe)打包在一個安裝程序中。
安裝程序在運行時,會將這些文件復制到用戶計算機的指定目錄中(例如 C:\Program Files\MyVideoTool\)。
注冊服務:
安裝完成后,Inno Setup 調(diào)用 nssm.exe,并傳遞 install 命令,指定 VideoTool.exe 為服務的主程序。nssm 工具會:
在 Windows 服務控制管理器中注冊一個新的服務(如 MyVideoToolService)。
設置服務的工作目錄為安裝目錄,確保服務可以找到其依賴文件(如 ffmpeg.exe)。
此外,還會自動啟動該服務,使 VideoTool.exe 在后臺以服務的方式運行。
服務運行:
VideoTool.exe 作為服務在后臺運行,并可以與 ffmpeg.exe 交互,處理指定的任務。
因為 VideoTool.exe 是通過 NSSM 注冊為服務的,所以即使用戶注銷或關閉用戶會話,服務仍然保持運行。
服務管理:
用戶可以通過 Windows 服務管理器、命令行工具(如 sc 和 PowerShell)來管理這個服務。
通過卸載程序,Inno Setup 可以自動調(diào)用 nssm.exe 來停止并移除服務,清理安裝的文件。
- 優(yōu)勢
自動化:用戶只需運行安裝程序,服務的注冊和啟動就會自動完成,不需要手動配置。
后臺運行:VideoTool.exe 作為服務在后臺持續(xù)運行,提供長期穩(wěn)定的操作。
系統(tǒng)集成:通過 NSSM 注冊的服務與 Windows 系統(tǒng)服務無縫集成,可以通過系統(tǒng)工具進行管理。 - 適用場景
長時間運行的后臺任務:需要持續(xù)運行的任務(如服務器、監(jiān)控工具等)。
系統(tǒng)啟動自動運行:需要在系統(tǒng)啟動時自動運行的應用程序。
無用戶交互的后臺進程:需要在后臺無界面運行的應用程序。
NSSM
將可執(zhí)行文件作為服務運行:管理服務的啟動和停止 配置服務行為:
下載NSSM
inno setup
下載之后還需要一個安裝向?qū)У闹形陌?讓用戶更便捷的使用
中文安裝向?qū)О?/a>

存在你安裝目錄下的language下

然后進行打包使用
-
1
單擊file>new 新創(chuàng)建一個打包
image.png -
2
image.png -
3
image.png -
4
image.png



