机载 ZLMediaKit WebRTC 低延迟浏览器播放实操指南及故障排查
·
一、整体架构说明
机载流媒体服务采用 ZLMediaKit 作为核心流媒体服务器,部署在 LubanCat 机载设备上,核心三大能力:
- 接收 FFmpeg 推送的实时视频流(RTSP 协议)
- 支持多协议转码分发:RTSP / RTMP / WebRTC / HLS,同步推流至地面查看
- 原生内置 WebRTC 能力,浏览器零插件实时低延迟播放视频
二、机载网卡与 IP 地址
LubanCat 机载设备双网卡,两种联网模式对应不同访问 IP,电脑必须与飞机同网段才可通信:
表格
| 网卡名称 | IP 地址 | 连接方式 | 电脑访问 IP |
|---|---|---|---|
| eth0 | 192.168.1.1 | 网线直连 / USB RNDIS 虚拟网卡 | 192.168.1.1 |
| wlan0 | 192.168.0.88 | WiFi 连接路由器 | 192.168.0.88 |
三、端口作用详解
IP 类比楼栋地址,端口为楼栋内房间门牌号,ZLMediaKit 多端口分工独立:
表格
| 端口 | 传输协议 | 核心用途 |
|---|---|---|
| 8080 | HTTP | 后台管理页面 + WebRTC 测试页面 + 所有 HTTP 拉流接口 |
| 8554 | RTSP | FFmpeg 推流接入端口,同时支持 VLC 等客户端 RTSP 拉流 |
| 8000 | UDP | WebRTC 媒体实时数据传输端口,WebRTC 功能必须监听该端口 |
WebRTC 测试页面完整访问地址
http://[飞机IP]:8080/webrtc/
页面说明:内置可视化输入表单,不能直接自动播放,需手动填写流标识(app/stream)才能拉取对应视频流调试。
四、app=live、stream=camera 参数含义
两个参数为 ZLMediaKit 流唯一标识,来源机载源码 precland_node.cpp 第728行 FFmpeg 推流配置:
app:live:应用分类名,等同于视频目录,用于区分多路不同设备推流stream:camera:单路流名称,代表当前机载摄像头视频流
关键规则:FFmpeg 推流填写的 app/stream,浏览器 WebRTC 拉流必须完全一致,服务器才能匹配到对应视频源。
五、WebRTC 无需修改机载代码原理
ZLMediaKit推流、拉流完全解耦架构:
- 推流侧:仅负责接收视频,不关心下游使用什么协议观看(RTSP/RTMP 均可)
- 拉流侧:自动完成协议转封装,客户端无论 WebRTC/HLS/FLV,服务器自动转换输出 类比视频平台:上传者只上传视频,观众可使用任意终端、任意协议观看,上传端无需改动。 当前机载仅需保持 FFmpeg 持续 RTSP 推流,服务器自动转 WebRTC 供浏览器播放,无需修改 precland 业务代码。
六、WebRTC 对比传统 RTSP 优势
表格
| 对比项 | RTSP 方案 | WebRTC 方案 |
|---|---|---|
| 客户端依赖 | 必须安装 VLC/ffplay 播放器 | 仅需现代浏览器,无额外软件 |
| 端到端延迟 | 200~600ms | 100~300ms,实时性更强 |
| 内网 / 防火墙穿透 | 端口固定,穿透困难 | 内置 ICE/STUN 自动打洞 |
| 传输加密 | 明文传输,存在泄露风险 | 默认 DTLS-SRTC 强制加密 |
| 机载代码改动 | 无需修改 | 无需修改 |
七、完整部署 & 操作流程(命令 + 步骤)
步骤 1:查看飞机 eth0 有线 IP
ip addr show eth0 | grep inet
正常输出包含 192.168.1.1
步骤 2:校验 WebRTC 端口 8000 是否监听
ss -ulnp | grep 8000
- 有输出:端口正常,直接跳转步骤 5
- 无输出:缺少 WebRTC 依赖库,执行 3、4 步编译启用 WebRTC
步骤 3:安装 WebRTC 底层依赖 libsrtp
sudo apt install libsrtp2-dev
步骤 4:重新编译启用 WebRTC 的 ZLMediaKit 并重启服务
# 进入编译目录
cd /home/cat/ZLMediaKit/build
# cmake开启WebRTC编译开关
cmake .. -DENABLE_WEBRTC=ON
# 多核编译加速
make -j4
# 重启流媒体服务
sudo systemctl restart ZLMediaKit.service
# 再次校验8000端口
ss -ulnp | grep 8000
再次执行端口查询,出现监听进程代表 WebRTC 编译启动成功。
步骤 5:电脑浏览器拉流播放
- 电脑与机载设备处于同一网段
- 浏览器打开页面:
http://192.168.1.1:8080/webrtc/ - 表单参数填写:
- app:
live - stream:
camera
- app:
- 点击播放按钮,浏览器即可低延迟查看机载实时画面
补充常见问题提示
- 浏览器打不开页面:检查电脑 IP 网段、网线 / WiFi 连接、ZLMediaKit 服务是否启动
- 页面打开但无视频:确认 FFmpeg 正常推流、app/stream 参数填写无误、8000 UDP 端口开放
- 8000 端口无法监听:缺少 libsrtp 依赖,必须重新 cmake 开启 ENABLE_WEBRTC 编译
更多推荐

所有评论(0)