
go2rtc 上手把 RTSP 摄像头变成浏览器秒开的 WebRTC 流【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc浏览器天生放不了 RTSP接一路摄像头往往要装插件、搭转码服务折腾半天。go2rtc 是一个零依赖的视频流转发应用它从 RTSP、ONVIF、RTMP 等协议拉取摄像头画面转成浏览器能直接播的 WebRTC、MSE/MP4、HLS 等格式让你用最短的配置拿到 RTSP 转 WebRTC 的低延迟监控。 一进一出再加双向音频一路流全格式go2rtc 的能力可以按三个方向理解具体模块清单可以看 internal/ 下的各目录说明方向支持的格式摘选输入RTSP/RTMPS/ONVIF、HTTP-FLV/MJPEG/HLS、WebRTC、HomeKit、Tapo/Wyze/小米等厂商协议、本地 v4l2/alsa 设备、exec 脚本输出WebRTC(WHEP)、MSE/MP4、HLS、MJPEG、RTMP、HomeKit、ONVIF双向音频浏览器经 WebRTC 对讲音频可回放到 Doorbird、Ring、TP-Link Tapo、小米、Wyze 等支持该功能的设备也就是说摄像头走哪条协议进来你想用哪条协议出去两边可以自由组合。架构上就是「多协议输入 → go2rtc → 多协议输出 双向音频」一条通路默认端口只有三个记下来后面会反复用到端口用途协议1984Web 界面和 HTTP APITCP8554RTSP 服务器输出 接收推流TCP8555WebRTC 连接TCP/UDP转码与编码协商只在必要时才动 FFmpeg编码不匹配时 go2rtc 分三层处理大多数情况你都不用管自动协商WebRTC 和 MSE/MP4 输出会自动探测你浏览器支持的编码直接选能播的那一路不做任何转码延迟保持在最低水平。内置轻转换PCMA/PCMU/PCM自动打包成 FLAC 供 MSE/MP4/HLS 播放采样率不对的 G.711 自动重采样进 WebRTC这些是默认开启的。FFmpeg 兜底确实需要转码时给同一路流加一个ffmpeg:源即可硬件加速转码由 FFmpeg 负责见 internal/ffmpeg/。RTSP、MSE、HLS 这三类输出无法自动探测客户端能力需要手动加编码过滤器。注意过滤器只负责「从已有编码里选」不能凭空造出新的编码——新编码要靠第 3 层的 FFmpeg 转码。推流与接收go2rtc 也能当服务端除了转发它还能当出口和入口推流publish任意一路流可通过 RTMP/RTMPS 推到 YouTube、Telegram 等直播平台配置细节见 internal/streams/。接收ingest外部应用可以用 FLV、MJPEG、MPEG-TS、RTMP、RTSP、WebRTC 主动往 go2rtc 推流适合做中转汇聚。预热preload启动时预拉指定流对启动慢的摄像头很实用。集成Home Assistant 2024.11 有官方集成Frigate 这类 NVR 则直接消费它的 RTSP 输出做录像。⚙️ 实操5 步从裸机到第一路流第 1 步装好。下载对应系统的二进制文件覆盖 Windows、macOS、Linux、FreeBSDLinux/macOS 需要补一下执行权限chmod x go2rtc_linux_amd64 ./go2rtc_linux_amd64 # 或者 Docker 一行docker run -p 1984:1984 -p 8554:8554 -p 8555:8555 alexxit/go2rtc第 2 步打开 Web 界面。浏览器访问http://localhost:1984/进 Config 页直接编辑go2rtc.yaml编辑器带语法检查也可以自己往程序目录放文件默认在当前工作目录查找。第 3 步加第一路流。最简配置就一行需要转码的摄像头把 ffmpeg 源加在同一路流下面streams: hall-camera: rtsp://admin:password192.168.1.123/cam/realmonitor?channel1subtype0 dahua: - rtsp://admin:password192.168.1.123/cam/realmonitor?channel1subtype0 - ffmpeg:rtsp://admin:password192.168.1.123/cam/realmonitor?channel1subtype0#audioopus第 4 步验证。打开webrtc.html?srchall-camera画面出来就说明链路通了Links 页能看到所有格式的播放地址。第 5 步接入真实平台。给录像类系统Frigate、Home Assistant的 RTSP 地址加过滤参数让它拿到能存 MP4 的编码rtsp://192.168.1.123:8554/camera1?mp4 rtsp://192.168.1.123:8554/camera1?videoh264audioaac http://192.168.1.123:1984/api/stream.m3u8?srccamera1mp4避坑与调优查问题前先对号入座 三个端口默认对局域网开放现象内网任何人打开 1984 就能看你的摄像头公网暴露更是直接失守。原因默认监听0.0.0.0且 API 可调用exec、echo等危险源拿到 API 权限约等于拿到服务器权限。解法只保留外网需要的 WebRTC 端口API 和 RTSP 收回到本机公网访问 Web 界面走反向代理Nginx/Caddy加认证api: listen: 127.0.0.1:1984 rtsp: listen: 127.0.0.1:8554 webrtc: listen: :8555更严格的部署用白名单锁死可用模块和 API 路径app: modules: [api, rtsp, webrtc] api: allow_paths: [/api, /api/streams, /api/webrtc, /api/frame.jpeg] local_auth: true画面出不来或编码不匹配现象某个页面格式能播、另一个不能或 H.265 画面在部分浏览器是黑屏。原因H.265 的浏览器支持参差不齐且 RTSP/HLS/MSE 输出不会自动探测客户端能力。解法先确认摄像头实际输出的编码再给该格式加过滤器如?videoh264audioaac浏览器端优先用 WebRTC 播放它会自动协商出双方都支持的编码。延迟比预期高现象同一台摄像头WebRTC 页面延迟明显小于 RTSP/VLC 观看。原因RTSP 客户端和 HLS 自身带缓冲HLS 分段机制决定了它不适合直播场景。解法看实时画面统一走 WebRTC8555 端口确实用 VLC/ffplay 拉 RTSP 时把客户端缓存调到最低而不是去动 go2rtc 配置。 转码性能吃紧现象多路ffmpeg:源同时工作CPU 占用持续很高。原因CPU 软转码消耗大且每多一路转码源该流的延迟和成本都会上升。解法能不加 ffmpeg 源就不加优先靠编码协商和过滤器解决必须转码的流尽量集中在有硬件加速的机器上跑FFmpeg 源支持硬件加速转码。顺带一提Web 界面的 Net 页会列出所有活跃连接的 IP、格式、协议、包数和字节数排查「到底谁在拉流、走的哪条链路」时比翻日志快得多go2rtc 的定位很克制能零转码就不转码能自动协商就不让你写参数。把streams里第一行配通之后剩下的格式、端口和编码问题基本都能按上面四段对号入座。API 和流管理细节可以再翻 internal/api/ 与 www/ 的文档够你从单机玩法一直用到接入整套智能家居。【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考