尧图精选

在浏览器播放 RTSP 摄像头:go2rtc 入门与避坑指南

🕒 发布时间:2026/9/12 13:34:40 📁 来源:尧图网络
在浏览器播放 RTSP 摄像头go2rtc 入门与避坑指南【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc你家里有一台摄像头从说明书上抄来了它的 RTSP 地址可把这条链路贴进浏览器什么也放不出来只能装厂商 App 或打开 VLC。go2rtc 是一个用 Go 写的摄像头视频流转发应用核心功能就是 RTSP 转 WebRTC 这类流媒体协议转换把 RTSP 源接进来再以 WebRTC、HLS、MP4、MJPEG、RTMP、HomeKit 等 15 种输出格式发给你。这篇文章带你走一遍从启动到看到画面的完整路径并提前把几个高频坑讲清楚。浏览器不认 RTSP卡在哪一步这不是你的操作问题而是浏览器根本不支持用 RTSP 拉流低延迟路径只剩 WebRTCMSE 次之。go2rtc 就插在摄像头和观看者中间一端按 RTSP、ONVIF、RTMP 等协议取流另一端根据你的浏览器能力自动挑选播放方式——桌面 Chrome 走 WebRTCiPhone 走 HLS。它的 main.go 启动时一共注册了 45 个模块从取流、转封装到 Web 接口全部内置所以你不需要再拼 FFmpeg 脚本或第三方服务。3 分钟跑起来最短路径是下载官方 release 里对应系统的二进制当前稳定版 1.9.14覆盖 Windows、macOS、Linux、FreeBSD 共 13 个构建单文件、零依赖Linux 上先chmod x再运行。启动后默认开三个端口1984Web 界面和 HTTP API、8554RTSP 服务器、8555WebRTC 媒体TCP/UDP。在浏览器打开http://localhost:1984/点 Add 填一个摄像头地址就能得到一条可播放的流。./go2rtc -c streams.camera1rtsp://admin:password192.168.1.123/stream # 或者用 Docker镜像里已内置 FFmpeg 和 Python docker run -d -p 1984:1984 -p 8554:8554 -p 8555:8555/udp alexxit/go2rtc一份可以直接抄的 go2rtc.yaml看顺 Web 界面后你会想直接改配置文件它就一个 YAML 文件核心只有 streams 段。streams: hall: rtsp://admin:password192.168.1.100:554/stream1 yard: - rtsp://admin:password192.168.1.101:554/cam/realmonitor?channel1 - rtsp://admin:password192.168.1.101:554/cam/realmonitor?channel1subtype1 webrtc: listen: :8555键是流名播放页和 API 都用这个名字引用流值是源地址一行表示单源多行表示同一个流的多个源比如主码流加子码流。webrtc.listen是媒体端口局域网或外网播放都靠它。在 Web 界面的 Config 页可以直接编辑同一份配置带语法检查和 JSON Schema 补全。它最有辨识度的地方多源编解码匹配go2rtc 最值得说的能力是能从多条源里自动挑出当前客户端真正能播的组合。典型场景摄像头视频是 H.265、音频是 AAC而浏览器 WebRTC 音频只收 OPUS/PCMU/PCMA普通播放器里音频直接没声。此时给同一台相机写两条源即可streams: dahua: - rtsp://admin:password192.168.1.123/stream - ffmpeg:rtsp://admin:password192.168.1.123/stream#audioopus第一条原样直连视频零转码第二条只把音频转成 OPUS。客户端 JS 会按WebRTC 优先于 MSE、MSE 优先于 HLS、HLS 优先于 MJPEG的顺序结合流内实际编解码自动选择。除此之外还有 19 个品牌私有源模块HomeKit、Ring、Wyze、小米、Nest、Tapo 等和 6 种 WebRTC 设备接入格式写法同样是写一行源地址。顺带把双向音频用起来不少摄像头带麦克风和喇叭go2rtc 对 RTSPONVIF Profile T、WebRTC、Ring、Tapo、Wyze、小米等 13 类源支持双向音频在浏览器里对着麦克风说话摄像头那边能听见反之亦然。要注意浏览器只在 HTTPS 页面下开放麦克风本地http://192.168.x.x:1984下只能看不能说外网访问记得配 TLS 或反代。还有个隐藏玩法把流配成空源就能通过 API 把音乐或 TTS 广播推到摄像头喇叭里相机秒变对讲机。排查别看日志先看网络图流有问题时直接打开 Web 界面的 Net 页。每条活跃连接都画成节点IP、协议、编解码、收发包数和字节数一目了然比翻日志快得多。判断为什么卧室那路卡这条连接为什么音频是 PCMA 而那条是 OPUS这类问题以这张图为准。出问题时按这个顺序查画面黑屏或只有音频。几乎总是编解码不匹配相机出 H.265 而你走的播放路径不支持它。先在流信息页确认源里的实际编解码再给该流加一条ffmpeg:...#videoh264的源做转码即可。局域网正常、外网不通。WebRTC 媒体走 8555 端口路由器没放行就不会建连部分对称 NAT 用户的 UDP 打洞失败则需要补 TURN 服务器或改用域名候选地址webrtc: listen: :8555 candidates: - stun:8555延迟明显慢。多半是走了 HLS 或 RTSP 中继端口分段传输天然有缓冲。同一条流改走 WebRTC 播放页即可播放地址加?mode参数还能把几种技术并排对比快慢一眼看清。想再深入一点第一台相机跑通之后可以往三个方向走。生态上Home Assistant 2024.11 有原生 go2rtc 集成Frigate 0.12 也直接把它当流源录像与推流上给 RTSP 中继地址追加?mp4参数即可被 NVR 类软件录制publish配置段支持经 RTMPS 把流推到 Telegram 或 YouTube要求 H.264AAC。安全上默认配置下 1984/8554/8555 三个端口对局域网无认证开放而 API 里有 exec 这类危险能力暴露公网前建议把api和rtsp绑到127.0.0.1或套一层反向代理。接口细节可查 HTTP API 参考examples/ 目录里有 Home Assistant、RTSP 客户端等 Go 示例代码可以参考。【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →