3分钟上手go2rtc:把RTSP摄像头变成浏览器里的低延迟直播
3分钟上手go2rtc把RTSP摄像头变成浏览器里的低延迟直播【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtcgo2rtc 是一个摄像头视频流转发应用把摄像头的 RTSP 流转成 WebRTC浏览器原生支持的实时音视频协议等网页能直接播的格式完成 RTSP转WebRTC 的零延迟观看。照做下来你能在浏览器里看到亚秒延迟的监控画面还能顺手把画面推上直播平台。 先跑起来——最短路径方式一下载二进制双击就完事无依赖、跨平台一个文件就是整个应用。从官方 Release 页下载对应系统的文件Linux 选 go2rtc_linux_amd64Windows 选 go2rtc_win64.zip加执行权限后直接运行# 给文件加执行权限Linux/macOS 必做 chmod x go2rtc_linux_amd64 # 启动默认读取当前目录的 go2rtc.yaml ./go2rtc_linux_amd64方式二一条命令起 Docker懒得折腾本地环境就用 Docker一条命令拉镜像映射三个端口就能用# 拉官方镜像 docker pull alexxit/go2rtc # 起容器1984 网页端8554 RTSP8555 WebRTC docker run -d --name go2rtc -p 1984:1984 -p 8554:8554 -p 8555:8555 -p 8555:8555/udp alexxit/go2rtc怎么判断跑通了浏览器打开 http://localhost:1984/ 看到流管理页面就算成功。此时还没加摄像头页面是空的正常——下一步就加。端口干什么用协议1984Web 界面和 APIHTTP8554对外输出 RTSP 流RTSP8555浏览器低延迟观看WebRTC它是怎么工作的go2rtc 的思路是左边接任意来源右边出任意格式中间只管转发。输入侧支持 RTSP、RTMP、HLS、WebRTC甚至本地文件和脚本输出中间是 streams 核心模块源编码和输出格式匹配时直接转发不匹配才调 FFmpeg 转码输出侧是 WebRTC、RTSP、HLS、MJPEG 等服务各走各的端口。看图最左侧是各种输入中间是 go2rtc 本身右侧按协议分叉。你只需要记住一件事——同一个流可以同时在多种格式下被观看互不影响。第一个配置——跟着做就能用在程序所在目录建一个 go2rtc.yaml也可以直接在 WebUI 里改带语法检查streams: # 流的名字后面所有观看 URL 都用它 front-door: # 改成你的摄像头 RTSP 地址 - rtsp://admin:password192.168.1.100:554/stream1就两行有效配置。改第一行名字观看地址跟着变改第二行地址就是换摄像头。保存后回 http://localhost:1984/ 首页列表里出现 front-door点它的 WebRTC 链接画面就出来了。三个你会真正用到的场景场景一手机上零延迟看家痛点RTSP 直接看延迟 3 秒起步浏览器还不支持直接播放。操作不用改配置go2rtc 默认就把流转成了 WebRTC打开这个页面http://localhost:1984/stream.html?srcfront-doormodewebrtc结果手机浏览器打开就是亚秒延迟的实时画面延迟比直接看 RTSP 低一个量级。场景二接进录像和自动化系统痛点Frigate、Home Assistant 这类系统只认 RTSP 或 HLS 地址。操作go2rtc 自身就是 RTSP 服务器把 8554 端口上的流指过去就行rtsp://192.168.1.50:8554/front-door http://192.168.1.50:1984/api/stream.m3u8?srcfront-door结果一个摄像头、一份拉流录像、回放、自动化全都能吃。场景三把摄像头直播出去痛点想推到 YouTube 或 Telegram平台要求 H264AAC 编码。操作加一段 publish 配置源编码对不上时用 FFmpeg 源转码publish: front-door: - rtmp://xxx.rtmp.youtube.com/live2/你的推流密钥 streams: front-door: - ffmpeg:rtsp://admin:password192.168.1.100:554/stream1#videoh264#audioaac结果有人观看时自动开始推流没人看自动停不用你盯着。出问题了先查这3处症状大概率原因一条命令验证流一直连不上地址或账号密码错ffplay 直连 RTSP有画面但延迟高用了 RTSP/HLS 观看URL 换 modewebrtc有视频没声音音频编码不匹配源后加#audiocopy浏览器麦克风是灰的麦克风需要 HTTPS给 1984 加反代证书如果都没命中去项目 Issue 区搜关键词大概率有人踩过同一个坑。想再快一点只有当流需要视频转码比如源是 MJPEG 或 H265时加一个#hardware参数就能启用 GPU 硬编码streams: front-door: ffmpeg:rtsp://admin:password192.168.1.100:554/stream1#videoh264#hardware大多数摄像头直接输出 H264不转码就是最低延迟这条可以不用管。更多转码参数见 FFmpeg 源文档流管理的完整能力看 streams 模块说明。回到开头那句承诺摄像头变成浏览器里的低延迟直播只需要一个配置文件。下一步建议把 WebUI 首页每个流的链接都点一遍感受同一个流用 WebRTC、HLS、MJPEG 看的效果差别遇到搞不定的问题直接去项目 Issue 区提问。【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考