欢迎光临
我们一直在努力

只有RTSP的老摄像头,如何变成手机浏览器里的实时画面:go2rtc视频流转发上手指南

只有RTSP的老摄像头,如何变成手机浏览器里的实时画面:go2rtc视频流转发上手指南

【免费下载链接】go2rtc Ultimate camera streaming application 【免费下载链接】go2rtc 项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc

老摄像头接入的第一道坎,往往不是硬件。很多老式监控只会吐RTSP流:浏览器没有播放器,手机上没有App,电脑端得开客户端才能看。设备本身没毛病,只是协议太旧。

go2rtc用一层转发服务解决这类"协议鸿沟"。它先以RTSP源连上摄像头,再把同一路流分发成WebRTC、HLS、RTMP、HomeKit等协议。接上之后,浏览器开个页面就是亚秒级的实时画面,不用装任何插件。

go2rtc视频流转发架构图,展示RTSP转WebRTC等多种协议的输入输出连接

零依赖、亚秒延迟、协议全覆盖

为什么它这么轻?看三句话就够。单文件二进制,不依赖运行环境,Windows、macOS、Linux下载就能跑。WebRTC延迟在亚秒级,浏览器直接看。输入输出覆盖RTSP、RTMP、WebRTC、HLS、HomeKit、ONVIF等协议,还支持双向音频,网页麦克风可以直接和摄像头那头对话。

从零跑起来:三步把画面挂上屏

启动服务:Docker或二进制任选

Docker最省事,一行拉镜像、一行起容器:

docker pull alexxit/go2rtc
docker run -p 1984:1984 -p 8554:8554 -p 8555:8555 alexxit/go2rtc

另一条路是下载对应系统的二进制直接运行,不需要额外依赖,Linux和macOS可能要先把执行权限加上。想要自编译的版本,clone源码后自行构建即可。记住三个端口:1984是Web管理界面,8554是RTSP服务,8555是WebRTC。

写好go2rtc.yaml,浏览器打开1984

go2rtc配置的核心是一个纯yaml文件,主体是streams:每个摄像头一个键,摄像头地址就是列表项:

api:
listen: ":1984"
rtsp:
listen: ":8554"
webrtc:
listen: ":8555"
streams:
客厅摄像头:
– rtsp://admin:password@192.168.1.100:554/stream
门前摄像头:
– rtsp://192.168.1.101:554/live

保存后重启,打开 http://localhost:1984/ 就能看到摄像头列表。当然也可以不写配置文件:在网页点"Add",把RTSP地址粘进去,go2rtc会自动探测并连上,画面直接出来。

go2rtc Web管理界面中的摄像头流与配置项编辑页面

多品牌摄像头接入:一套入口混着用

品牌一多,转发层就显出价值了。以最常见的RTSP转WebRTC为例:小米系智能摄像头支持HomeKit,摄像头接入HomeKit只需写成 homekit://设备地址;传统的大华、海康一般走 rtsp://;支持ONVIF标准的设备用 onvif://。三类源混在streams里,进来之后出口统一是WebRTC、HLS、RTMP,按需要取用。

视频编码会按浏览器能力自动协商,H264和H265之间自动选。不少摄像头带主、子两路流,同一stream下写 – main 和 – sub 两行就能分开下发,子码流码率低,适合手机端看。

把摄像头变成直播源:往平台转发

摄像头流不止能看,还能推向直播平台。源可以是一条本地采集命令,形如 exec:ffmpeg -f v4l2 -i /dev/video0 -c:v h264 -f flv -,出口写成直播平台的 rtmp:// 地址即可。想让go2rtc顺手做转码,在源地址后追加参数就行,比如 #video=h264#audio=aac#fps=30#resolution=1920×1080,它会按指定参数处理后输出。

按症状动手:调优与排障速查

调优:硬件加速、缓冲区与主子码流

转码任务重,先看硬件加速:ffmpeg 下写 hwaccel,Intel选vaapi、NVIDIA选cuda、macOS选videotoolbox。网络抖动、偶尔卡顿,给流设置buffer,比如500ms。观看端带宽参差,就用主子码流方案,大屏吃高清,手机吃子码流。

排障:三个常见症状

  • 视频延迟偏高:先查带宽;带宽够的话把观看协议从RTSP换成WebRTC,再降码率、开硬件加速。
  • 浏览器播不出来:WebRTC要求HTTPS;浏览器不支持就改用MP4或HLS观看;同时确认8555(WebRTC端口)在防火墙里是放开的。
  • 音频没反应:确认摄像头确实支持双向音频(WebRTC、ONVIF、ISAPI等协议都支持);编解码对不上时,可以让go2rtc把PCMA/PCMU自动转成FLAC,或直接用FFmpeg转码;浏览器端记得放行麦克风。

API、智能家居集成,以及去哪找文档

管理界面本身就是一套HTTP API,查询全部流只要一个GET:

curl http://localhost:1984/api/streams

新增流则是向同一路径POST,带上name和urls即可。智能家居生态这边:Home Assistant 2024.11+有原生集成,Frigate 0.12+把它当作视频处理核心,OpenIPC摄像头固件和wz_mini_hacks里也有集成方案。

想看网络状态,打开Web端的Net页面,每一路流的传输状态和拓扑会实时画出来。

go2rtc网络监控页面实时展示视频流传输状态与拓扑

文档方面:根目录的README.md是总览,internal/ 下每个模块自带README,examples/ 有RTSP客户端、MJPEG服务等示例,website/ 里放着管理接口的OpenAPI定义。端口要对内网暴露时,建议把api的listen改成 127.0.0.1:1984,并设置username和password,别让监控流直接裸奔。

【免费下载链接】go2rtc Ultimate camera streaming application 【免费下载链接】go2rtc 项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

赞(0)
未经允许不得转载:171主机测评 » 只有RTSP的老摄像头,如何变成手机浏览器里的实时画面:go2rtc视频流转发上手指南
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址