拓冰建站拓冰建站
首页 / 资讯中心 / 正文

5 分钟把摄像头搬进浏览器:go2rtc 低延迟推流入门指南

5 分钟把摄像头搬进浏览器go2rtc 低延迟推流入门指南【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtcgo2rtc 是一款零依赖的摄像头流媒体应用camera streaming application你把一个 RTSP 地址丢给它它就能立刻在浏览器里以接近实时的延迟播放视频同时自动把这一路流转换成 WebRTC、HLS、MP4、MJPEG、RTSP 等十几种输出格式。对家庭用户、智能家居玩家、开发者来说它是摄像头协议大杂烩问题的终结者——不管摄像头说的是 RTSP、ONVIF、RTMP 还是某家私有协议进来之后统一出口。一路输入、十几种输出go2rtc 能干什么先用一张表看清它的定位再决定要不要花那 5 分钟能力说明典型场景多协议输入RTSP、RTMP、HTTP、ONVIF、MJPEG以及小米、TP-Link Tapo、Wyze、Ring、Nest、HomeKit 等大量私有协议把不听话的摄像头接进统一平台多格式输出WebRTC、MSE/MP4、HLS、RTSP、RTMP、MJPEG、HomeKit、ONVIF、WebTorrent同一路流同时喂给浏览器、FFmpeg、手机 App超低延迟大量协议下零转码直通延迟是各类流媒体方案中最低的一档监控实时查看、对讲双向音频麦克风音频能推回摄像头扬声器Tapo、Wyze、小米、ISAPI 等喊话、远程语音按需转码内置 FFmpeg 源只在必要时转码支持硬件加速转 H264/AAC、修正旋转角度零依赖单文件一个二进制跑遍 Windows / macOS / Linux / ARMNAS、树莓派、软路由随便装它的另一个身份是流媒体路由器Home Assistant、Frigate 等生态项目都直接把它当后端用你通过 HTTP API 或 WebSocket API 可以把它集成进自己的项目。5 分钟跑通从一条命令到看到画面这一步的目标只有一个——先看到视频。装哪种方式都行Docker 用户用第 1 条没有 Docker 的用第 2 条。方式一Docker推荐自带 FFmpegdocker run -d --name go2rtc --network host --restart unless-stopped \ -v ~/go2rtc:/config alexxit/go2rtc方式二二进制从 Releases 页面下载对应系统的压缩包Linux/macOS 记得chmod x然后直接运行./go2rtc_linux_amd64看到进程正常启动后浏览器打开http://localhost:1984/这就是 go2rtc 的 Web 管理界面现在给它加一路流点左侧配置入口在streams下填一行你的摄像头地址保存后界面会立刻出现这个流名点进去就能看到画面播放器会自动在 WebRTC、MSE、HLS、MJPEG 之间挑当前环境延迟最低的方案。streams: hall: rtsp://admin:password192.168.1.123/cam/realmonitor?channel1subtype0到这里最核心的链路已经跑通摄像头 → go2rtc → 浏览器中间没有中间商、没有转码。小结配置里一行 URL 就是一个流流名可以随意起后面所有功能都围绕流名展开。二进制 / Docker / 源码三种安装方式怎么选对比维度官方二进制Docker 容器源码编译main.go 入口适合谁想最少折腾的普通用户已有 Docker / NAS 环境想改代码、跟最新版上手成本下载即跑一条命令需要 Go 环境自带 FFmpeg否需系统安装是否硬件转码需系统装好 FFmpeg 驱动有专用-hardware镜像Intel/AMD/NV/RK35xx自己折腾升级方式重新下载覆盖拉新镜像重新编译选法很简单日常使用选 Docker镜像已预装 FFmpeg 和 Python多架构支持 386 / amd64 / arm只是想看一眼画面选二进制要改代码或尝鲜再走源码可用git clone https://gitcode.com/GitHub_Trending/go/go2rtc获取仓库go run .即可启动。镜像版本细节见 docker/README.md。最小可用配置一份真的能跑的 go2rtc.yaml默认配置什么都不用写就能跑但下面这三个部分是你几乎一定会碰到的。默认情况下 go2rtc 会在当前工作目录找go2rtc.yamlDocker 里则是对应到/config的目录也可以在 WebUI 里直接编辑带语法检查。① streams流的定义核心streams: hall: rtsp://admin:password192.168.1.123/cam/realmonitor?channel1subtype0 desk: ffmpeg:/media/test.mp4#videocopy # 用本地文件当测试摄像头 tapo-1: tapo://192.168.1.100:cam1,admin,pass # 私有协议用专用前缀改什么 → 为什么值是协议前缀://凭据地址换摄像头只改这里。没有摄像头用ffmpeg:前缀加一个本地 MP4 文件就能全流程试跑这是新手最省事的测试手段。② 端口记住三个数字端口用途说明1984WebUI HTTP API浏览器看画面、管理配置8554RTSP 服务器给 Frigate、FFmpeg、NVR 拉流8555WebRTCTCP/UDP低延迟播放与外网访问都要靠它③ 安全别把 1984 裸奔在局域网里默认三个端口对局域网全开意味着同网段任何人不用登录就能看你的摄像头。最常用的一招是把 API 和 RTSP 收回本机api: listen: 127.0.0.1:1984 # WebUI 只允许本机访问外网走反向代理 rtsp: listen: 127.0.0.1:8554需要对外时再配合反向代理Nginx/Caddy或api.username/password加 Basic 认证。另外配置支持${ENV_VAR:default}环境变量语法密码类信息建议走环境变量而不是明文写进 yaml详见 internal/app/README.md。WebUI 里的配置页长这样改完点保存即生效容器会因restart: unless-stopped自动重启加载可选进阶FFmpeg 转码、多源协商与硬件加速以下都属于用到再看不配置不影响前面的一切功能。FFmpeg 源按需转码。格式是ffmpeg:{输入}#{参数}只在真的需要转码时才加比如视频旋转了 90°、要把音频转成浏览器都认的格式streams: rotate: ffmpeg:rtsp://user:pass192.168.1.123/stream#videoh264#rotate90内置了h264、h265、aac、opus等模板参数含义和覆盖方法见 internal/ffmpeg/README.md。多源协商最被低估的功能。一个流可以挂多个源原生 RTSP 一路保证低延迟FFmpeg 转码一路补齐浏览器不支持的音频编码go2rtc 会自动为每个客户端挑最合适的源streams: dahua: - rtsp://admin:pass192.168.1.123/stream - ffmpeg:rtsp://admin:pass192.168.1.123/stream#audioopus码流过滤器。RTSP/HLS/MP4 出口没法像 WebRTC 那样自动探测设备能力可以在链接上手动指定rtsp://192.168.1.123:8554/camera1?mp4录 MP4 用、?videoh264audioaac。硬件加速可选。Docker 用户直接换-hardware镜像并加--gpus allN 卡或保持privilegedIntel/树莓派配置里给 ffmpeg 源加#hardware参数即可镜像差异见 internal/ffmpeg/hardware/README.md。监控与统计。流跑起来后WebUI 的 Net 页能看到每个连接的 IP、协议、码率和流量配合 API 还能导出 JSON/点图格式——排查到底谁在拉流非常有用再往后可以探索的方向publish把任意流推到 Telegram/YouTubeinternal/streams/README.md、preload让慢启动摄像头开机即就绪、以及把 www/ 里的播放器 JS 嵌进自己的项目。自检清单画面出不来按顺序勾一遍遇到没画面时 90% 是下面这几项之一从上到下勾进程活着docker logs go2rtc或终端输出里有正常启动日志浏览器能打开http://localhost:1984/不能 → 1984 被防火墙拦了或被api.listen收回到 127.0.0.1摄像头 URL 本身能通用ffplay rtsp://...或设备厂商 App 单独验证先排除摄像头问题地址/账号/密码对吗注意 URL 里特殊字符如#、?需要转义编码兼容H265 在老浏览器/iPhone 上可能黑屏试试给链接加?videoh264或加一路ffmpeg:转码源参考 README 的 Codecs 一节外网看不到 WebRTC8555 端口需要在路由器同时放行 TCP 和 UDP日志级别调高配置里加log: {level: debug, streams: debug}看具体断在哪一环音频没声音PCMA/PCMU 是 256 级低质量编码很多出口需要转成 AAC/OPUS 才能播还查不出来就把log.level: trace的输出贴给社区基本都能定位。延伸导航项目内文档地图想看什么去哪里全部模块与功能总表internal/README.md配置项完整参考默认值、环境变量internal/app/README.mdHTTP / WebSocket API 说明internal/api/README.mdOpenAPI 描述文件website/api/openapi.yamlWebUI 与自定义播放器www/README.mdFFmpeg 源与硬件加速internal/ffmpeg/README.md各私有协议Tapo/Wyze/小米/Nest…接入参数internal/webrtc/README.md、internal/tapo/README.md流推流、preload、发布internal/streams/README.md上手顺序建议先用 5 分钟跑通看到画面 → 再花 10 分钟改好streams和安全设置 → 之后每遇到一个新摄像头/新需求回到上表按需深入即可。【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门