MiBeeNvr v0.4.0: 录像终于有声音了,摄像头挂了自动恢复

之前 MiBeeNvr 录的 MP4 文件只有视频轨,播放时是静音的。v0.4.0 补上了这个功能 —— 音频录制。同时新增了更实用的 摄像头健康监控和自动恢复

录像有声音了

每个摄像头都可以单独开启音频录制:

yaml
1
2
3
4
5
6
cameras:
  - id: "front-door"
    name: "门口摄像头"
    protocol: "rtsp"
    encoding: "h264"
    audio_enabled: true

支持的音频格式:

  • AAC — RTSP 摄像头常用
  • G.711 μ-law / A-law — 小米摄像头和 ONVIF 设备常用

音频和视频打包在同一个 MP4 文件里,回放时直接有声音。

注意:音频录制目前还在测试阶段,不同摄像头型号的音频编码差异很大,可能存在兼容性问题。后续会根据反馈逐步完善,遇到问题欢迎到 GitHub Issues 反馈。

摄像头挂了?自动恢复

社区里反馈最多的问题之一就是小米摄像头连接不稳定,经常断连。但问题在于:我们无法访问大家的本地网络环境,很难定位是网络问题、摄像头固件问题还是协议实现问题。

所以 v0.4.0 做了健康监控系统,核心目的有两个:一是自动恢复,帮用户解决眼前的断连问题;二是记录健康事件,方便大家把事件截图反馈到 GitHub Issues,我们就能针对性地排查和修复。

  1. 多层检测:连接状态 → 码流质量 → 画面冻结,三层检测
  2. 自动恢复:断连后自动重连,带指数退避(不会疯狂重试)
  3. 健康评分:每个摄像头一个综合健康分数
  4. 健康历史页面:时间线记录,看什么时候出过问题、什么时候恢复的

如果你遇到小米摄像头或其他摄像头的不稳定问题,请打开健康历史页面截图,提交到 GitHub Issues,我会定期上去统计和排查。有了具体的事件信息,定位问题会快很多。

树莓派也能跑得更好了

这次专门优化了树莓派上的体验:

  • 新增 ARMv7 二进制(支持树莓派 2/3)
  • LL-HLS 参数调优,树莓派上播放更稳定
  • 帧率限流机制,低性能设备上不会卡死

现在支持的架构:amd64、arm64、armv7,基本上所有常见的硬件平台都覆盖了。

v0.4.0 完整更新

除了上面两个重点功能,v0.4.0 还包含以下更新(完整列表见 Release Notes):

流媒体协议

  • WebRTC (WHEP) — 亚秒级延迟实时预览
  • HTTP-FLV — 浏览器友好的低延迟直播
  • RTMP 推流 — 支持 OBS 等推流工具
  • SRT 接收 — 远程/不稳定网络推流
  • LL-HLS — 低延迟 HLS,参数已针对树莓派调优

HLS/LL-HLS 改进

  • 等待 IDR 帧再开始写入 segment,防止黑帧
  • 基于信用的帧率限流,播放更流畅
  • 子流失败自动回退到主流
  • LL-HLS backBuffer 和 liveSync 参数调优,树莓派上更稳定

UI 改版

  • 摄像头页面拆分为 Active / Archived 两个 Tab
  • 设置页面拆分为 General / Advanced 两个标签
  • 新增健康历史页面,支持中英文
  • Setup Wizard 首次运行引导

其他

  • ONVIF 编码自动检测 — 添加摄像头时自动识别 H.264/H.265
  • 小米云端同步 — 同步摄像头元数据
  • 配置加密 — 敏感字段加密存储
  • 1651 个测试通过,60.7% 覆盖率
  • 196 commits,73 features,54 fixes,21 refactors

常见问题

社区里收到不少反馈,这里针对 v0.4.0 已解决的问题逐一回应:

Q: Docker 部署后反复重启,提示文件夹无权限?

A: 这是 Docker 用户权限问题。两种解决方式:

  1. 在 docker-compose 中加 user: "1000:1000" 指定用户
  2. 或者直接用一键安装脚本,绕过 Docker:
bash
1
curl -fsSL https://raw.githubusercontent.com/Mi-Bee-Studio/MiBeeNvr/main/install.sh | sudo bash

脚本会自动创建系统用户、生成配置、安装 systemd 服务,不需要折腾权限问题。

Q: ONVIF 摄像头初次连接成功,但无画面,后续显示已断开?

A: v0.4.0 的健康监控系统正是解决这个问题的。三层检测(连接 → 码流 → 画面)会自动发现断连并恢复,带指数退避重连不会把设备搞崩。如果之前用的是 v0.3.x,升级到 v0.4.0 后断连恢复能力会有明显改善。

Q: 设置页面修改后保存无反应?

A: v0.4.0 重构了设置页面,拆分为 General 和 Advanced 两个标签页,保存逻辑也做了优化。如果还遇到问题,建议检查浏览器控制台是否有报错,到 GitHub Issues 反馈。

Q: Docker 重启后无法启动,提示无法打开 db 数据库文件?

A: 原因和第一个权限问题一样 —— Docker 容器内的用户没有读写挂载目录的权限。确保挂载目录(./data)的 owner 和容器运行用户一致。或者用上面的一键安装脚本,直接跑二进制,没有权限问题。

Q: 玩客云 ARMv7 设备能用吗?

A: v0.4.0 新增了 ARMv7 二进制支持。建议直接安装二进制文件而不是用 Docker,避免 Docker 层面的兼容性和权限问题:

bash
1
2
3
4
5
# 下载 ARMv7 二进制
wget https://github.com/Mi-Bee-Studio/MiBeeNvr/releases/latest/download/mibee-nvr-armv7
chmod +x mibee-nvr-armv7
./mibee-nvr-armv7 init --password yourpassword
./mibee-nvr-armv7 -config mibee-nvr.yaml

Q: H.265 摄像头的 HLS 在电脑浏览器上无法显示?

A: 这是浏览器本身的限制 —— 大多数桌面浏览器(Chrome/Firefox/Edge)不支持 HLS 播放 H.265。手机浏览器通常支持是因为硬件解码。MiBeeNvr 的多协议架构可以绕过这个限制:切换到 HTTP-FLVLL-HLS 协议试试,播放器会自动排除不支持的协议。

如果是需要 H.265 转码的需求(实时转成 H.264),这个功能目前还没有,在 Roadmap 中。

快速上手

还没用过?一条命令搞定:

bash
1
2
3
4
5
docker run -d --name mibee-nvr \
  --restart unless-stopped \
  -p 9090:9090 \
  -v ./data:/data \
  ghcr.io/mi-bee-studio/mibeenvr:latest

浏览器打开 http://你的IP:9090,设置好密码就能用了。

想看技术细节?这篇 v0.4.0 技术帖

没看过之前的?先看 MiBeeNvr 介绍 或者 v0.3.0 技术帖

开源地址

GitHub: https://github.com/Mi-Bee-Studio/MiBeeNvr Gitee: https://gitee.com/Mi-Bee-Studio/MiBeeNvr

觉得有用的话,GitHub 上点个 Star ⭐ 支持一下,Star 数越多,后续投入的精力也越多。有问题的也欢迎提 Issue,看到就会处理。