v1.3.5
硬件编码扩展(H.264 / AV1)& 多客户授权生产化 & FRP 子级自动化
历时约 11 天,跨 20 次提交。重点完成三件事:客户端硬件编码栈扩展(FFmpeg 路径补齐 H.264 / AV1 GPU 编码 + 静屏跳编码)、多客户授权服务的生产级硬化(hot-path 写抑制、4KB IP 截断修复、BindType 守护、合规可裁剪构建),以及子级运营自动化(FRP 子机自动启动、子级 AUTH 密码生成 bug 修复)。同时附带 SCLoader 大瘦身(-10K 行)、Linux 安装脚本、Web 文件管理触屏体验修复等运维向收尾。
客户端硬件编码(H.264 + AV1,FFmpeg 路径)
CFFmpegH264Encoder/CFFmpegAV1Encoder通过 FFmpeg 调用 NVENC / Quick Sync / AMF 等 GPU 编码器,与现有 x264 软件编码路径并列EncoderFactory在运行时按可用编码器优选- 静屏跳编码:捕获层比较前后帧,完全相同时跳过编码与传输——硬件编码器在静屏时不再被强行喂入相同帧浪费带宽与 GPU 时间
- AV1 通道铺好:未来可在硬件支持的机器(Intel Arc / NVIDIA Ada / AMD RDNA3+)上以更低比特率推送同等画质
备注:FFmpeg 静态库需更新到包含编码器组件的版本才会生效;旧 FFmpeg lib 不会破坏现有 x264 / DIFF / RGB565 路径。
多客户授权服务:从能跑到生产可用
licenses.ini 在 v1.3.4 的多客户授权流程里属于 hot path——心跳每 5s × 客户数会写一次,每次都是 WritePrivateProfileString 全文件重写。本版本:
- hot-path 互斥锁 + 30s 节流:
LicensesIniMutex()(Meyers singleton recursive_mutex)覆盖所有 15 个触碰licenses.ini的函数;UpdateLicenseActivity围绕 in-memoryg_activityCache重写,键为(SN, IP, machine),无变更且 30s 窗口未满则完全跳过磁盘写入 - 闭环了”预设续期配额消失”的 read-modify-write 竞态:
SetPendingRenewal/DecrementPendingQuota现在原子化 licenses.iniIP 列表 4KB 截断修复:WritePrivateProfileString单值 4KB 上限会永久丢弃溢出尾部数据,改为分段写入
实测(本地 2 客户端基线):写频从 0.60 → 0.07 次/秒;外推到 100 在线目标:~160 → ~3.3 次/秒(之前 100 在线接近文件 I/O 饱和)。
子级运营自动化
- 下级主控自动起 frp client:上级签发 V2 授权时一并下发 frp 配置,子级主控启动即接通中继链路,无需人工配
frpc.toml - 菜单驱动的压缩 / 解压:自定义文件 + 文件夹选择器(
ZstaPickerDlg),可从远程主机直接选中混合的目录树打包,或选 zip 解压到目标路径 - 下级 AUTH 密码生成 bug 修复:向 sub-master 发送 AUTH 时密码生成路径走错,导致下级始终认证失败——v1.3.4 部署如观察到下级认证异常,升 v1.3.5 即可
合规可裁剪构建
config.h编译开关DISABLE_X264/DISABLE_FFMPEG:合规审查 / 出口管制场景下,可在不动源码的前提下产出完全不带 x264 / FFmpeg 的二进制- 配套
LICENSE-THIRD-PARTY.txt收录第三方许可证摘要,Dependencies.md补充裁剪说明
客户端 / 运维
- SCLoader 大瘦身:移除
client/SCLoader.cpp(一万行硬编码 stub),改为运行时使用主控下发的 DLL 注入——客户端 binary 大幅缩小 - 客户端 logger 优雅退出:进程退出时刷出尚在队列里的日志,并记录退出信号——重启后能从最后一条 log 复原崩溃前 1-2 秒的上下文
- IOCPClient 早期数据包防护:在
setManagerCallBack之前抵达的数据包不再触发空回调崩溃 - 多显示器光标位置修正:trace cursor 在跨屏捕获时坐标系修正
- MJPEG 录制翻转修复 + 0 字节 AVI 残留清理
- FRP
privilegeKey改用 UTC 时间戳:跨时区主控 / 中继 / 客户端不再因本地时区让 frp auth 误判失效 - 试用 SN 不再下发授权信息:trail SN 在握手阶段就被识别,不会进入授权下发分支
- Linux 客户端
install.sh/uninstall.sh:补齐一键部署 / 卸载脚本
Bug 修复
- Web 文件管理触屏双击不稳:触摸阈值放宽防误判拖拽 + 两次
click模拟物理双击,修复跨平台文件夹重命名 / 点击无响应 - 向 sub-master 发送 AUTH 密码生成路径错误
- 试用 SN 误进入 V2 / V1 授权下发分支
- 导入 SN 时未校验
BindType,可能把离线版 / 在线版 / 试用版 SN 串库
升级提示
- 硬件编码默认关闭:FFmpeg 硬编码路径已并入
EncoderFactory,但默认仍优先 DIFF / RGB565 / x264。如需启用 NVENC / QuickSync / AMF,需确认运行时 FFmpeg 静态库已带对应编码器组件。 - 多客户授权服务端:从 v1.3.4 升级的部署建议关注
licenses.ini的并发安全——本版本将”100 在线 = 160 次/秒文件写入”降到 ~3.3 次/秒,配额竞态也已闭环。 - 合规可裁剪构建:
DISABLE_X264/DISABLE_FFMPEG是构建期开关,开启后输出二进制不含相关第三方依赖。 - 下级 frp 自动化:v1.3.5 起子级主控可在拿到 V2 授权的同时自动启用 frp client——升级后请检查部署链路中是否已经有独立 frpc 在跑,避免重复启动。