
简介EasyDSS-windows-2.2.7-1912281435.zip 面向需要在 Windows 环境快速部署流媒体视频管理系统的开发者与运维人员提供安装程序及配套运行文件可用于视频上传、转码、直播发布、回放、嵌入分享与多屏播放等场景的本地搭建和功能验证。压缩包共207个文件约55.93MB包含js前端脚本、lua业务脚本、dll动态库、css/html界面资源及exe可执行程序等兼顾服务端运行、管理后台展示与组件依赖便于按目录了解系统组成。目前已有708人学习或下载。对于想研究流媒体服务落地、接口集成或搭建演示环境的读者可从中获得可运行的Windows版本、较完整的依赖库与前端资源并借助conf、pem、ini等配置与证书文件熟悉部署结构和参数调整结合API/SDK扩展思路还可用于企业视频管理与在线教学等项目的原型验证。1. EasyDSS Windows 2.2.7 装之前先接受它并非一个典型安装包不止一次见过有人拿到 EasyDSS-windows-2.2.7-1912281435.zip解压、双击 exe、窗口一闪就没了然后卡在这里两三天。这个安装包 EasyDSS 视频管理的 Windows 版本属于绿色发布形态没有安装向导、没有“下一步”、没有安装目录可选配置全摊在文件夹里改错了也没人拦你。省事的地方在这容易出错的地方也在这。它适合要在内网起一套直播、点播、录像回放的人——推 RTMP 进来、浏览器看 HLS/FLV、录像按天落盘。装不好它不会报错只会“页面打得开但没画面”“录像目录永远空的”。这一篇按我实际装这套版本的顺序写先定系统和目录再改配置再拉起进程最后用三条命令确认它真的活了。2. 装前准备Windows 版本、运行库和目录怎么定绿色包最容易被跳过的就是准备阶段。很多人觉得“解压就能跑”于是直接扔到桌面上双击出了问题再回头查成本比一开始花二十分钟做规划高得多。这一章的三件事——系统版本、端口、包内结构——必须在解压之前定下来。2.1 系统与硬件先看这张对照表2.2.7 这个版本是 2019 年底的构建配套的是当时的运行库和 ffmpeg 版本装在新系统上要留意兼容性。下表是我给这套包定的底线低于“最低”那一列的机器不要硬上转码会直接把 CPU 占满。项目最低推荐说明操作系统Windows Server 2012 R2 x64Windows Server 2016 / 2019 x64家用版也能跑但并发连接数和计划任务限制多位数64 位64 位32 位系统不要尝试包内组件是 x64CPU4 核8 核以上每路转码大约吃 12 核纯转发不吃内存8 GB16 GB录像索引和并发拉流会吃内存系统盘60 GB 可用—只放程序录像必须另挂数据盘数据盘—按“单路码率 × 路数 × 天数”估算4 Mbps 单路一天约 40 GB运行库VC 2015-2019 x64同上缺它 exe 直接闪退日志都不给你留几个取舍说明。第一不要用 Windows 7 或者精简版系统这类系统常被删掉了部分网络组件和证书链服务能起但推流握手阶段会莫名失败排查起来极其费时。第二程序目录和数据目录必须分开程序放 D 盘一个固定路径录像放另一块盘或者另一个分区否则录像写满会把程序盘一起拖死配置都改不动。第三内存不要按“能开机就行”配视频管理这类服务的内存占用是随并发拉流数线性涨的8 GB 在十路以上就会开始频繁换页。运行库的检查方式很简单在命令行里跑一下# 查看系统已安装的 VC 运行库按名称过滤 wmic product where name like %%Visual C 2015%% get name,versionwmic在部分新系统上已被弃用替代写法是 PowerShell 的Get-ItemProperty查注册表但对 2012 R2 到 2019 这一代服务器wmic仍然是最快的。输出为空或者只有 x86 版本就说明缺 x64 运行库去装一个 vc_redist.x64.exe 再继续。这一步别省闪退问题里有相当一部分是它引起的。2.2 端口先查清楚别等起了服务才发现冲突EasyDSS 这类流媒体服务不是一个端口而是一组端口同时工作Web 管理端口、RTMP 推流端口、HTTP-FLV 播放端口有些场景还要 RTSP。这套包默认大概率是 10080 / 1935 / 8081 这一组但以你解压后 conf 目录里的实际值为准我下面给的命令是拿这三个当例子。先查占用一条命令看三个端口# Windows 下同时查三个端口的监听状态和占用进程 netstat -ano | findstr :10080 :1935 :8081输出里每一行末尾那个数字是 PID拿去tasklist | findstr PID就能看到是哪个程序占着。netstat -ano的-a是显示所有连接和监听-n是以数字形式显示地址和端口不解析域名快很多-o是附带进程 PID。findstr后面用空格分隔多个关键词表示“或”的关系一次查完三个端口。在 PowerShell 里更直观能直接看到进程名# 查端口占用直接带出进程名 Get-NetTCPConnection -LocalPort 10080,1935,8081 -ErrorAction SilentlyContinue | Select-Object LocalAddress,LocalPort,State,OwningProcess, {nProcess;e{(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).ProcessName}}-ErrorAction SilentlyContinue是必须的端口没被占用时 cmdlet 会抛错不加这一句屏幕上全是红字。最后那个哈希表是给结果加一列进程名省得再去tasklist对 PID。常见的冲突源有两个IIS 占了 8081 之类的端口或者机器上已经跑着另一套流媒体服务。1935 被占的概率其实不高10080 和 8081 反而经常出问题因为很多管理后台喜欢用 80 系列。真撞上了不要急着停别人的服务先在 conf 里把端口改掉改端口比停服务安全得多。2.3 解压前先确认包里有什么、缺什么拿到 zip 之后先别急着解压到最终位置解压到一个临时目录看一眼结构。这类绿色包常见的内容大致是这几类主程序 exe、conf 配置目录、logs 日志目录、www 或者 web 前端静态资源目录、ffmpeg 目录转码和拉流都靠它、data 或 db 目录存配置和索引。不同构建之间目录名会有出入但功能划分基本一致。看结构用 PowerShell 就够了不用装解压软件# 列出 zip 内的一级目录和文件不实际解压 Add-Type -AssemblyName System.IO.Compression.FileSystem $zip [System.IO.Compression.ZipFile]::OpenRead(D:\download\EasyDSS-windows-2.2.7-1912281435.zip) $zip.Entries | ForEach-Object { ($_.FullName -split /)[0] } | Sort-Object -Unique $zip.Dispose()OpenRead是只读打开不会改动原包Entries拿到全部条目后面的-split /只取路径第一段再用Sort-Object -Unique去重就能看到顶层有几个文件夹。最后一定要Dispose()不然文件句柄不释放后面解压会提示文件被占用。同时确认三件事包是不是完整下载的对比一下文件大小或者用Get-FileHash算 MD5 和发布方给的值对一下、包里有没有 ffmpeg 目录、conf 目录里到底有哪几个文件。少了 ffmpeg 的服务照样能起页面也正常但一开转码就失败日志里只有一行找不到可执行文件很容易被当成“软件 bug”。还有一件事是杀毒软件。Windows Defender 对绿色包里的 nginx.exe、ffmpeg.exe 这类可执行文件相当敏感实测中出现过解压完 dll 少一个的情况——不是解压失败是被实时防护直接隔离了。解压前把目标目录加进排除项比事后去隔离区恢复省事。# 把程序目录加入 Defender 排除项需管理员权限 Add-MpPreference -ExclusionPath D:\EasyDSS, D:\EasyDSSData-ExclusionPath接受多个路径用逗号分隔。程序目录和录像目录都要加录像目录不加会有性能损耗——每写一个文件扫一遍几十路并发录像时磁盘 I/O 会明显变差。3. 从 zip 到服务跑起来解压、改 conf、拉进程准备工作做完正式动手。这一章的顺序不能颠倒先解压到最终路径再授权再改配置最后才启动。很多人习惯先双击试一下试完发现问题再回头改路径结果配置里的绝对路径全对不上等于重来一遍。3.1 解压路径与权限别放进 Program Files目标路径有三条硬性要求纯英文、无空格、不在一级系统目录下。C:\Program Files\EasyDSS这种路径看着规范实际上会踩两个坑一是路径里有空格某些老版本组件在拼命令行时不做转义直接把参数截断二是 UAC 会拦写入服务账户对这个目录默认只有读权限录像和日志写不进去。我一般用D:\EasyDSS作为程序目录、D:\EasyDSSData作为数据目录两个分开。解压# 解压到临时目录再整体移动到目标路径避免解压中途失败留下半成品 Expand-Archive -Path D:\download\EasyDSS-windows-2.2.7-1912281435.zip -DestinationPath D:\tmp_easydss -Force Move-Item -Path D:\tmp_easydss\* -Destination D:\EasyDSS -Force-Force在Expand-Archive里表示覆盖同名文件在Move-Item里表示覆盖目标。先解压到临时目录再整体移动是为了防止解压一半断电或者磁盘满留下一个残缺目录却以为是完整的。反引号是 PowerShell 的续行符后面不能有空格这个细节坑过不少人。接下来授权。服务要用哪个账户跑就给哪个账户对这个目录的修改权限。用NETWORK SERVICE是最省事的它是内置账户不用管密码过期# 给内置账户授程序目录的读写权限(OI)(CI) 表示子对象继承 icacls D:\EasyDSS /grant NETWORK SERVICE:(OI)(CI)M /T icacls D:\EasyDSSData /grant NETWORK SERVICE:(OI)(CI)M /TM是 Modify修改够用了不用给F完全控制。(OI)是对象继承(CI)是容器继承两个一起加才能让新建的子目录和文件自动继承权限不加的话录像按天新建的日期目录会是拒绝访问。/T是递归应用到所有已存在的子项。提示如果打算用独立服务账户跑账户必须先加进“作为服务登录”的权限否则注册服务时会报“登录失败”。这一步在本地安全策略里改或者用secpol.msc找。3.2 逐项改 conf端口、路径、账号配置是这类绿色包最需要人工干预的部分。conf 目录下的文件名各版本有差异可能是 ini、也可能是 json下面用 ini 结构举例键名以你包内实际文件为准不要照抄。改之前先把原文件复制一份easyDss.ini.bak这是唯一能快速恢复的备份。[server] ; 绑定地址0.0.0.0 表示监听所有网卡只在内网用可以改成具体网卡 IP bind_ip 0.0.0.0 ; Web 管理端口防火墙要同步放行 http_port 10080 ; RTMP 推流端口 rtmp_port 1935 ; HTTP-FLV / HLS 播放端口 httpflv_port 8081 [storage] ; 录像根目录必须是绝对路径正斜杠反斜杠都行但不要混用 record_path D:/EasyDSSData/record ; 录像保留天数超过的由清理任务删除 record_days 15 ; 磁盘剩余空间低于这个值GB停止录像防止写满系统 disk_min_free_gb 50 [media] ; ffmpeg 路径相对路径容易出错直接用绝对路径 ffmpeg_path D:/EasyDSS/ffmpeg/ffmpeg.exe ; 是否开启转码纯转发可以关掉省 CPU transcode on video_codec libx264 audio_codec aac参数取舍说几个关键点。bind_ip写成0.0.0.0是最省事的但如果你这台机器有多张网卡一张内网一张对外建议绑定到具体的一张避免管理后台意外暴露。record_days不要拍脑袋写 90先按“单路码率 × 路数 × 86400 秒 ÷ 8”估一下一天多少 GB再乘天数看数据盘够不够容量不够就缩短天数或者降低码率靠清理任务硬撑只会让清理和写入互相抢 I/O。disk_min_free_gb这个参数很多人不设结果数据盘写满之后整个服务卡死连 Web 后台都打不开只能重启。设一个 50 GB 的保底低于这个值就停止录像虽然丢录像但服务活着运维还有时间去扩盘。transcode要不要开取决于前端播放器。现在浏览器对 H.264 AAC 的支持最稳如果推上来的是 H.265 或者 G.711 音频不开转码就只能黑屏。开了转码 CPU 占用会明显上去所以纯 H.264 源 纯转发场景关掉它。3.3 前台启动看日志确认正常再注册服务这是我最想强调的一步第一次启动一定要在命令行前台跑不要双击也不要一上来就注册成服务。前台跑的时候崩溃会直接把错误打在屏幕上双击的话窗口一闪就没了什么线索都没有。# 切到程序目录前台启动观察输出 cd /d D:\EasyDSS EasyDSS.exe -c conf\easyDss.ini-c指定配置文件路径如果程序支持默认路径也可以省略。注意这是在 cmd 里跑路径分隔符用反斜杠在 PowerShell 里跑要把路径加上.\前缀否则它不认当前目录。前台跑起来后不要关窗口另开一个终端看日志# 实时跟踪日志最后 50 行CtrlC 退出 Get-Content -Path D:\EasyDSS\logs\easyDss.log -Tail 50 -Wait-Tail 50是先显示最后 50 行历史部分-Wait是持续追加输出。这两个参数组合起来就是 Windows 上的tail -f排查启动问题时比翻文件快得多。日志里要确认的是三件事配置有没有被正确解析、各个端口有没有监听成功、有没有模型或资源加载失败的报错。确认没问题之后按CtrlC停掉前台进程再注册成服务。这类绿色包本身不带服务安装程序常见做法是用第三方包装器或者用系统自带的sc# 注册为系统服务start auto 表示开机自启 sc create EasyDSS binPath D:\EasyDSS\EasyDSS.exe -c D:\EasyDSS\conf\easyDss.ini start auto sc description EasyDSS EasyDSS 视频管理服务 2.2.7 sc start EasyDSS注意binPath和start后面那个等号必须跟一个空格写成binPath...会报“参数错误”这是sc命令最经典的坑。start auto是自动启动demand是手动启动。sc description只是加个描述方便以后辨认可加可不加。用sc注册的服务有一个限制它不能设置工作目录所以配置文件路径和 ffmpeg 路径都必须写绝对路径这就是前面配置里强调绝对路径的原因。4. 视频管理侧配置访问、存储和推拉流参数服务能起来只是第一步真正要跑通的是“能访问、能推、能看、能存”。这一章把这三块拆开说每一块都对应一组具体的配置项和验证方式。4.1 Web 访问与防火墙放行服务起在本机http://127.0.0.1:10080能打开不代表局域网里其他机器能打开。Windows 防火墙默认拦截入站端口不放行的话从别的机器访问就是“连接超时”很容易被误判为服务没起来。# 放行 Web、RTMP、HTTP-FLV 三个端口只对 TCP 生效 netsh advfirewall firewall add rule nameEasyDSS-Web-10080 dirin actionallow protocolTCP localport10080 netsh advfirewall firewall add rule nameEasyDSS-RTMP-1935 dirin actionallow protocolTCP localport1935 netsh advfirewall firewall add rule nameEasyDSS-FLV-8081 dirin actionallow protocolTCP localport8081dirin是入站方向actionallow是放行protocolTCP指定协议localport是本地端口。这里没写remoteip限制来源如果这套服务只给内网某个网段用加上remoteip192.168.1.0/24会安全一些改动也更可控。RTMP 用的是 TCP 1935这一点要确认清楚不要给 RTMP 也放 UDP也别指望 1935 的 UDP 能推流推不上去的。HTTP-FLV 和 HLS 都走 TCP。如果还开了 RTSP那才需要另外放行 554 的 TCP 和 UDP。放行完立刻从另一台机器验证不要只在本机 127.0.0.1 上点# 从客户端机器测试 Web 端口连通性 curl -I --connect-timeout 5 http://192.168.1.20:10080/-I是只取响应头HEAD 请求--connect-timeout 5是连接超时设 5 秒不加的话默认可能卡很久。返回 200 或者 302 都算通返回空且报“连接被拒绝”就是防火墙或者bind_ip的问题。4.2 录像存储路径、配额与清理录像出问题基本都是三个原因权限、磁盘、路径。权限前面用icacls给了这里说磁盘和路径。录像目录必须放在独立的数据盘上不要跟程序目录同一个分区。原因不在于“占空间”而在于写入模式录像持续顺序写写满时如果跟系统盘同分区Windows 会因为空间不足开始报各种莫名其妙的错误注册表写不进去、日志写不进去表现上完全看不出是磁盘问题。这种故障最难查因为现象和原因之间毫无逻辑关系。按天分目录是这类服务的默认行为目录名一般是日期。清理任务要跟保留天数对齐# 手动清理脚本示例删除超过 15 天的录像目录先在测试目录验证再上生产 $root D:\EasyDSSData\record $keepDays 15 $limit (Get-Date).AddDays(-$keepDays) Get-ChildItem -Path $root -Directory | Where-Object { $_.CreationTime -lt $limit } | ForEach-Object { Write-Host 删除: $($_.FullName) Remove-Item -Path $_.FullName -Recurse -Force }-Directory只取目录Where-Object按创建时间过滤Remove-Item -Recurse -Force递归删除。这个脚本上生产前一定要先去掉Remove-Item那一行跑一遍看它打算删什么——我第一次写的时候把-lt写成了-gt差点把当天正在写的录像目录删掉。清理任务用计划任务每天凌晨跑一次别跟录像写入高峰撞。配额方面除了配置里的disk_min_free_gb还建议给数据盘设置 NTFS 配额或者用磁盘配额策略做兜底。两个保险比一个好配置里那个是软限制随时能改磁盘配额是硬的真出问题能保护系统。4.3 推流与转码参数码率、帧率、GOP 怎么取舍这一节说怎么确认推拉流链路通。服务端的推流地址一般在控制台里能看到路径段以实际生成的那一串为准格式大致是rtmp://服务IP:1935/应用名/流名。不清楚就不要猜直接看控制台给的。测试推流用 ffmpeg把本地文件循环推上去# 循环推一个本地 mp4 到服务端-re 表示按实时速率推不加会瞬间推完 ffmpeg -re -stream_loop -1 -i .\test.mp4 -c copy -f flv rtmp://192.168.1.20:1935/live/test-re是按文件原始帧率读取模拟真实推流节奏不加这个参数 ffmpeg 会用最快速度读完文件服务端收到的是一堆突发数据。-stream_loop -1是无限循环方便长时间观察。-c copy是不重新编码直接复制音频和视频流这样推流端不占 CPU能把问题定位在服务端而不是编码端。-f flv是封装格式RTMP 推流必须是 flv。拉流验证用 ffmpeg 反向拉一次能拉下来就说明整条链路通# 从服务端拉流 10 秒再丢弃用于验证推上去的流能被正常分发 ffmpeg -i rtmp://192.168.1.20:1935/live/test -t 10 -f null --t 10是只处理 10 秒-f null -是输出到空设备不做实际写盘。屏幕上的frame计数在涨就说明拿到数据了如果卡在Opening rtmp://... for reading不动问题在服务端的分发或者端口没放行。转码参数上我的判断标准是分辨率不要超过源码率不要超过带宽的 70%GOP 跟帧率对齐25 fps 就设 50 或 75。GOP 太大会导致首帧显示慢播放器要等一个关键帧才能出画面用户看到的就是转圈十几秒GOP 太小码率浪费。音频统一转 AAC采样率 44100 或 48000源是什么就用什么强行改采样率对音质没好处只是多花 CPU。5. 排查装完之后起不来的五种情况下面五条是我在这套版本上实际遇到或者帮别人定位过的每条按现象、原因、解决写。顺序按排查优先级排前面几条概率最高。5.1 双击 exe 窗口一闪就没日志目录是空的现象解压完双击主程序黑窗口闪一下就消失logs目录里没有任何文件。原因最常见是缺 VC x64 运行库进程在加载阶段就崩了还没走到初始化日志的那一步所以什么都不会写。其次是路径里有中文或者空格程序加载配置时路径被截断。第三种可能是 exe 被 Defender 隔离了你双击的时候其实已经不在那个位置了。解决先在 cmd 里前台跑一遍让错误打在屏幕上再确认 vc_redist.x64 装没装再把程序挪到纯英文无空格路径。三件事按这个顺序做基本能覆盖九成。如果 cmd 里跑起来只报一句“系统找不到指定的路径”那是配置里某个绝对路径写错了逐项对一遍。5.2 服务显示已启动但 10080 打不开现象sc query EasyDSS显示RUNNING但浏览器访问超时本机 127.0.0.1 也打不开。原因两种可能。一是配置文件里bind_ip写成了具体某个网卡 IP而那个 IP 已经变了比如换了网段进程在监听但监听的地址不存在二是端口被别的进程抢了进程起来了但绑定失败日志里有一行bind failed但你只看了最后几行没注意。解决先用netstat -ano | findstr :10080看这个端口到底有没有进程在听、听在哪个地址。如果没有监听记录翻日志找bind或者listen关键字。如果监听的地址是127.0.0.1而不是0.0.0.0说明bind_ip配错了。5.3 页面能开播放器一直转圈黑屏现象后台管理页面正常能看到通道列表点播放就是黑屏转圈F12 里能看到请求发出去了但没数据返回。原因按概率排第一是源流编码是 H.265 或者音频是 G.711浏览器不吃而转码没开第二是 HTTP-FLV 或 HLS 的端口没在防火墙上放行播放器连的是那几个端口而不是 10080第三是推流地址写错了应用名或者流名服务端根本没收到流。解决先用 ffmpeg 从服务端拉一次流见 4.3 那条命令能拉到说明流在、分发也通问题在前端解码拉不到说明推流那一端或者分发端口有问题。确认编码格式用ffprobe看一眼源不是 H.264 AAC 就把transcode打开。5.4 录像目录一直是空的磁盘空间没变现象推流正常、播放正常但record_path指向的目录里什么都没有或者只有空文件夹。原因单路排查下来八成是权限。服务用NETWORK SERVICE跑起来你给目录授权的是当前登录账户两者不是一回事。其次是磁盘剩余空间低于disk_min_free_gb录像被主动停了这个通常在日志里有一行提示但没人看。第三种是ffmpeg_path指错了录像要调用 ffmpeg 落盘找不到就直接失败。解决以服务账户身份验证权限——最简单的方式是看服务日志有没有permission denied或者临时把服务改成用当前账户跑如果录像出来了就确认是权限问题。磁盘剩余空间和 ffmpeg 路径都对着配置逐项核一遍。5.5 重启服务器之后再也没起来现象手动能跑重启机器后服务列表里是停止状态手动启动还能起来。原因sc create注册的服务默认工作目录是C:\Windows\System32配置里的相对路径全部失效。另一种是服务账户密码改了或者过期了服务登录失败。第三种是自启顺序问题服务比网络栈先起来绑定端口失败后直接退出没有重试。解决配置里所有路径改成绝对路径这也是 3.2 里反复强调的原因服务账户用内置账户避开密码过期在服务属性里设置“恢复”选项第一次失败后延迟 60 秒重启给网络栈留出初始化时间。6. 装完怎么验证三条命令加一张检查表装完不等于通。我见过太多“服务起来了、页面能打开”就被判定为完成的情况结果一推流全是问题。这套环境真正跑通的标准是四条链路同时成立Web 能访问、RTMP 能推、分发能拉、录像能落盘。前三条用命令就能验第四条看一眼目录。第一条命令看端口监听三个端口必须都在LISTENING状态而且监听地址是0.0.0.0或者具体网卡 IP不能是空的# 三个端口必须同时存在监听记录 netstat -ano | findstr LISTENING | findstr :10080 :1935 :8081第二条命令验证 Web 服务本身是否健康注意要从另一台机器上执行不要在本机自测本机通不代表防火墙放行了# 从客户端机器验证期望返回 200/302响应时间应在 1 秒内 curl -I --connect-timeout 5 http://192.168.1.20:10080/第三条命令验证媒体链路先推一个本地文件上去再从服务端拉回来两头都通才算通# 推流 30 秒后停止观察有无 dropped frame 异常 ffmpeg -re -i .\test.mp4 -t 30 -c copy -f flv rtmp://192.168.1.20:1935/live/check # 另开终端拉流 10 秒帧计数持续增长说明链路通 ffmpeg -i rtmp://192.168.1.20:1935/live/check -t 10 -f null -最后列一张检查表装完逐项打勾比凭感觉判断靠谱检查项验证方式期望结果进程状态sc query EasyDSSRUNNING端口监听netstat -ano | findstr :100800.0.0.0:10080 LISTENINGWeb 可达客户端curl -I200 或 3021 秒内返回防火墙客户端访问非本机 IP不超时推流ffmpeg 推 30 秒无 error无大量 dropped分发ffmpeg 拉 10 秒帧计数持续增长录像看record_path下当天目录有 flv/mp4 文件且大小在涨磁盘余量看数据盘可用空间高于disk_min_free_gb重启自愈重启服务器后重跑前两行服务自动起来端口正常这张表我一般会存成文本放在程序目录旁边版本升级之后照着再走一遍。因为升级最容易丢的就是配置——新版包的 conf 会覆盖旧文件端口、录像路径、清理策略全被重置回默认值装的时候一切正常跑一周发现磁盘满了才发现录像天数回到了 90 天。从那以后我每次装这类绿色包都会在解压后第一件事把 conf 原文件复制一份到程序目录外面改完再对比 diff 一遍服务起来后不急着交付先把上面这张表从头跑一次尤其是重启那一行——不重启验证过一遍的服务等于没装完。这套 EasyDSS-windows-2.2.7-1912281435 的包本身不复杂难的是那些不报错的静默失败希望帮到你。本文还有配套的精品资源点击获取