小米摄像头接入问题反馈(5 项,附复现步骤与技术定位)
【环境】
- 设备:飞牛 NAS(fnOS 1.2.0604)
- EasyNVR:v7.7.412 安装后,通过应用内"在线升级"到 v7.7.417
- 摄像头:小米室外摄像机 CW500 双摄版(型号 isa.camera.hlmax)
- 接入协议:应用内「小米」插件
【问题 1|在线升级 100% 失败】
现象:点"在线升级"后立刻失败,没有任何下载进度。
原因定位:下载前没有创建 appdata 下的 update 目录,写文件直接报"no such file or directory",程序就判定"所有下载源均失败"。
证据(server/logs/app.log):
err: open /vol1/@appdata/easynvr/update/easynvr-linux-amd64-v7.7.417-xxxx.tar.gz: no such file or directory
stacktrace: litecvs/internal/web/api.(*AppAPI).upgradeOnline.func1 app.go:494 / app.go:501
不是网络问题:同一个 URL 用 curl 手动下载 138MB 完全正常(HTTP 200)。
建议:下载前先 os.MkdirAll 创建父目录。
【问题 2|小米账号短信验证码永远提示"验证码错误"】
现象:绑定手机后,输入完全正确的短信验证码,仍提示"验证码错误"(code 70014)。
原因定位:提交验证码时请求参数少了一个等号。代码里拼出来是 _flag4,正确应为 _flag=4。
实际请求:https://account.xiaomi.com/identity/auth/verifyPhone?_flag4&ticket=191329&...
正确请求:https://account.xiaomi.com/identity/auth/verifyPhone?_flag=4&ticket=191329&...
证据:手工用 _flag=4 提交同一验证码,小米返回 code:0 并下发 passToken,登录立即成功。
建议:补上等号即可。
【问题 3|小米直播预览清晰度过低(640x360,手机 App 是 2K)】
现象:EasyNVR 预览信息显示 640 x 360 / H265,而手机米家 App 同一机位是 2K。
原因定位:小米拉流默认使用 videoquality=2,而 CW500 双摄版在档位 2 下只输出 640x360,档位 3 才是 2560x1440。
实测对照(同一摄像头,仅改档位):
档位 2(默认) → 640 x 360
档位 3 → 2560 x 1440
档位 4 → 2560 x 1440
建议:把该机型默认档位设为 3,或在界面上提供"高清/标清"切换。
【问题 4|双摄机型只显示一个画面】
现象:CW500 是双镜头,但 EasyNVR 里只出现 1 个通道,看不到第二个镜头。
原因定位:插件上报 channel_count=1,且没有把通道号带到拉流地址。
实测:拉流地址加上 channel=2 后,第二镜头可正常出图(2560x1440)。
建议:双摄机型上报 2 个通道,或提供手动"添加第二通道"的入口。
【问题 5|云台方向键不可用(重点诉求)】
现象:点击界面上的上下左右方向键,提示"该协议不支持的功能"。
说明:相机本身是有云台的。我们查了该机型(isa.camera.hlmax)的 miot-spec,其中存在 motor / 云台 / PTZ 字段,硬件支持云台转动。
现状:目前小米插件只实现了拉流/音频/对讲,没有对外提供云台控制接口,所以前端方向键会直接提示不支持。
诉求:请为小米摄像头增加云台控制(方向键、预置位),这是本机型用户比较常用的功能。
【复现步骤】
- 应用中心安装 EasyNVR,点"在线升级"→ 必失败(问题 1)
- 小米插件添加账号 → 输入短信验证码 → 必报"验证码错误"(问题 2)
- 添加 CW500 双摄版 → 预览分辨率仅 640x360(问题 3)
- 同一设备只看到 1 个通道,无第二镜头(问题 4)
- 点云台方向键 → 提示"该协议不支持的功能"(问题 5)
【补充】
- 临时绕过:手动创建 update 目录后可升级;把设备拉流地址加 &subtype=3 可拿到 2K,再加 &channel=2 可拿到第二镜头。
- 以上现象在 v7.7.417 上复现。
- 详细的技术定位(含代码行号)我们也同步提交在 GitHub Issue:https://github.com/EasyNVR/EasyNVR/issues/3