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

go2rtc:把不同协议的摄像头流统一转成浏览器能播的格式

go2rtc把不同协议的摄像头流统一转成浏览器能播的格式【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc客厅、门口、车库各装了一台摄像头品牌不同、协议不同有的只吐 MJPEG 快照流。你想在浏览器里同时看到三路画面还想把同一股流喂给录像和检测系统。go2rtc 解决的就是这个问题它是一款用 Go 写的流媒体转换应用把摄像头侧的流取进来重新封装成客户端想播的格式编解码对不上时才调用 FFmpeg 转码平时只是转发。核心能力多协议输入多格式输出它做的事是一行进、多格式出配置里streams段声明源源端协议覆盖 RTSP、RTMP、ONVIF、MJPEG、HLS、HomeKit以及 Tapo、Wyze、小米等私有协议输出端把同一股流同时以 RTSP、WebRTC、HLS、MP4MSE、MJPEG 等格式提供给不同的客户端。最小配置就是一行形如hall-camera: rtsp://admin:password192.168.1.123/...。流登记后浏览器打开内置 WebUI 就能直接播第三方软件走 RTSP 拉取内置播放器会按流里实际有的轨道和浏览器能力自动挑选播放路径相关实现在 www/。各模块和协议的完整对应关系可以查 internal/。自动协商编解码器浏览器支持的编解码器各家不同摄像头音频常常是 AAC而浏览器手里只有 OPUS。go2rtc 会自动探测客户端能力从流里现成的轨道中挑最兼容的一条实在放不出来时加一条 FFmpeg 转码源即可比如ffmpeg:rtsp://...#audioopusgo2rtc 会在两个源之间自动挑选组合这就是官方说的多源双向编解码协商。不确定最终播出去的是哪条轨道时看 WebUI 的 net 页它把每条连接的协议、编解码、包数和字节数都画在了一张连接拓扑图上双向音频对支持双向音频的设备Tapo、小米、Ring、大华 ISAPI 等浏览器里的麦克风可以直接说话到摄像头扬声器反过来也可以把本地音频文件或直播流放到摄像头里stream to camerav1.3.0 起支持。这里有个坑浏览器只在 HTTPS 页面放开麦克风权限所以远端做双向音频要配一层 TLS 反向代理。跑起来最省事的路径是 Docker镜像预装了 FFmpeg覆盖 amd64、arm64、armv7 等架构挂载一个配置目录后 WebUI、RTSP、WebRTC 服务就都起来了。docker run -d --name go2rtc --network host --privileged \ --restart unless-stopped -v ~/go2rtc:/config alexxit/go2rtc启动后打开http://localhost:1984就能在浏览器里改配置。不想用容器可以下载对应系统的二进制文件加执行权限后直接运行配置文件go2rtc.yaml默认从当前工作目录读取。需要改源码就 clone 仓库后用go build编译三种路径最终都是同一个无运行时依赖的单二进制。配置文件长什么样配置就是一个 YAML 文件可以在 WebUI 里直接编辑带语法高亮和校验。最精简的时候只有 streams 段其余全部走默认值streams: hall-camera: rtsp://admin:password192.168.1.123/cam/realmonitor?channel1subtype0几个关键点1984 是 WebUI 和 HTTP API8554 是 RTSP 输出服务8555 是 WebRTC 连接端口TCP/UDP要跨机器播 WebRTC 这三个都得通。命令行可以用-c keyvalue覆盖单个配置项也能传多个配置文件、后者覆盖前者方便把设备地址和端口设置分开管理。典型用法在 Frigate 里引用 go2rtc 的流Frigate0.12 起官方支持把 go2rtc 当流源原始 RTSP 地址写在 go2rtc 里Frigate 从本地 RTSP 拉流用?videoh264过滤选轨道。摄像头只出 H265 的话在 go2rtc 里加一条ffmpeg:xxx#videoh264的源先转码Frigate 侧就能稳定 detect。# go2rtc.yaml streams: front-door: rtsp://admin:password192.168.1.100/stream1 # Frigate 配置 cameras: front: ffmpeg: inputs: - path: rtsp://127.0.0.1:8554/front-door?videoh264 roles: [detect]在 Home Assistant 里加摄像头Home Assistant 提供官方 go2rtc 插件WebRTC Camera 自定义组件同理装好插件后把流加进 go2rtc 配置前端就会多出对应的摄像头实体走 WebRTC 回看双向音频功能一并可用不必在 Home Assistant 里为每台相机单独配置 RTSP 源。注意事项开始之前记住四件事。第一是安全1984 和 8554 默认对整个局域网开放同一网络里的人可以直接看流不需要暴露就把listen绑到 127.0.0.1API 还带 exec/echo 这类可执行命令的入口对外暴露务必配反向代理认证。第二是延迟WebRTC 播放延迟最低HLS 分片天生偏高Frigate 这类录像场景给 RTSP 链接加?videoh264过滤即可。第三是转码开销FFmpeg 源加#hardware参数可启用硬件加速Docker 镜像支持但 drawtext 叠加文字这类滤镜即使有加速也费 CPU。第四是 Apple 生态兼容iOS 不支持 HTTP 渐进下载旧版本也没有 MSE手机上 HLS 基本是唯一可靠路径别指望和 PC 浏览器同样的体验。下一步往go2rtc.yaml里加一条 RTSP 流打开http://localhost:1984分别用 webrtc 和 mp4 两种方式回放同一股流两种路径的差异一眼就能看懂整个机制。【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

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

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