3 步在浏览器里直接播 RTSP 摄像头:go2rtc 新手指南
【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc
想用手机看一眼门口摄像头,得先装厂商 App、等广告、再等加载,最后还卡。go2rtc 是一个用 Go 写的轻量摄像头流应用,把摄像头的 RTSP 流转成低延迟 WebRTC,直接在浏览器里播,不用插件也不用等。这篇带你 3 步从装到出画面。
30 秒装好:零依赖单文件程序,跑起来就行
go2rtc 是一个零依赖的单文件可执行程序,不用装 FFmpeg、不用任何运行环境,下载对应系统的版本解压就能跑。Windows 直接解压双击;Linux 和 Mac 先给执行权限:
chmod +x go2rtc_linux_amd64 ./go2rtc_linux_amd64习惯容器就一行:docker run -p 1984:1984 -p 8554:8554 -p 8555:8555 alexxit/go2rtc;Home Assistant 用户也能在 add-on 市场直接装。启动后记住三个默认端口:
| 端口 | 跑什么 |
|---|---|
| 1984 | Web 管理界面和 HTTP API |
| 8554 | RTSP 服务器,给 Home Assistant、Frigate 等程序取流 |
| 8555 | WebRTC 端口,浏览器播放和双向语音走这里 |
写一行配置,1 分钟出画面
装好之后浏览器打开http://localhost:1984/,内置配置编辑器带语法高亮和错误检查,不碰文件也能管配置。最小可用的配置是一个两行的go2rtc.yaml(放程序所在目录,启动自动读取):
streams: hall-camera: rtsp://admin:password@192.168.1.123/cam/stream1回到网页,在左侧点hall-camera就能播。WebRTC 输出时 go2rtc 会自动匹配你浏览器支持的编码组合,不用手动挑格式。
三个真实用法
1. 浏览器放不了 H265?加一个转码源——不少摄像头默认输出 H265,而大多数浏览器播不了。给同一个流加一个 FFmpeg 源转成 H264:
streams: cam1: - rtsp://admin:password@192.168.1.123/stream1 - ffmpeg:rtsp://admin:password@192.168.1.123/stream1#video=h264go2rtc 会按源和客户端协商,哪个源在当前浏览器里播得好就用哪个,手机和电脑各取所需。
2. 门铃双向语音——摄像头支持双向音频时,把协议前缀换成厂商私有协议即可。以海康为例:
streams: doorbell: isapi://admin:password@192.168.1.123:80/在浏览器里打开这个流,就能直接和门口的人对话;注意浏览器要用 HTTPS 才能给你麦克风权限。
3. 把流推到外面——想在外面用手机看,或者推给直播平台,加一行 publish 直接走 RTMP 推出去:
streams: live: - rtsp://admin:password@192.168.1.123/stream1 - publish: rtmp://a.rtmp.youtube.com/live2/YOUR_KEY而"让别的程序来取流"的场景,把它 8554 端口当普通 RTSP 源指过去就行。
踩坑速查:4 个常见现象怎么解
| 现象 | 可能原因 | 处理办法 |
|---|---|---|
| 连不上、没画面 | 地址或账号错、防火墙拦截 | 先用本地播放器验证地址能播,再改配置 |
| 视频黑屏 | 浏览器不支持摄像头编码(H265 常见) | 流里加ffmpeg:...#video=h264转码 |
| 听不到声、说不了话 | 摄像头 PCMA/PCMU 编码与浏览器不匹配;麦克风需 HTTPS | 加第二个源#audio=opus;页面改走 HTTPS |
| 多看一路 CPU 飙高 | 软件转码吃 CPU | 加#hardware或#hardware=vaapi走 GPU |
进阶:两个值得知道的开关
硬件加速转码:默认关闭。用 FFmpeg 做视频转码时加一个参数就能把活交给 GPU,引擎可选 vaapi、cuda、dxva2、videotoolbox,各平台支持情况见 internal/ffmpeg/hardware/README.md:
streams: cam_hw: ffmpeg:rtsp://admin:password@192.168.1.123/stream1#video=h264#hardware=vaapi编码过滤:不想转码、只想挑编码时,在 RTSP 地址上加查询参数,比如rtsp://host:8554/cam1?video=h264&audio=aac,只从源里选匹配的轨。
FFmpeg 源完整参数见 internal/ffmpeg/README.md,WebRTC 协商细节见 internal/webrtc/README.md。
go2rtc 现在跑起来了,接下来可以试试:
- 打开 Net 页面,看看手机看流时连接统计长什么样
- 用 publish 推一路流出去,在外网用手机收
- 把一台摄像头换成 tapo:// 或 xiaomi:// 协议,体验双向语音
【免费下载链接】go2rtcUltimate camera streaming application项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考