ZLMediaKit流媒体服务

使用开源 ZLMediaKit部署流媒体服务

1)使用 ZLMediaKit‑Pro 闭源版本(原生 JT1078,推荐 ruoyi‑qs‑nvr 配套)

2)使用原版 ZLMediaKit + 独立 JT1078 网关(RTVS/jtt1078‑video‑server,Java 开源网关做 RTP 头剥离)

名词 类型 作用 端口 浏览器原生播放

FFmpeg 工具 / 库 音视频编解码、推拉流、转码 无 ---

RTMP 网络直播协议 TCP 直播推拉流 1935 ❌不支持

RTSP 网络监控协议 摄像头 IPC 主流协议 554 ❌不支持

HLS(m3u8) 基于 HTTP 分片协议 网页直播回放 80/443 ✅支持,延迟高 5‑15s

WebRTC 低延迟网页协议 毫秒级网页实时播放 UDP ✅支持

JT/T 1078 转 GB/T 28181 视频流

JT1078:信令 JT/T808(二进制);媒体:RTP+ES(H264/H265 裸帧,无 PS 封装),常用 TCP 传输,车载 4G 无线场景。

GB28181‑2016:信令 SIP;媒体:RTP + MPEG‑2‑PS 复用流;UDP 为主;国标平台只认 PS 封装 RTP 流。

转换需要做两件事:信令转换网关(JT808 ↔ SIP) + 媒体转换(JT1078‑RTP‑ES → PS‑RTP),不必须转码,只做封装复用(编码不变 H264/H265 直接透传)。

FFmpeg

FFmpeg 是一套开源音视频处理工具集(程序 + 库),C 语言写的,跨平台 (Linux/Windows/Mac)。

包含可执行程序 ffmpeg、ffplay、ffprobe,同时提供动态库 libavformat、libavcodec、libavutil 等,可以被 Java/Python/C 程序调用做音视频。

ffmpeg(主程序)能干什么

转码:h264/h265,mp4、flv、mkv 互相转换

推流:把本地文件、摄像头、RTSP 摄像头,推送出去(RTMP/RTSP/HLS)

拉流:拉取网络流,保存文件、转码、转发

切片:生成 HLS (m3u8+ts 分片)

截图、水印、剪辑、混音

你做车载 JT/T1078、ZLMediaKit 流媒体就会高频用到 ffmpeg。

RTMP

RTMP:Real‑Time Messaging Protocol,实时消息传输协议,Adobe 开源的流媒体网络协议

传输层:TCP,可靠传输;延迟一般 1‑3 秒,适合直播

默认端口:1935

封装格式:一般用 flv 封装 h264+aac

RTMP 两个方向

RTMP 推流:编码器(ffmpeg / 摄像头)→ 流媒体服务器 (ZLMediaKit/Nginx‑rtmp)

地址示例:rtmp://127.0.0.1/live/stream001

RTMP 拉流:播放器 ← 流媒体服务器,读取上面这个地址播放

现代浏览器原生不支持 RTMP 播放,浏览器不能直接打开 rtmp:// 地址;

所以服务端经常把 RTMP 转成 HLS (m3u8) / WebRTC 给网页播放。

FMP4服务是什么

FMP4 = Fragmented MP4,分片MP4 ,它不是独立软件,是一种流媒体封装格式 ;所谓"fmp4服务"指流媒体服务(ZLMediaKit/RTVS)把原始H264/H265裸流封装成分片MP4对外输出直播流,浏览器前端通过MSE播放。

vs808项目:车载终端JT/T1078上传H265裸流 → RTVS/ZLMediaKit接收,封装成WebSocket‑FMP4流,网页前端播放车辆实时监控视频,就是你nginx配置里/rtvs/背后的流。

普通MP4 vs FMP4核心区别

  1. 普通MP4 :元数据moov放在文件头部/尾部,必须拿到完整头部才能播放,适合本地文件,不适合直播
  2. FMP4分片MP4
    结构:moov(初始化信息) + (moof分片头 + mdat音视频数据) * N
  • 每一小段视频是独立分片;收到第一个分片就可以播放,不需要完整文件;
  • 支持H265(HEVC)编码,车载监控大量使用H265,FMP4对H265支持很好,FLV对H265兼容性差。

两种常见访问方式

  1. HTTP‑FMP4:http请求拉取分片;
  2. WebSocket‑FMP4:ws长连接持续推送二进制fmp4分片,前端js+MSE接口喂给video标签播放,延迟低,适合车载实时监控。

示例URL(ZLMediaKit/RTVS)

复制代码
ws://ip:30888/live/xxx.live.mp4

和其它流媒体格式对比(车载web监控场景)

格式 典型协议 H265支持 浏览器 延迟 备注
WebSocket‑FLV ws://xxx.live.flv 全部现代浏览器 50‑200ms 老方案,H265坑多
WebSocket‑FMP4 ws://xxx.live.mp4 ✅优秀 现代浏览器 200‑400ms 你的RTVS在用
HLS‑TS m3u8 不支持H265 原生支持 2‑10秒 延迟太高,不适合车载实时预览
HLS‑FMP4 m3u8(fmp4分片) ✅支持H265 原生支持 1‑3秒 低延迟HLS

关键点:浏览器原生video标签不能直接播放fmp4二进制流,必须JS MSE解码,所以前端需要专门播放器(wsPlayer/PyMKUI),不能直接把ws地址丢给video标签。

nginx配置中的位置(本项目

nginx 复制代码
location /rtvs/ {
    proxy_pass http://127.0.0.1:30888/;
    proxy_buffering off;
    proxy_read_timeout 3600s;
    chunked_transfer_encoding on;
}
  • 30888就是RTVS流媒体服务端口;
  • /rtvs/代理转发,对外提供fmp4流(http‑fmp4、ws‑fmp4);
  • chunked_transfer_encoding onfmp4直播流必须开启,分块http传输,不能返回content‑length,否则播放失败。

vs808业务链路完整流程

  1. 车载MDVR终端 → JT/T1078协议上传H265裸视频流 → vs808‑server(java后端)
  2. vs808把流推送给RTVS/ZLMediaKit流媒体服务
  3. RTVS 封装成FMP4分片,对外提供WebSocket‑FMP4流
  4. 网页前端播放器请求 ws://808.sinocesit.cn/rtvs/live/xxx.live.mp4
  5. nginx代理ws连接,把二进制fmp4分片透传给浏览器;前端MSE解码播放画面。

常见踩坑

  1. nginx代理ws‑fmp4忘记chunked_transfer_encoding on,流播放卡住、黑屏;
  2. 老旧浏览器不支持MSE,无法播放fmp4;
  3. H265编码下FLV会花屏/无画面,所以车载平台优先选用FMP4;
  4. fmp4分片需要I帧(关键帧)作为分片起点;终端不上报I帧,会出现一直黑屏。

区分概念

  • fmp4:封装格式(数据包长什么样)
  • WebSocket‑FMP4:传输方式(走ws协议传输fmp4二进制)
  • RTVS/ZLMediaKit:提供fmp4输出的流媒体服务软件
相关推荐
数字化转型分享点滴4 小时前
机加工车间上线 SH‑AIOT 物联网会遇到哪些常见实施难点
python·物联网
鲁邦通物联网4 小时前
出海物联网设备的全球化网络接入与合规脱敏架构:基于 Node-RED 与 C++ 零拷贝的边缘系统设计
网络·物联网·系统架构·边缘计算·边缘计算网关·5g数采·工业级边缘计算网关
星恒讯工业路由器4 小时前
家庭无线组网方式全解析:从单路由到FTTR,哪种适合你?
网络·物联网·智能路由器·路由器·家庭组网·ac+ap·mesh组网
Hello_Damon_Nikola6 小时前
INMP441从入门到精通
单片机·嵌入式硬件·物联网
jkyy201413 小时前
移动出行健康空间崛起:人车家一体化,补齐智慧生活健康短板
人工智能·物联网·生活·健康医疗
baidu_2593395713 小时前
配电室远程监控系统(基于物联网的智能配电安全监管方案)
物联网·动环监控·力安科技·配电室远程监控·电易云
Evand J13 小时前
【MATLAB例程,车联网12】基于模型预测控制(MPC)的网联车辆交叉口生态驾驶动态优化仿真分析。附完整代码的下载链接
物联网·matlab·车联网·mpc·模型预测控制·车辆·网联车辆
龙虾PRO14 小时前
2026 MWC 上海 A‑IoT 商用落地:无源物联工厂仓储改造实操
物联网
优信电子14 小时前
STM32F103C8T6连接ESP-01S实现WiFi通信:TCP客户端开发实战(二)
stm32·嵌入式硬件·物联网·tcp/ip·esp8266·stm32f103c8t6·esp01/01s