news 2026/9/12 6:55:05

3分钟上手go2rtc:把RTSP摄像头变成浏览器里的低延迟直播

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
3分钟上手go2rtc:把RTSP摄像头变成浏览器里的低延迟直播

3分钟上手go2rtc:把RTSP摄像头变成浏览器里的低延迟直播

【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc

go2rtc 是一个摄像头视频流转发应用:把摄像头的 RTSP 流转成 WebRTC(浏览器原生支持的实时音视频协议)等网页能直接播的格式,完成 RTSP转WebRTC 的零延迟观看。照做下来,你能在浏览器里看到亚秒延迟的监控画面,还能顺手把画面推上直播平台。

🚀 先跑起来——最短路径

方式一:下载二进制,双击就完事

无依赖、跨平台,一个文件就是整个应用。从官方 Release 页下载对应系统的文件(Linux 选 go2rtc_linux_amd64,Windows 选 go2rtc_win64.zip),加执行权限后直接运行:

# 给文件加执行权限,Linux/macOS 必做 chmod +x go2rtc_linux_amd64 # 启动,默认读取当前目录的 go2rtc.yaml ./go2rtc_linux_amd64

方式二:一条命令起 Docker

懒得折腾本地环境就用 Docker,一条命令拉镜像,映射三个端口就能用:

# 拉官方镜像 docker pull alexxit/go2rtc # 起容器:1984 网页端,8554 RTSP,8555 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 界面和 APIHTTP
8554对外输出 RTSP 流RTSP
8555浏览器低延迟观看WebRTC

它是怎么工作的

go2rtc 的思路是:左边接任意来源,右边出任意格式,中间只管转发。输入侧支持 RTSP、RTMP、HLS、WebRTC,甚至本地文件和脚本输出;中间是 streams 核心模块,源编码和输出格式匹配时直接转发,不匹配才调 FFmpeg 转码;输出侧是 WebRTC、RTSP、HLS、MJPEG 等服务,各走各的端口。

看图:最左侧是各种输入,中间是 go2rtc 本身,右侧按协议分叉。你只需要记住一件事——同一个流可以同时在多种格式下被观看,互不影响。

第一个配置——跟着做就能用

在程序所在目录建一个 go2rtc.yaml,也可以直接在 WebUI 里改(带语法检查):

streams: # 流的名字,后面所有观看 URL 都用它 front-door: # 改成你的摄像头 RTSP 地址 - rtsp://admin:password@192.168.1.100:554/stream1

就两行有效配置。改第一行名字,观看地址跟着变;改第二行地址,就是换摄像头。保存后回 http://localhost:1984/ 首页,列表里出现 front-door,点它的 WebRTC 链接,画面就出来了。

三个你会真正用到的场景

场景一:手机上零延迟看家

痛点:RTSP 直接看延迟 3 秒起步,浏览器还不支持直接播放。

操作:不用改配置,go2rtc 默认就把流转成了 WebRTC,打开这个页面:

http://localhost:1984/stream.html?src=front-door&mode=webrtc

结果:手机浏览器打开就是亚秒延迟的实时画面,延迟比直接看 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?src=front-door

结果:一个摄像头、一份拉流,录像、回放、自动化全都能吃。

场景三:把摄像头直播出去

痛点:想推到 YouTube 或 Telegram,平台要求 H264+AAC 编码。

操作:加一段 publish 配置,源编码对不上时用 FFmpeg 源转码:

publish: front-door: - rtmp://xxx.rtmp.youtube.com/live2/你的推流密钥 streams: front-door: - ffmpeg:rtsp://admin:password@192.168.1.100:554/stream1#video=h264#audio=aac

结果:有人观看时自动开始推流,没人看自动停,不用你盯着。

出问题了?先查这3处

症状大概率原因一条命令验证
流一直连不上地址或账号密码错ffplay 直连 RTSP
有画面但延迟高用了 RTSP/HLS 观看URL 换 mode=webrtc
有视频没声音音频编码不匹配源后加#audio=copy
浏览器麦克风是灰的麦克风需要 HTTPS给 1984 加反代证书

如果都没命中,去项目 Issue 区搜关键词,大概率有人踩过同一个坑。

想再快一点?

只有当流需要视频转码(比如源是 MJPEG 或 H265)时,加一个#hardware参数就能启用 GPU 硬编码:

streams: front-door: ffmpeg:rtsp://admin:password@192.168.1.100:554/stream1#video=h264#hardware

大多数摄像头直接输出 H264,不转码就是最低延迟,这条可以不用管。更多转码参数见 FFmpeg 源文档,流管理的完整能力看 streams 模块说明。

回到开头那句承诺:摄像头变成浏览器里的低延迟直播,只需要一个配置文件。下一步建议把 WebUI 首页每个流的链接都点一遍,感受同一个流用 WebRTC、HLS、MJPEG 看的效果差别;遇到搞不定的问题直接去项目 Issue 区提问。

【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/12 6:52:22

Python反射机制在爬虫反爬策略中的实战应用

1. Python爬虫进阶:反射机制破解反爬策略实战爬虫工程师最头疼的莫过于精心编写的爬虫运行几天后突然失效。上周我的一个电商价格监控脚本再次被目标网站封杀,这次连IP都被拉黑了。传统解决方案无非是更换代理、随机延时、模拟浏览器,但这些方…

作者头像 李华
网站建设 2026/9/12 6:51:50

SpringBoot自定义Starter开发实战与架构治理

1. SpringBoot自定义Starter核心价值解析在Java生态中,SpringBoot的Starter机制堪称依赖管理的革命性设计。我经历过从早期Spring XML配置地狱到如今开箱即用的时代变迁,自定义Starter的价值主要体现在三个维度:标准化封装:将特定…

作者头像 李华
网站建设 2026/9/12 6:51:25

AI工程从零开始:环境配置、数据处理到模型部署的实践指南

经常有人问我:想转AI工程方向,或者正在做算法想补工程能力,到底该从哪里下手。说实话,我自己的答案也变过好几轮。一开始我跟大多数人一样,先啃深度学习理论,再读论文复现模型,结果在最基础的环…

作者头像 李华
网站建设 2026/9/12 6:50:09

BSP树原理与在图形渲染中的实践应用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/12 6:46:32

AI Agent开发实战:Python工程化落地全链路指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华