2 步搞定 go2rtc GoPro 睡眠断流:关自动关机 + 保活心跳
【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc
晚上八点直播刚开,观众喊画面黑了——回头一看,GoPro 相机自己熄了屏。这是 go2rtc GoPro 睡眠问题的典型翻车现场:go2rtc 是一台把相机画面转成 WebRTC / RTSP 等协议的流媒体服务器,而 GoPro 连上后过几分钟就自动休眠,流就这么断了。
一分钟结论
推荐组合拳:先在相机里把自动关机设为「从不」,再跑一个每 25 秒查一次相机状态的保活心跳脚本,基本能彻底告别 go2rtc GoPro 睡眠断流。原理一句话:相机只认"有没有人动它",go2rtc 开播后就不再和它说话,它就把自己关掉了——要么告诉它别关,要么定期跟它说句话。
🔧 快速修复
关闭 GoPro 自动关机
打开 GoPro 手机 App,进入相机设置 → 首选项(Preferences)→自动关机(Auto Power Off)→ 设为「从不」。用 USB 连着相机时,也可以直接浏览器访问相机的 Web 页面http://172.2x.1xx.51(x 是位数),在设置页关掉同一选项。
给相机持续供电
用 USB 线把相机接到有电源的电脑或路由器上。只要相机在充电,就不会因为电量不足被强制关机,这是最稳的一招。
在 go2rtc 里添加 gopro:// 流
打开 go2rtc 的 Web 界面(默认1984端口),进入 config 页,在streams:下加一行camera1: gopro://172.20.100.51,IP 换成相机的地址,点Save & Restart。go2rtc 用gopro://协议描述这类源;USB 直连时相机一般是172.2x.1xx.51,Wi-Fi 场景就是路由器分配的普通 IP。加完打开流页面,能看到画面就说明链路通了。
GoPro 为什么会睡着
go2rtc 的 GoPro 模块源码 只干三件事:向相机8080端口发两条开播命令,然后在本地8554端口被动收 UDP 视频包。开播之后,两边再无任何交互,也没有任何心跳。
而 GoPro 的省电逻辑是:一段时间检测不到操作就自动关机。因果链因此非常简单:
相机的发现逻辑 也是靠 8080 端口的状态接口探测的——这正是保活心跳有效的直接原因。
进阶:用保活心跳彻底解决
如果相机设置改不了,或者想双保险,就在跑 go2rtc 的机器上加一个 GoPro 直播保活脚本:定期向 8080 端口查询 webcam 状态,让相机一直觉得"有人在用"。
import requests, sys, time host = sys.argv[1] while True: try: requests.get(f"http://{host}:8080/gopro/webcam/status", timeout=3) except Exception: pass time.sleep(25)存成gopro_keepalive.py(放 go2rtc 同级目录即可),然后python3 gopro_keepalive.py 172.20.100.51跑起来。间隔建议25-30 秒,要短于相机的默认休眠时间;网络差可以放宽到 40 秒,但别超过 60。
症状自查清单
- 连上十几秒就黑屏,相机指示灯熄灭:自动关机没关,回「快速修复」把它设为「从不」
- 直播十几分钟后 go2rtc GoPro 流中断,相机还亮着:缺保活,按进阶节跑心跳脚本
- add 页面发现不了相机:USB 直连时本机网卡应拿到 172.2x.1xx.5x 网段地址,拿不到就换线换口;Wi-Fi 场景确认相机与 go2rtc 同网段后,直接手写
gopro://IP - 画面卡顿、花屏:带宽不够或分辨率太高,调低相机输出规格,直播尽量走有线
- 想同时接两台 GoPro:拉 GoPro 流时监听的是固定 8554 端口,一个实例一次只能接一路,第二台换台机器拉
- 频繁掉线、电量掉得快:接 USB 持续供电,别依赖电池
最后
如果只想做一件事:把相机自动关机设为「从不」,再挂上那个 25 秒一次的心跳脚本。这两步做完,go2rtc GoPro 睡眠断流基本就翻篇了,剩下的时间留给你看画面。
【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考