机载 ZLMediaKit WebRTC 低延迟浏览器播放实操指南及故障排查

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