ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

go2rtc 完整指南:三步把任意摄像头变成延迟低于 100ms 的 WebRTC 流媒体服务

go2rtc 完整指南:三步把任意摄像头变成延迟低于 100ms 的 WebRTC 流媒体服务 go2rtc 完整指南三步把任意摄像头变成延迟低于 100ms 的 WebRTC 流媒体服务【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtcgo2rtc 是一款用 Go 写的零依赖摄像头流媒体应用把 RTSP、RTMP、MJPEG 等几十种协议作为输入输出为 WebRTC、HLS、MP4、HomeKit 等格式最低延迟可以压到 100ms 以内。想让 RTSP 摄像头在浏览器里流畅播放、双向语音对讲或者把摄像头直接推流到 YouTube 和 Telegram靠它一个独立程序就够了。先解决一个流媒体领域的老大难痛点假设你家有一台海康或大华摄像头你想干三件事在浏览器里看画面、延迟别超过几百毫秒、还能跟门口访客说话。现实是RTSP 流丢进浏览器要么黑屏要么延迟数秒VLC 能播但要手动把缓存调到最低双向音频更是各家私有协议Tuya、Wyze、Tapo、小米每家一套。go2rtc 的思路是把这些都收进一个进程里main.go 中一次性注册了几十个模块覆盖输入协议、输出协议、厂商私有协议和硬件设备。摄像头负责给流go2rtc 负责翻译浏览器、iPhone、录像机各取所需。协议转换全景左侧是各种输入源中间是 go2rtc右侧是各协议输出go2rtc 强在哪一张表说清它和普通转流器的区别能力go2rtc 的做法输入协议RTSP、RTMP、MJPEG、HLS、WebRTC、ONVIF外加涂鸦、Wyze、Tapo、小米、Nest、Ring、GoPro 等 20 多个厂商私有协议输出协议WebRTC、MP4(MSE)、HLS、RTSP、RTMP、MJPEG、HomeKit、WebTorrent 等 14 种延迟WebRTC 路径 100ms多数场景码流直接透传不转码双向音频支持浏览器 ↔ 摄像头双向对讲还能反向向摄像头放音转码策略仅在编解码器不匹配时调用 FFmpeg支持硬件加速部署单二进制零依赖Windows / macOS / Linux / FreeBSD / ARM / Docker 全覆盖最核心的一点是多源编解码协商同一路流可以挂多个来源比如一路原始 RTSP 一路 FFmpeg 转出的 OPUS 音频go2rtc 会自动根据你浏览器的能力挑出能用的那一路不需要你操心兼容性。三步跑起来 go2rtc 流媒体服务主推 Docker 路径因为官方镜像预装了 FFmpeg 和 Python① 启动容器docker run -d --name go2rtc --network host \ -v /opt/go2rtc:/config alexxit/go2rtc② 打开 WebUI浏览器访问http://localhost:1984配置、流列表、连接状态都在这里管理。③ 加一路流进入 Config 页在streams段粘贴摄像头的 RTSP 地址streams: front: rtsp://admin:pass192.168.1.100/cam/realmonitor?channel1subtype0保存后front就能通过webrtc、mse、hls等任意输出端点访问了。其他两种方式一句话带过官方二进制下载后chmod x直接运行Linux/macOS 记得加执行权限或从源码编译git clone https://gitcode.com/GitHub_Trending/go/go2rtc后执行go build -o go2rtc main.go。参数怎么调才顺手别把配置当成填空题记住四个决策点就够了流是唯一的核心概念。一个streams条目要么是一条 URL要么是 URL 列表多来源。后面所有输出、推流、转码都挂在流名上。输出格式用查询参数选不用改配置。同一路流看直播用?modewebrtc延迟最低给录像设备用rtsp://host:8554/camera1?mp4给老设备用 HLS。参数里加videoh264audioaac就是编解码器过滤器它只挑不转转码是 FFmpeg 的事。FFmpeg 只在必要时出现。语法是ffmpeg:输入#参数例如#videocopy#audiopcmu表示视频不转码、音频转成摄像头支持的编码。完整参数模板见 internal/ffmpeg/README.md。密码别硬编码。配置里支持环境变量rtsp://${CAMERA_PASSWORD}192.168.1.100/streamDocker 里通过 env 注入即可。默认端口是 1984API/WebUI、8554RTSP、8555WebRTC如果要外网访问 WebRTC路由器上要把 8555 的 TCP和 UDP都放出来。能落地的几个用法场景门口双向对讲。用www/webrtc.html?srcfrontmediavideoaudiomicrophone打开页面浏览器即可与带双向音频的摄像头互喊。更妙的是反向操作——把本地音频文件放进摄像头喇叭里比如放段驱狗音API 一行命令POST /api/streams?dstfrontsrcffmpeg:/tmp/warn.mp3#audiopcmu#inputfile细节见 internal/streams/README.md。场景一键推流到 YouTube / Telegram。拿到平台的 RTMP 推流地址后写进publish段即可要求 H264 AAC没有音频的 YouTube 直播不认publish: front: - rtmp://a.rtmp.youtube.com/live2/你的key场景接入 Apple HomeKit。在配置里声明一个 HomeKit 配件并绑定流iOS 家庭 App 里就会出现这台摄像头走的是 SRTP 加密通道参考 internal/homekit/README.md。卡住了看这里现象排查方向浏览器黑屏 / 有画无音先开 WebUI 的 Net 页看流里实际有哪些编码器不匹配就加一路ffmpeg:来源让自动协商去选WebRTC 外网连不上检查 8555 端口 TCPUDP 是否双开内网不稳可强制走 TCPwebrtc/tcp模式RTSP 播放延迟高换输出协议而不是调摄像头WebRTC/MSE 远优于 HLSVLC 用户把缓存调到 Lowest Latency音频只有嗡嗡声多半是 PCMA/PCMU64kbps 电话音质播放场景 go2rtc 会自动重打包成 FLAC录 MP4 场景请转成 AAC摄像头开机要等很久加preload:段让流在 go2rtc 启动时就预拉起见 internal/streams/README.md配置改完没生效用www/schema.json给编辑器开语法校验或看 1984 端口的日志按模块单独调log.levelNet 页能看到每条连接的 IP、协议、编码器和字节数是排障第一现场写在最后go2rtc 的定位很清晰一个零依赖的流媒体翻译中枢——输入端兼容到几乎所有能出流的设备输出端覆盖到几乎所有能收流的终端中间能不转码就不转码。选型建议如果你已经在跑 Frigate、Home Assistant 这类项目它大概率是现成的底座如果你只是想把家里那台只会说 RTSP的摄像头变成全平台通用装好它、贴一行配置10 分钟内就能看到效果。想深入某条协议直接读 internal/ 下各模块的 README想二次开发internal/api/README.md 和 website/api/openapi.yaml 是完整的 HTTP API 说明。【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表