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

一个进程搞定摄像头流协议转换:go2rtc 多设备统一推流实战

一个进程搞定摄像头流协议转换go2rtc 多设备统一推流实战【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc客厅一台 RTSP 摄像头、门口一个云门铃、车库一个 MJPEG 接口看一遍全貌要在三个 App 之间来回切换。go2rtc 是一个用 Go 编写的零依赖流媒体应用它在一个进程里完成摄像头协议转换把各种来源接进来再以 WebRTC、RTSP、HLS 等低延迟格式输出让你在浏览器和手机上统一观看。 一图看懂多源进多端出这张架构图就是它的工作方式左侧输入端可以接几十种来源——RTSP/ONVIF、RTMP、HTTP-FLV/MJPEG/HLS、Apple HomeKit、TP-Link Tapo、Google Nest、GoPro、USB 采集设备等中间是 go2rtc 本体负责轨道混流、编解码器匹配必要时才调用 FFmpeg 转码右侧输出端按各端能播的格式分发——WebRTC、RTSP、MSE/MP4、HLS、MJPEG、HomeKit、RTMP。另外还有一条双向音频支路可以把你的声音推回门铃和摄像头。⚡ 3分钟启动 go2rtc方式一Docker 一行命令推荐官方镜像alexxit/go2rtc已内置 FFmpeg 和 Python支持 amd64、arm64 等多种架构。WebRTC 需要 8555 端口的 TCP/UDP用 host 网络模式最省事docker run -d --name go2rtc --network host --restart unless-stopped \ -v $(pwd)/go2rtc.yaml:/config/go2rtc.yaml alexxit/go2rtc方式二二进制直接运行从官方 Release 页下载对应平台的二进制文件如go2rtc_linux_amd64赋予执行权限后直接运行不需要安装任何系统依赖chmod x go2rtc_linux_amd64 ./go2rtc_linux_amd64两种方式启动后打开http://localhost:1984/即可看到 WebUI 管理界面配置里添加流并保存后能直接在页面播放。默认端口为API/WebUI 1984、RTSP 8554、WebRTC 8555。 场景实战四个高频需求浏览器统一查看多路摄像头把所有摄像头地址写进go2rtc.yaml一行一个streams: living-room: rtsp://admin:password192.168.1.100:554/stream1 doorbell: rtsp://admin:password192.168.1.101:554/stream1 garage: http://192.168.1.102:8080/mjpg/video.mjpg打开http://localhost:1984/的 index 页每路流都会变成可播放的卡片。go2rtc 会自动探测你的浏览器支持哪些编解码器并优先选择延迟最低的 WebRTC 通道手机和电脑都不需要装任何插件。配置也可以在 WebUI 的 config 页直接编辑带语法高亮和错误提示接入 Home Assistant 或 Frigate如果你用 Home Assistant2024.11或 Frigate0.12做录像和 AI 检测可以把录像源直接指向 go2rtc 的 RTSP 输出并在 URL 上加?mp4过滤参数它会挑选 H264/AAC 这类 MP4 兼容的编码rtsp://192.168.1.100:8554/living-room?mp4效果是播放器拿到的就是标准 MP4 兼容流录像文件随处可放不用再逐一适配每台摄像头。把摄像头推到直播平台想做临时直播YouTube、Telegram 等时用内置的 publish 功能经 RTMP/RTMPS 推流。要求视频为 H264、音频为 AAC且 YouTube 不接受无音频的视频publish: living-room: - rtmp://live.example.com/app/your-stream-key streams: living-room: rtsp://admin:password192.168.1.100:554/stream1保存配置后推流即生效不用再挂一个常驻的转码推流服务。在浏览器里和门铃说话对带喇叭和麦克风的设备go2rtc 支持双向音频覆盖 RTSPONVIF T、Tapo、Ring、Doorbird、Tuya、Wyze、小米等大量品牌。把这类设备配成一路流后在 WebUI 的 WebRTC 播放页就能看到麦克风按钮按住即可讲话。注意浏览器只对 HTTPS 页面开放麦克风外网访问时需先套一层带 HTTPS 的反向代理本机 127.0.0.1 访问一般不受此限制。⚖️ 对比与选型go2rtc 替代的是什么对比项go2rtc传统多软件方案协议覆盖数十种输入/输出协议 多品牌私有协议通常 3-5 种部署方式单二进制或 Docker 镜像零系统依赖多个服务 一堆依赖延迟WebRTC 通道接近实时中转/转码链路常超 200ms转码按需拉起 FFmpeg不需要时不占资源常驻转码服务硬件要求树莓派即可运行通常需要桌面级配置如果你的摄像头全部同品牌同协议、且现有观看方式已经够用可以不必换但一旦跨品牌、跨协议或者要同时接浏览器和智能家居统一协议转换层的收益就会很明显。 避坑速查常见问题与解法现象解法观看延迟高改用 WebRTC 通道延迟最低RTSP 客户端测试用ffplay -fflags nobuffer -flags low_delay rtsp://localhost:8554/流名判断是否为客户端缓存个别摄像头放不出来在 WebUI 查看该流实际编码浏览器放不了就加?videoh264audioaac过滤或用ffmpeg:...#videoh264源转码内存/CPU 偏高减少同时开启的流数量确需转码时加#hardware启用硬件加速设备需有对应加速能力浏览器双向音频不可用麦克风仅对 HTTPS 页面开放外网访问前先配好带证书的反向代理排查问题时WebUI 的 net 页可以看到每路流实时的连接、流量和包统计先看这里判断问题出在哪一环 结语go2rtc 把一台摄像头一个 App变成一个进程接所有摄像头家里只要有两台以上不同协议的摄像头就值得花十分钟把第一路流跑起来。更多细节可查阅 README.md 与 internal/streams/README.md。【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

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

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