news 2026/9/12 17:27:29

go2rtc 视频流转发快速指南:5 分钟把摄像头接进浏览器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
go2rtc 视频流转发快速指南:5 分钟把摄像头接进浏览器

go2rtc 视频流转发快速指南:5 分钟把摄像头接进浏览器

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

go2rtc 是一个用 Go 语言编写的视频流转发与协议转换服务。它能从 RTSP、ONVIF、WebRTC、HomeKit 及各品牌私有协议中拉流,再以 RTSP、WebRTC、HLS、MP4、RTMP 等格式重新输出,让你不用装专用 App,直接在浏览器里低延迟播放任意摄像头。适合家庭监控用户、智能家居玩家,以及需要把摄像头接入 Home Assistant、Frigate 等系统的开发者。

适合谁用

三个最常见的情况,中一条就可以继续往下看:

  • 手头的摄像头只出 RTSP 流,想在浏览器或手机上直接看
  • 家里混着小蜜、Wyze、TP-Link、海康、大华等不同品牌设备,想统一成一个入口
  • 要给 Frigate、Home Assistant 或自己的平台喂视频流

安装步骤:推荐 Docker,另有两条路径

路径一(推荐):Docker

镜像alexxit/go2rtc已内置 FFmpeg,开箱即用。启动时暴露三个端口:1984(Web 管理页)、8554(RTSP 服务)、8555(WebRTC,建议 TCP 和 UDP 都开)。

docker pull alexxit/go2rtc docker run -d --name go2rtc \ -p 1984:1984 -p 8554:8554 -p 8555:8555 -p 8555:8555/udp \ alexxit/go2rtc

路径二:二进制文件

从 Release 页面下载对应操作系统(Windows / macOS / Linux / FreeBSD)的文件,零依赖直接运行;Linux 和 macOS 记得先加执行权限:

chmod +x go2rtc_linux_amd64 ./go2rtc_linux_amd64

路径三:源码编译

git clone https://gitcode.com/GitHub_Trending/go/go2rtc cd go2rtc go build -o go2rtc .

三条路径的结果都一样:浏览器打开http://localhost:1984/,进入 Web 管理界面。

快速配置方法:一条流跑起来

配置文件是工作目录下的go2rtc.yaml,最小可用配置只有一行:

streams: 前门摄像头: rtsp://192.168.1.123:554/live

也可以在 Web 界面的 Add 页面直接粘贴 RTSP 地址,go2rtc 会自动探测并建立连接。默认端口分工如下:

端口协议用途
1984TCPWeb 管理页与 HTTP API
8554TCPRTSP 服务,供第三方系统拉流
8555TCP/UDPWebRTC 连接与媒体传输

典型落地场景

场景一:RTSP 摄像头浏览器直播

已有设备:只有 RTSP 输出、没有网页直播的普通 IPC。 做什么:把 RTSP 地址写进streams,浏览器打开 WebUI 的播放页。 得到什么:WebRTC 播放器低延迟画面,无需安装任何客户端,手机同样可访问。

场景二:门铃对讲

已有设备:支持双向音频的摄像头或门铃(RTSP ONVIF Profile T、海康 ISAPI、小米、Wyze、Ring、TP-Link Tapo 等)。 做什么:通过 go2rtc 播放该流,在浏览器麦克风授权后说话。 得到什么:网页端实时对讲。注意浏览器只在 HTTPS 站点下开放麦克风,外网访问需要配好 TLS(API 支持tls_listen)。

场景三:多品牌统一接入下游系统

已有设备:homekit://onvif://xiaomi://wyze://等不同来源混用。 做什么:每个来源各占一个streams条目,go2rtc 统一对外提供 RTSP / HLS / MP4 / WebRTC。 得到什么:Frigate 0.12+ 和 Home Assistant 2024.11+ 原生集成都能直接以rtsp://本机:8554/流名拉流,做录像或 AI 检测,不再各自对接私有协议。

关键能力解析

多协议进出:同一路流,按需用不同格式消费

输入侧覆盖 rtsp、rtmp、mpjpeg、onvif、webrtc、homekit、hls,以及 xiaomi、wyze、tapo、tuya、ring 等私有协议,还能接exec/ffmpeg外部进程和本地 v4l2/alsa 设备;输出侧提供 rtsp、webrtc、rtmp、hls、mp4、mjpeg、homekit、webtorrent。价值在于:同一个摄像头可以同时给浏览器(WebRTC)、NVR 系统(RTSP/MP4)、老播放器(HLS/MJPEG)用,互不冲突。

编解码自动匹配:解决"有流但播不了"

WebRTC 和 MSE 场景下,go2rtc 会探测浏览器能力,从一路流的多个来源里自动挑出能播的编解码器组合。对 RTSP、HLS、MP4 这类无法协商的场景,可以在拉流地址上加过滤器手动指定,例如?video=h264&audio=aac。另外 PCMA/PCMU 这类电话级音频会被自动重打包成 FLAC,使 MSE/MP4/HLS 链路在多数浏览器(包括 Apple 设备)里可播。什么时候最有用:浏览器里只有画面没声音,或 H265 源在部分浏览器黑屏时。

按需转码:默认零转码,需要时才动 FFmpeg

绝大多数场景 go2rtc 直接复制码流,不产生转码开销。只有当源与目标格式不兼容(比如需要旋转画面、换音频编码)时,才为这一路流挂一个 FFmpeg 来源:

streams: 摄像头: - rtsp://192.168.1.123/live - ffmpeg:rtsp://192.168.1.123/live#audio=opus

这样该流里就同时存在"原始 RTSP"和"FFmpeg 转码"两个来源,客户端按能力自动选用。更多参数(分辨率、码率、硬件加速)见 internal/ffmpeg/README.md。

常见问题与避坑

浏览器无法播放或黑屏

  • 先看摄像头源编码:H265 在不少浏览器受限,README 里的编解码兼容对照表可以逐浏览器排查
  • 换播放模式试试:内置页面 www/stream.html 支持mode=webrtc,mse,hls,mp4,mjpeg参数切换技术栈
  • 外网访问 WebRTC 时,确认路由器放通了 8555 端口的 TCP 和 UDP

视频延迟偏高

  • 播放端优先用 WebRTC,这是延迟最低的输出格式;HLS 只适合回放类场景
  • 用 VLC/ffplay 等客户端看 RTSP 时,把缓存调到最低(ffplay 加-fflags nobuffer -flags low_delay
  • 带宽紧张时给流加一条摄像头子码流作为备选来源,让客户端按能力选用

音频没有或对讲失效

  • 确认摄像头本身支持双向音频(ONVIF T、ISAPI、品牌私有协议),纯视频流加不出声音
  • 摄像头端优先选 AAC 音频;PCMA/PCMU 质量低、兼容性差,能不用就不用
  • 浏览器麦克风需要 HTTPS,本地http://localhost除外

进阶方向与资源入口

  • HTTP API/api/streams获取流列表与状态、/api/streams/流名查单路详情、/api/frame.jpeg取快照;完整接口定义见 website/api/openapi.yaml,配置项说明见 internal/api/README.md
  • 连接拓扑监控:WebUI 的 Net 页面展示每条活动连接的协议、格式、包数与字节数;API 侧还能以 json 或 dot 格式导出交互式连接图

  • 自建播放器:www/ 目录下的video-rtc.jsvideo-stream.js可直接嵌入自己的前端,实现自动选路、自动断流重连
  • 集成示例代码:examples/ 里有对接 Home Assistant、MJPEG、RTSP、mDNS 的最小工程
  • 进阶特性:推流到 YouTube/Telegram(RTMP)、启动即预载流、向摄像头反向播音频,见 internal/streams/README.md
  • 安全建议:1984 和 8554 端口默认对整个局域网开放,同网段任何设备都无需认证即可看流。如需收紧,把apirtsplisten改为127.0.0.1,开启local_auth,外网 WebUI 交给反向代理做鉴权;webrtc:8555保留对外即可

下一步

先按 Docker 路径把服务跑起来,接入一路 RTSP 摄像头,确认浏览器画面正常后,再接入 Frigate 或 Home Assistant。遇到问题时,仓库根目录的 README.md 中的编解码对照表和 Tips 章节是最快的排查入口。

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

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

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

云商城微服务架构设计与Spring Cloud Alibaba实践

1. 云商城微服务架构设计解析去年接手公司电商平台重构时,我们选择了微服务架构来应对业务复杂度。云商城这类电商系统天然适合微服务化——商品、订单、支付、物流等模块各自独立演进,又能通过轻量级通信协同工作。采用Spring Cloud Alibaba全家桶的方案…

作者头像 李华
网站建设 2026/9/12 17:18:14

AI Agent深度整合Obsidian知识库的技术解析与实践

1. 项目概述:AI Agent如何深度整合Obsidian知识库 Obsidian作为当前最热门的本地优先知识管理工具,其双向链接和插件生态已经改变了无数人的知识工作流。但直到Obsidian Skills的出现,AI Agent才真正获得了"理解"这个独特知识宇宙…

作者头像 李华
网站建设 2026/9/12 17:16:35

Simulink中DAB双有源桥变换器闭环仿真与PI参数整定全攻略

第一次在Simulink里把DAB(双有源桥)变换器的闭环模型调通,我盯着输出电压波形看了好一会儿。那种感觉和当年调通Buck电路完全不一样,Buck调通是“意料之中”,DAB调通是“如释重负”。开环DAB仿真其实不难搭&#xff0c…

作者头像 李华