ZLMediaKit 流媒体服务器用于智能眼镜视频电话的实操原理与步骤
ZLMediaKit 是由开发者夏楚基于 ZLToolKit 异步 C++ 框架开发的开源流媒体服务器,采用 MIT 协议,主打全协议互通、高并发、低延迟与全平台适配。它支持 RTSP、RTMP、HLS、GB28181、WebRTC 等主流协议,实现安防监控与互联网直播协议互相转换,兼顾实时通话、远程巡检、车载视频、嵌入式视频等场景。支持秒开播放、录像回放、鉴权防盗链、集群部署与 NAT 穿透,可作为独立服务或嵌入式 SDK 使用,适配 ARM、x86 等架构。现已成为国内安防视频平台与低延迟直播的核心底层组件,支撑智能眼镜远程通话、国标监控平台等大量项目,形成本土化流媒体技术生态。
一、整体场景说明
智能眼镜视频电话核心需求:眼镜端,嵌入式 ARM 平台采集摄像头画面 + 麦克风音频,实时双向传输,实现低延迟视频通话 ↔眼镜 ↔ 手机 / 网页 / 另一副智能眼镜。

-
智能眼镜硬件特征:多为 ARM Linux/Android 嵌入式系统、算力有限、常处于内网、上行带宽有限、需要百毫秒级低延迟、双向音视频传输
-
核心方案:ZLMediaKit 作为中间流媒体服务,优先用 WebRTC 做双向实时通话,也可搭配 RTMP/HTTP-FLV 做预览,同时兼顾内网穿透、鉴权、转发功能
二、底层实操原理
1. 整体架构
Plain
智能眼镜A(WebRTC推流/通话) ←→ 公网/服务器 ZLMediaKit(WebRTC转发/信令转发/NAT穿透) ←→ 客户端(手机APP/网页/智能眼镜B)
(1)ZLMediaKit 核心工作原理
-
WebRTC SFU 转发模式
-
WebRTC 默认 P2P 在复杂局域网 / 4G 环境易不通;ZLMediaKit 充当 SFU(Selective Forwarding Unit,选择性转发服务器):接收智能眼镜上传的音视频 RTP 流,转发给对端客户端,不做全量转码、节省算力,只做路由转发、协议处理、NAT ICE 协商
-
完成 SDP 信令交互、ICE NAT 穿透、DTLS 加密握手、SRTP 媒体流转发,解决智能眼镜在内网无法直接被外网访问的痛点
-
统一媒体帧模型:把眼镜端 H.264/H.265 视频、AAC/G.711 音频封装为标准 RTP 流,做 GOP 优化、抖动缓冲,降低延迟、防止卡顿
-
支持 SSL 加密传输,WebHook/URL 鉴权保障通话安全,防止非法接入
-
可选配套:同时转 HTTP-FLV 用于后台监控预览、录制 MP4 保存通话记录
-
-
智能眼镜端原理
-
本地音视频采集:调用摄像头、麦克风,编码为 H.264/H.265 + AAC,通过 WebRTC SDK 与 ZLMediaKit 建立双向媒体通道(同时上行发送画面音频、下行接收对方画面音频)
-
眼镜端作为 WebRTC 终端,运行轻量 SDK(C SDK/webrtc 原生 SDK),适配 ARM 嵌入式架构,减少 CPU 占用
-
处理音频回声消除、降噪,适配眼镜微型麦克风噪声问题
-
-
对端客户端原理:手机 / 网页 / 另一眼镜
-
网页端 :利用浏览器内置的 WebRTC API(如
getUserMedia,RTCPeerConnection)与 ZLMediaKit 服务器进行 SDP 信令交换和 ICE 连接。通常配合前端播放器库(如 jessibuca、ZLMediaKit 自带的 WebRTC 播放页面)简化开发。优势在于无需安装客户端,通过 HTTPS 访问即可实现跨平台(电脑、手机浏览器)实时视频通话。关键点包括:必须使用 HTTPS 协议(WebRTC 强制要求),正确处理麦克风/摄像头权限,以及适配不同浏览器的编解码器支持(如 Chrome 偏好 VP8,Safari 偏好 H.264)。 -
Android/iOS手机 APP:集成原生 WebRTC SDK(如 Google 官方 WebRTC 库、即构、声网等第三方 SDK)。APP 作为独立的 WebRTC Peer,通过 SDK 提供的 API 与 ZLMediaKit 建立连接。这种方式性能更优,可以深度定制 UI、处理后台保活、利用硬件编解码,并集成推送、本地存储等原生功能。适用于需要常驻后台、复杂交互或对性能有极致要求的专业场景。
-
另一台智能眼镜:其原理与眼镜端开发类似,同样需要交叉编译 WebRTC SDK 或 ZLMediaKit C SDK 并集成到眼镜的嵌入式系统中。此时,两台眼镜通过 ZLMediaKit 这个 SFU 服务器进行音视频流转发,实现眼镜与眼镜之间的直接通话。这对于双人协同作业(如远程协作维修)、第一视角共享等场景非常有用。需要特别注意两台设备都处于内网时的 NAT 穿透问题,以及功耗和散热管理。
-
2. 关键技术细节
-
延迟保障:ZLMediaKit 协程异步 IO、零拷贝转发、优化 WebRTC jitter buffer,做到几百毫秒以内延迟,满足实时通话
-
NAT 穿透:ZLMediaKit 提供 ICE/STUN 服务,帮助内网智能眼镜完成端口映射,实现外网访问通话
-
编码适配:优先 H.264 减少眼镜端算力开销;支持 H.265 节省带宽
-
流标识:以唯一流 ID,如
smartglasses/room001作为通话房间,实现多方通话路由
三、实操部署步骤
步骤 1:编译部署 ZLMediaKit 服务器
-
拉取源码
bashgit clone shturl.cc/6LMyQSxrAwOtVt6a2EAQLDVVEF5k2cJ6 cd ZLMediaKit mkdir build && cd build cmake .. -DCMAKE_BUILD_TYPE=Release make -j$(nproc) -
编译完成后运行主程序
bash./MediaServer -
修改配置文件
config.ini-
开启 WebRTC、SSL、ICE/STUN NAT 穿透功能,配置公网 IP / 域名、端口(默认 80、443、udp/tcp WebRTC 端口)
-
配置 HTTPS 证书,WebRTC 网页必须 HTTPS 环境,,配置 WebHook 鉴权 / 房间管理
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
-
开放服务器防火墙:TCP/UDP WebRTC 端口、80/443 端口
-
做端口映射 / 配置云服务器安全组,确保外网可访问
-
-
验证服务:通过 ZLMediaKit 自带 WebRTC 测试页面,确认 WebRTC 通话正常、延迟达标
步骤 2:智能眼镜端嵌入式开发适配
-
交叉编译 ZLMediaKit C SDK / WebRTC SDK,适配智能眼镜 ARM 架构(如 ARM64 Linux/Android)
-
移植编译工具链,编译轻量音视频采集 + WebRTC 推流程序,避免占用过多 CPU
-
硬件适配:调用智能眼镜系统摄像头、麦克风 API,采集原始音视频
-
音视频编码:调用硬件编解码器,编码为 H.264+AAC,降低 CPU 功耗
-
-
编写眼镜端程序逻辑
-
指定 ZLMediaKit 公网地址、WebRTC 房间号(例如房间号
smartglasses/room001) -
发起 WebRTC SDP 信令请求、ICE 连接,建立双向 WebRTC 媒体流:
-
上行:眼镜实时画面 + 语音 → ZLMediaKit
-
下行:远端通话方音视频流 → 眼镜屏幕 / 耳机
-
-
增加基础逻辑:通话挂断、重连机制、麦克风静音、本地录像、心跳保活
-
适配低功耗模式:休眠时保持 WebRTC 长连接,防止断连
-
-
测试眼镜本地推流:确认 ZLMediaKit 后台可查看到对应 WebRTC 流,帧率正常、无卡顿
步骤 3:开发 / 配置远端通话客户端
方案 A:电脑 / 手机浏览器,网页客户端
-
使用 JS WebRTC 前端框架(如 jessibuca、ZLMediaKit 配套 WebRTC 页面)
-
填入相同房间号
smartglasses/room001,连接 ZLMediaKit WebRTC 服务,建立双向通话 -
HTTPS 访问,完成麦克风摄像头授权,即可和智能眼镜实时视频通话
方案 B:手机 APP / 另一台智能眼镜
-
同样接入 WebRTC SDK,使用同一个房间 ID 接入 ZLMediaKit,实现多方通话
-
可调用 ZLMediaKit RESTful API 做房间创建 / 销毁、在线状态查询
步骤 4:配套功能配置
-
鉴权与安全:配置 ZLMediaKit WebHook 鉴权 / URL 参数鉴权,仅授权设备可接入视频通话房间,防止陌生人接入
-
通话录制:开启 ZLMediaKit MP4 录制功能,保存重要通话视频,用于巡检 / 售后回溯
-
后台监控预览:ZLMediaKit 把 WebRTC 流转 HTTP-FLV/HLS,实现管理后台实时查看眼镜画面(非双向通话模式)
-
大规模部署集群优化:配置 ZLMediaKit 集群级联,实现多眼镜房间负载均衡
-
网络适配:优化 WebRTC 带宽参数,适配 4G/WiFi/ 蓝牙热点等不稳定无线网络
步骤 5:联调测试 & 调优
-
指标测试:延迟、卡顿率、帧率、CPU 占用、续航
-
优化 WebRTC 抖动缓冲区、降低码率适配弱网
-
完善重连逻辑,处理眼镜信号中断、锁屏断网问题
-
测试 NAT 穿透,验证纯 4G 内网眼镜可正常和外网客户端通话
-
-
压力 / 长时间稳定性测试:7×24 小时长连接巡检通话
四、典型问题与优化
-
内网眼镜无法通话 → 启用 ZLMediaKit ICE/STUN NAT 穿透,配置公网 UDP 端口
-
延迟偏高 → 关闭多余转码,启用零拷贝转发、优化 jitter buffer 参数,优先 UDP WebRTC
-
眼镜功耗过高 → 使用硬件编解码、降低分辨率 / 帧率、Optimize SDK polling logic
-
网页无法 WebRTC → 配置正确 SSL 证书、使用 HTTPS 访问
五、核心示例场景
-
远程运维 / 巡检:一线工程师佩戴智能眼镜实时视频通话,后台专家同步查看眼镜视角画面、双向语音指导维修;ZLMediaKit WebRTC 做实时通话,同时转 HTTP-FLV 做后台监控、MP4 全程录像
-
辅助导航 / 远程陪护:老人 / 视障智能眼镜,和家人手机做低延迟双向视频通话