wans
家里几台小米摄像头,平时只能用米家 App 一台一台点开看;想在微服(NAS)上把几路画面并排看,同时把其中一路交给 motionEye 录像、或者让局域网里的监控中心 / 录像机直接拉 RTSP。go2rtc 干的就是这件事:它把摄像头的流拉进来,转成浏览器能直接播放的格式,同时再以 RTSP 重播出去。它不录像、不转码(除非你要求),装好之后是一个空列表——因为它本身不带摄像头。
特别说明:懒猫摄像头本身支持rtsp,所以不需要这款应用,可以直接使用支持rtsp接入摄像头应用,如果家里有其他厂商摄像头,可以参考这篇攻略接入
go2rtc.<你的域名>)。go2rtc 的界面是英文的(上游没有多语言),下面按界面上的英文按钮名说明,按钮位置和文字对照着图看即可。
打开应用,顶部是 Streams 列表,此时是空的,这是正常状态。点左上角的 Add:

会列出一堆支持的源类型(ALSA、ONVIF、Tuya、Ring、Xiaomi……),往下找到 Xiaomi 点进去:

在 username / password 里填小米账号和密码,点 login:

接下来是两道验证码:先输图里的图形验证码点 send,再等手机上(或邮箱里)收到 6 位验证码,填进 verify 那一行点 send:

验证通过后点 load devices,这台账号下绑定的设备就全列出来了:

这一步最关键:表里 url 列是每台设备的取流地址(xiaomi://...?did=...&model=...),它只在这次会话里显示,页面一刷新、一点别的页签就没了。有几个摄像头就整列复制几行,先贴到自己的文档或记事本里存好,后面配置全靠它。
点顶部导航的 config。第一次进来编辑器可能是空白的一行,刷新一下页面或者多等几秒即可,编辑器脚本是从外部 CDN 加载的:

然后按下面的层级把上一步存下来的地址写进去:
streams:
camera1:
- xiaomi://把第 5 步存下来的整串粘在这里
camera2:
- xiaomi://另一台设备的整串
camera3:
- xiaomi://第三台设备的整串
写的时候注意这几条规则,写错一条整段配置就解析失败:
camera1 / camera2 是你给这路流起的名字,随你改(建议英文或拼音、不要空格),后面所有地址都用这个名字引用它;- (短横线加空格)开头,表示「这是该流的一个源」;streams: 顶格,camera1: 缩两格,- xiaomi:// 再缩两格。用 Tab 会直接报错;xiaomi:// 后面一整串照抄,包括 ?did=...&model=...——did 和 model 是这台设备的,不能这台机器的地址配另一台的名字。写完点 Save & Restart 保存并重启 go2rtc,几秒钟就恢复。

回到左上角的 go2rtc 页,刚才起名字的几路流已经在列表里了:

点某一行右边的 stream(或者直接点流名)开始拉流,弹窗里会让你选播放方式:
online 列的数字是当前有多少客户端正在取这路流,显示 0 只说明现在没人看,不代表源配错了——点一次 stream,数字会变成 1。
画面在应用里能播之后,就可以对外供流了,分两种用法:
给同一台微服上的应用取流(motionEye 录像、Frigate 侦测、Home Assistant 接入都用这套地址):
http://go2rtc.cloud.lazycat.app.go2rtc.lzcapp:1984/api/stream.m3u8?src=camera1
http://go2rtc.cloud.lazycat.app.go2rtc.lzcapp:1984/api/stream.mjpeg?src=camera1
http://go2rtc.cloud.lazycat.app.go2rtc.lzcapp:1984/api/frame.jpeg?src=camera1
第一条是 HLS、第二条是 MJPEG、第三条是单帧快照(当封面或做侦测抓图很省资源)。src= 后面填你在配置里起的流名。
局域网里的录像机 / 监控中心 / NVR 要拉 RTSP:go2rtc 自己开了一个 RTSP 重播口 8554,但微服对局域网只开放 HTTPS 那一个入口,8554 得先用「端口转发」应用导出去,下一步专门讲。
微服的应用入口只有 HTTPS 一条路,容器里的 TCP 端口局域网直连是连不上的。要拉 RTSP 就得先在「懒猫端口转发工具」里建一条规则,把 8554 暴露到微服所在的局域网(应用商店搜「端口转发」,入口子域名是 forward.<你的域名>):
8554。go2rtc → 服务选它的那个服务 → 目标端口填 8554;可以先点 测试目标连接 确认通。之后局域网里的录像机 / 监控中心 / NVR 就能用这个地址拉流:
rtsp://user:pwd@192.168.31.44:8554/camera1
192.168.31.44 换成你自己微服的局域网 IP;camera1 是你在 config 里起的流名,一条流一个地址;user:pwd 是下一节要配的 RTSP 账号密码,没配之前这个端口谁都能拉。默认配置里 rtsp.listen :8554 但没有认证。回到 config 页,在 streams: 前面加上账号密码段(顺序无所谓,但都要顶格):
api:
username: "user"
password: "换成你的密码"
rtsp:
username: "user"
password: "换成你的密码"
webrtc:
username: "user"
password: "换成你的密码"
streams:
camera1:
- xiaomi://...

保存重启后,RTSP 地址就要带上 user:pwd@,浏览器访问 1984 端口也会要求登录;应用入口本身还有微服账号体系挡着,这两层是分开的。密码改完记得把录像机 / 监控中心里存的地址一起改掉,否则它们会一直认证失败。
评论
0暂无评论