【小鹰看看】PC监控优化处理记录

背景

店里的监控买的百家齐放,有“云看看”、“小鹰看看”、“小翼管家”、“早期的小米”,而且都是家用级别,都是用手机看的。太low了,所以要弄下统一查看+电脑本地回放。
最后查了下发现只有小鹰看看能有PC端软件支持,可以在电脑做本地回放(夸克可以5倍速回放),其他的只能用安卓模拟器挂着了。
虽然对比云看看、小翼管家之类的多了PC端支持,但是还要吐槽下下载地址不好找,软件不好用。

最后更新于2025年8月2日08:24:26

问题列表

问题解决方案
PC端单次播放只有10分钟bat脚本+AutoHotkey
小鹰看看软件本身本地回放有bug,拖动会卡死导出mp4后用夸克回放
每次重开后软件音量过大未解决,下载了EarTrumpet(音量合成器)可以快速调整软件音量
2025年6月后经常画面卡死临时:用Windows自带防火墙屏蔽了部分ip
抽空重启摄像头后恢复正常
重连会出现黑屏未解决

主要记录下bat脚本跟屏蔽ip的事吧。

SuperIPCam监控脚本.bat

脚本主体用DeepSeek写的,勿喷
老版本可以针对固定端口做监控,新版本变成随机端口了。
至于CPU、流量之类的用bat不好监控,容易误报,最后选择用内存大小做监控。
在任务计划里设置61秒执行一次bat,或者可以再改改脚本做成全后台的几秒检测一下可以更加好用点。

已知问题:
  1. 刚打开软件在64M后面会逐步减少到39M左右,部分情况会降到20M多,所以还是需要人工干预下。
  2. 软件进行重连/重启有概率会黑屏,但是还有SD卡还可以进行回放,所以还能接受,也就暂时保持这个逻辑了。
    比如如下情况,就是检测内存已经临近10分钟关闭了,先触发软件内的继续播放(存在黑屏或者重启软件依旧黑屏的问题),等内存逐步减少到临界值进行重启,这个值还能再做调整,但是不如让厂家优化下软件吧。
    在11:08:13十分钟到期(10:58:12开始),关闭监控。
    脚本在11:08:22触发内存过低进行软件重启,但是因为bug软件黑屏了,并且内存没有到临界值在两分钟11:10:24触发重启操作后依旧因为bug黑屏,在第三分钟11:11:28再次重启操作后恢复正常。
    在这里插入图片描述
    在这里插入图片描述
@echo off
REM ================================================
REM 文件名:SuperIPCam监控脚本.bat
REM 功能:监控SuperIPCam进程状态,检测内存使用量
REM       自动重启异常进程,并记录运行日志
REM 版本:3.0
REM 修改记录:
REM 1. 调整阈值使软件更加稳定
REM ================================================

REM 配置区(可根据需要修改)
set LOG_FILE="D:\店里备份\监控\监控.log"
set CAM_PATH="C:\Program Files (x86)\小鹰看看\SuperIPCam.exe"
set AHK_SCRIPT="D:\店里备份\监控\resize_window.ahk"
set AHK_SCRIPT3="D:\店里备份\监控\resize_window3.ahk"
set MaxMemoryKB=37000
REM 工作阈值40MB (40*1024)
set MinValidMemoryKB=9000
REM 最小有效内存10MB

REM 初始化环境
setlocal enabledelayedexpansion
for /f "tokens=1-3 delims=/ " %%a in ("%date%") do (
    set LOG_DATE=%%a-%%b-%%c
)
set LOG_TIME=%time:~0,8%
set "TIMESTAMP=[%LOG_DATE% %LOG_TIME%]"

REM 主程序入口
call :DetectAndHandlePort
set LOG_TIME=%time:~0,8%
set "TIMESTAMP=[%LOG_DATE% %LOG_TIME%]"
echo %TIMESTAMP% [info] 脚本执行完毕。>> %LOG_FILE%
exit /b

REM ================================================
REM 函数:CheckMemory
REM 功能:增强版内存使用量检测
REM 返回码:
REM   0 - 内存正常
REM   1 - 内存低于阈值
REM   2 - 检测失败
REM ================================================

:CheckMemory
set LOG_TIME=%time:~0,8%
set "TIMESTAMP=[%LOG_DATE% %LOG_TIME%]"
timeout /t 2 /nobreak >nul
echo %TIMESTAMP% [info] 延迟2秒执行 >> %LOG_FILE%

set mem_value=0
set valid_data=0

REM 使用 typeperf 获取内存(Working Set),并处理小数
for /f "tokens=2 delims=," %%a in (
    'typeperf "\Process(SuperIPCam)\Working Set - Private" -sc 1 2^>nul ^| find ":"'
) do (
    REM 移除引号,并截取整数部分(去掉 .000)
    for /f "tokens=1 delims=." %%b in ("%%~a") do (
        set "mem_value=%%b"
        set "valid_data=1"
    )
)

REM 验证数据有效性
if !valid_data! equ 0 (
    echo %TIMESTAMP% [error] 内存检测失败,typeperf无有效数据>> %LOG_FILE%
    exit /b 2
)

REM 转换为KB(整数运算)
set /a mem_value_kb=!mem_value!/1024
echo %mem_value_kb%
REM 后续逻辑保持不变...
set LOG_TIME=%time:~0,8%
set "TIMESTAMP=[%LOG_DATE% %LOG_TIME%]"
echo %TIMESTAMP% [debug] 内存=!mem_value_kb!KB 阈值=[!MinValidMemoryKB!KB,!MaxMemoryKB!KB]>> %LOG_FILE%

if !mem_value_kb! LEQ 0 (
	set LOG_TIME=%time:~0,8%
	set "TIMESTAMP=[%LOG_DATE% %LOG_TIME%]"
    echo %TIMESTAMP% [error] 内存检测异常:0KB>> %LOG_FILE%
    exit /b 2
) else if !mem_value_kb! LSS !MinValidMemoryKB! (
	set LOG_TIME=%time:~0,8%
	set "TIMESTAMP=[%LOG_DATE% %LOG_TIME%]"
    echo %TIMESTAMP% [warning] 内存过低!mem_value_kb!KB<最小阈值!MinValidMemoryKB!KB>> %LOG_FILE%
    exit /b 1
) else if !mem_value_kb! LEQ !MaxMemoryKB! (
	set LOG_TIME=%time:~0,8%
	set "TIMESTAMP=[%LOG_DATE% %LOG_TIME%]"
    echo %TIMESTAMP% [warning] 内存!mem_value_kb!KB≤工作阈值!MaxMemoryKB!KB>> %LOG_FILE%
    exit /b 2
) else (
	set LOG_TIME=%time:~0,8%
	set "TIMESTAMP=[%LOG_DATE% %LOG_TIME%]"
    echo %TIMESTAMP% [info] 内存状态正常>> %LOG_FILE%
    exit /b 0
)


REM ================================================
REM 函数:DetectAndHandlePort
REM 功能:增强版进程状态检测
REM ================================================
:DetectAndHandlePort
set "PID="

REM 获取进程PID
for /f "tokens=2" %%i in (
    'tasklist /FI "IMAGENAME eq SuperIPCam.exe" 2^>nul ^| findstr /i "SuperIPCam"'
) do set "PID=%%i"

if not defined PID (
    echo %TIMESTAMP% [error] SuperIPCam.exe 未运行!>> %LOG_FILE%
    
    if exist %CAM_PATH% (
        start "" %CAM_PATH%
        echo %TIMESTAMP% [info] 正在启动SuperIPCam...>> %LOG_FILE%
        timeout /t 8 /nobreak >nul
        
        if exist %AHK_SCRIPT% (
            call %AHK_SCRIPT%
            echo %TIMESTAMP% [info] 已执行窗口调整脚本>> %LOG_FILE%
        ) else (
            echo %TIMESTAMP% [error] AHK脚本不存在!>> %LOG_FILE%
        )
    ) else (
        echo %TIMESTAMP% [critical] SuperIPCam.exe 不存在于指定路径!>> %LOG_FILE%
    )
    goto :eof
)

echo %TIMESTAMP% [info] 检测到进程 PID: !PID!>> %LOG_FILE%

REM 执行内存检测
call :CheckMemory
if errorlevel 2 (
    echo %TIMESTAMP% [critical] 内存检测故障,建议人工检查>> %LOG_FILE%
	echo %TIMESTAMP% [warning] 内存异常,尝试恢复...>> %LOG_FILE%
	call :ReloadSuperIPCam
) else if errorlevel 1 (
    echo %TIMESTAMP% [warning] 内存异常,尝试恢复...>> %LOG_FILE%
    call :ReloadSuperIPCam
)
goto :eof

REM ================================================
REM 函数:ReloadSuperIPCam
REM 功能:增强版恢复流程
REM ================================================
:ReloadSuperIPCam
echo %TIMESTAMP% [action] 执行恢复流程>> %LOG_FILE%

if exist %AHK_SCRIPT3% (
    call %AHK_SCRIPT3%
    if errorlevel 1 (
        echo %TIMESTAMP% [error] 恢复脚本执行失败>> %LOG_FILE%
    )
) else (
    echo %TIMESTAMP% [error] 恢复脚本不存在>> %LOG_FILE%
)

timeout /t 3 /nobreak >nul

REM 再次检测内存状态
set MaxMemoryKB=25000
call :CheckMemory
if errorlevel 1 (
    echo %TIMESTAMP% [action] 恢复失败,准备完全重启>> %LOG_FILE%
    call :RestartSuperIPCam
) else if errorlevel 2 (
    echo %TIMESTAMP% [action] 恢复失败,准备完全重启>> %LOG_FILE%
    call :RestartSuperIPCam
)
goto :eof

REM ================================================
REM 函数:RestartSuperIPCam
REM 功能:完整的进程重启流程
REM ================================================
:RestartSuperIPCam
echo %TIMESTAMP% [action] 开始强制重启流程>> %LOG_FILE%

REM 尝试正常结束进程
taskkill /T /IM "SuperIPCam.exe" >> %LOG_FILE% 2>&1
timeout /t 2 /nobreak >nul

REM 强制终止进程
taskkill /T /F /IM "SuperIPCam.exe" >> %LOG_FILE% 2>&1
::timeout /t 1 /nobreak >nul

REM 重新启动程序
if exist %CAM_PATH% (
    start "" %CAM_PATH%
    echo %TIMESTAMP% [info] 程序已重启>> %LOG_FILE%
    timeout /t 8 /nobreak >nul
    
    if exist %AHK_SCRIPT% (
        start "" %AHK_SCRIPT%
    )
) else (
    echo %TIMESTAMP% [critical] 程序文件不存在!>> %LOG_FILE%
)

goto :eof

屏蔽异常ip

现象:重连几秒之后黑屏
临时解决屏蔽下IP
建议还是抽空去重启摄像头,重启大法真好使!
在这里插入图片描述

用软件(如NetLimiter)查看Superipcam软件下面异常连接,然后给他deny了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

woodvk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值