当前位置: 首页 > article >正文

从安防摄像头到直播:手把手教你用ZLMediaKit搭建GB28181视频监控平台

从安防摄像头到直播手把手教你用ZLMediaKit搭建GB28181视频监控平台在智能安防和物联网快速发展的今天视频监控系统的网络化和智能化已成为行业标配。GB28181作为国内视频监控领域的国家标准协议实现了不同厂商设备间的互联互通。而ZLMediaKit作为一款轻量高效的流媒体服务器其对GB28181协议的完整支持为开发者提供了快速构建监控平台的利器。本文将深入讲解如何利用ZLMediaKit搭建完整的GB28181视频监控系统涵盖从摄像头接入、流媒体处理到多终端分发的全流程。不同于基础教程我们会聚焦安防监控这一垂直场景分享实际项目中的配置技巧和性能优化经验。1. GB28181协议与ZLMediaKit架构解析GB28181协议定义了视频监控设备间的通信规范包括设备发现、媒体传输、网络存储等核心功能。其核心优势在于标准化互联打破厂商壁垒实现不同品牌设备互通级联管理支持多级平台间的设备管理和视频调阅安全传输采用SIP协议进行信令交互支持多种加密方式ZLMediaKit作为流媒体中间件在GB28181系统中扮演着关键角色[设备层] IPC/NVR ——(GB28181)—— [媒体层] ZLMediaKit ——(RTSP/RTMP/HLS)—— [应用层] 客户端/存储其核心处理流程包括通过SIP协议与设备建立连接接收RTP封装的PS流GB28181标准格式转封装为RTSP/RTMP等通用流媒体协议实现多路分发和录制存储2. 环境搭建与基础配置2.1 服务器部署推荐使用Ubuntu 20.04 LTS作为基础系统硬件配置建议组件最低配置推荐配置CPU4核8核及以上内存4GB16GB存储100GB1TB SSD网络1Gbps10Gbps安装依赖环境# 安装基础编译工具 sudo apt update sudo apt install -y build-essential cmake # 安装ZLMediaKit依赖 sudo apt install -y libssl-dev libsdl-dev libavcodec-dev libavutil-dev从源码编译ZLMediaKitgit clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit cd ZLMediaKit git submodule update --init mkdir build cd build cmake .. -DCMAKE_BUILD_TYPERelease make -j$(nproc)2.2 关键配置调整修改conf/config.ini中的核心参数[rtp] # 增大视频MTU以适应高清流 videoMtuSize1400 [rtsp] # 启用TCP传输模式 directProxy1 [hls] # 设置HLS切片时长 segDur2 segNum3提示生产环境中建议开启hook鉴权机制防止未授权访问。3. GB28181设备接入实战3.1 摄像头网络配置以海康威视摄像头为例配置步骤登录摄像头Web管理界面进入「网络」-「高级配置」-「平台接入」启用GB28181协议填写服务器SIP信息SIP服务器ID34020000002000000001SIP服务器IPZLMediaKit服务器地址SIP服务器端口5060传输协议UDP设置本地SIP端口默认50603.2 ZLMediaKit接收配置使用API接口创建RTP接收端口curl http://127.0.0.1/index/api/openRtpServer?secret035c73f7stream_idcamera01port0返回结果示例{ code: 0, port: 52183 }关键参数说明stream_id设备唯一标识建议使用摄像头编号port设为0表示自动分配端口3.3 信令交互流程完整的GB28181信令交互包含以下阶段注册阶段摄像头向服务器发送REGISTER请求心跳保活定期发送MESSAGE消息维持连接视频请求服务器发送INVITE请求建立媒体通道媒体传输摄像头通过RTP发送PS封装流会话终止发送BYE结束会话注意确保服务器5060(SIP)和RTP端口在防火墙中开放。4. 流媒体处理与分发4.1 协议转换与转码ZLMediaKit支持多种输出协议输入协议输出协议适用场景延迟GB28181RTSP专业客户端1-3sGB28181RTMP直播平台2-5sGB28181HLS移动端回放10sGB28181FLVWeb播放3-5s启用FFmpeg转码需提前安装FFmpeg[ffmpeg] cmd%s -i %s -c:v libx264 -preset superfast -tune zerolatency -c:a aac %s4.2 多终端适配方案Web端播放配置script srchttps://cdn.jsdelivr.net/npm/flv.js/dist/flv.min.js/script script const player flvjs.createPlayer({ type: flv, url: http://your-server/live/camera01.flv }); player.attachMediaElement(videoElement); player.load(); player.play(); /script移动端适配建议iOS使用HLS协议.m3u8Android优先使用RTMP或FLV微信小程序需使用HTTPS-FLV4.3 录像与存储管理启用定时录像curl http://127.0.0.1/index/api/startRecord?type1vhost__defaultVhost__applivestreamcamera01存储目录结构示例/record/ ├── live/ │ ├── camera01/ │ │ ├── 2023-08-01/ │ │ │ ├── 10-00-00.mp4 │ │ │ └── 11-00-00.mp4 │ │ └── 2023-08-02/ └── alarm/ └── camera01/ └── 2023-08-01_14-30-00.mp45. 性能优化与问题排查5.1 高并发优化策略负载均衡部署多台ZLMediaKit实例使用Nginx进行RTMP/HLS分流分级缓存graph LR A[边缘节点] -- B[区域中心] B -- C[核心机房]硬件加速[ffmpeg] cmd%s -i %s -c:v h264_nvenc -preset p7 -tune ll %s5.2 常见问题解决方案问题一视频卡顿检查网络带宽iftop -i eth0调整MTU大小videoMtuSize1400降低视频码率通过FFmpeg转码问题二延迟过高启用TCP传输directProxy1使用低延迟模式-tune zerolatency关闭合并写mergeWriteMS0问题三设备掉线检查SIP心跳tcpdump -i any port 5060 -vv调整超时时间[general] streamNoneReaderDelayMS300006. 进阶应用场景6.1 智能分析集成通过ZLMediaKit的hook机制与AI分析平台对接[hook] on_flow_reporthttps://ai-platform.com/on_flow on_stream_changedhttps://ai-platform.com/on_event典型工作流视频流输入到分析服务器AI检测异常事件入侵、烟火等触发报警并截图推送告警信息到管理平台6.2 级联与跨域组网大型监控系统组网方案[区县平台] --GB28181-- [市级平台] --GB28181-- [省级平台]配置要点每级平台分配独立的SIP ID设置正确的域(Domain)参数配置级联权限和流媒体路由6.3 云端协同架构混合云部署模式# 云端转发命令示例 ffmpeg -i rtsp://local-server/live/camera01 -c copy -f flv rtmp://cloud-server/live/camera01优势本地处理实时分析云端存储长期录像CDN加速远程访问在实际项目中我们曾遇到200路摄像头并发接入的场景。通过调整threadsLoad参数和优化FFmpeg参数最终在32核服务器上实现了稳定运行平均CPU负载控制在70%以下。关键发现是GB28181的PS头解析会消耗较多CPU资源适当增加rtp_proxy线程数能显著提升性能。

相关文章:

从安防摄像头到直播:手把手教你用ZLMediaKit搭建GB28181视频监控平台

从安防摄像头到直播:手把手教你用ZLMediaKit搭建GB28181视频监控平台 在智能安防和物联网快速发展的今天,视频监控系统的网络化和智能化已成为行业标配。GB28181作为国内视频监控领域的国家标准协议,实现了不同厂商设备间的互联互通。而ZLMed…...

Shiny框架终极指南:输入控件与输出渲染的完美交互原理

Shiny框架终极指南:输入控件与输出渲染的完美交互原理 【免费下载链接】shiny Easy interactive web applications with R 项目地址: https://gitcode.com/gh_mirrors/sh/shiny Shiny是R语言生态中一款强大的交互式Web应用框架,它让数据科学家和分…...

MedGemma-X精彩案例分享:自然语言提问触发的专业级影像分析报告

MedGemma-X精彩案例分享:自然语言提问触发的专业级影像分析报告 1. 重新定义智能影像诊断的新标杆 想象一下这样的场景:一位放射科医生面对堆积如山的X光片,只需要用自然语言问一句"这张胸片有没有肺炎迹象?"&#xf…...

cobalt数据库设计解析:如何平衡性能与数据完整性

cobalt数据库设计解析:如何平衡性能与数据完整性 【免费下载链接】cobalt best way to save what you love 项目地址: https://gitcode.com/GitHub_Trending/cob/cobalt 引言:数据库设计的永恒矛盾 在软件开发领域,数据库设计始终面临…...

Nunchaku-flux-1-dev生成效果对比:不同采样器与步数下的画质差异

Nunchaku-flux-1-dev生成效果对比:不同采样器与步数下的画质差异 最近在玩AI生图的朋友,估计都绕不开一个话题:怎么调参数才能让图更好看?是选个快的采样器,还是选个慢的但质量高的?采样步数到底调到多少才…...

Optick多线程性能分析:游戏引擎中的并发性能优化实战

Optick多线程性能分析:游戏引擎中的并发性能优化实战 【免费下载链接】optick C Profiler For Games 项目地址: https://gitcode.com/gh_mirrors/op/optick Optick是一款专为游戏开发打造的C性能分析工具,能够精准捕捉多线程应用中的性能瓶颈&…...

[特殊字符] Nano-Banana部署教程:Ubuntu/CentOS环境下的镜像拉取与启动

Nano-Banana部署教程:Ubuntu/CentOS环境下的镜像拉取与启动 1. 项目简介 Nano-Banana是一款专门为产品拆解和平铺展示风格设计的轻量级文本生成图像系统。这个项目的核心在于深度融合了Nano-Banana专属的Turbo LoRA微调权重,专门针对Knolling平铺、爆炸…...

仅限前500位开发者获取:20年MCP协议老兵手写《Python服务器模板源码认知地图》PDF+可执行调试镜像

第一章:MCP协议核心原理与Python服务器模板设计哲学MCP(Model Control Protocol)是一种轻量级、面向模型交互的双向通信协议,专为AI代理系统与外部工具服务之间的结构化指令交换而设计。其核心在于以JSON-RPC 2.0为传输语义基础&a…...

DynamicColor跨平台开发指南:iOS、macOS、watchOS的统一颜色解决方案

DynamicColor跨平台开发指南:iOS、macOS、watchOS的统一颜色解决方案 【免费下载链接】DynamicColor Yet another extension to manipulate colors easily in Swift and SwiftUI 项目地址: https://gitcode.com/gh_mirrors/dy/DynamicColor DynamicColor是一…...

LeetCode 11. Container With Most Water 题解

LeetCode 11. Container With Most Water 题解 题目描述 给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条…...

深入解析C++中获取进程模块基址的高效实现方法

1. 为什么需要获取进程模块基址 在Windows系统编程中,获取进程模块基址是一个基础但极其重要的操作。简单来说,模块基址就是某个DLL或EXE文件被加载到内存中的起始地址。这个地址就像是模块在内存中的"门牌号",有了它我们才能找到模…...

初识Git,带你深入学习Git相关的知识

在之前的博客中,我都会在博客的开头放一个gitee的链接。Gitee是什么呢?它是一个远程的代码托管库。在我们学习和项目管理的时候起着非常重要的作用。 本期我就带领着大家一起学习Git相关的知识内容。学习它的操作,了解其在企业级开发中的作用…...

League-Toolkit:重新定义英雄联盟游戏体验的智能助手

League-Toolkit:重新定义英雄联盟游戏体验的智能助手 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League-Toolkit …...

【Python并发革命】:GIL解除后首个生产级无锁插件生态正式开放下载(限时72小时)

第一章:Python并发革命的里程碑意义 Python 并发模型的演进并非渐进式改良,而是一场深刻重塑编程范式的革命。从早期依赖线程与锁的阻塞式模型,到 asyncio 的异步 I/O 抽象、async/await 语法糖的引入,再到结构化并发(…...

从云端到指尖:巧用Aspose组件实现Office/PDF文档秒级HTML预览,攻克移动端大文件访问瓶颈

1. 移动端大文件预览的痛点与解决思路 最近接手一个企业级项目时,遇到了一个非常典型的场景:用户通过PC端上传各种办公文档(Word、Excel、PPT、PDF),需要在移动端随时查看。但当文件体积较大时(比如超过50M…...

保姆级教程:用OpenAI Whisper给视频自动生成字幕(附Python代码)

视频创作者必备:用Whisper打造高效字幕工作流 每次剪辑视频最头疼的就是加字幕?作为过来人,我完全理解那种对着时间轴逐帧调整的痛苦。直到发现Whisper这个神器,我的工作效率直接翻了三倍。今天就把这套全自动字幕生成方案完整分享…...

告别兼容性问题:手把手教你用canvas和base64转换TIFF图片

前端工程师必备:TIFF图片处理全攻略与实战解决方案 在当今数字内容爆炸式增长的时代,图片处理已成为前端开发中不可或缺的一环。作为专业开发者,我们经常需要面对各种图片格式的兼容性问题,其中TIFF(Tagged Image Fil…...

Godep历史意义揭秘:Go依赖管理工具的开创者如何改变开发方式

Godep历史意义揭秘:Go依赖管理工具的开创者如何改变开发方式 【免费下载链接】godep dependency tool for go 项目地址: https://gitcode.com/gh_mirrors/go/godep Godep作为Go语言依赖管理工具的开创者,在Go生态系统的演进历程中扮演了至关重要的…...

PyTorch 3.0静训性能断崖预警:当AllReduce延迟>8.3ms或图编译耗时>117s时,你的训练任务已在 silently fail——附实时诊断CLI工具

第一章:PyTorch 3.0静态图分布式训练的静默失效危机全景PyTorch 3.0 引入的 TorchScript 静态图编译机制与 torch.distributed 的深度耦合,在多节点多卡场景下暴露出一类高危静默失效现象:训练进程持续运行、梯度同步无报错、loss 曲线看似收…...

IDEA插件开发:集成Nunchaku-flux-1-dev实现代码注释自动图解

IDEA插件开发:集成Nunchaku-flux-1-dev实现代码注释自动图解 1. 引言 作为一名Java开发者,你是否曾经面对过这样的困境:接手一个复杂的遗留系统,代码量庞大但注释稀少,逻辑关系错综复杂,光是理解代码执行…...

腾讯混元翻译模型HY-MT1.5-1.8B:免费开源,企业级翻译解决方案

腾讯混元翻译模型HY-MT1.5-1.8B:免费开源,企业级翻译解决方案 1. 引言 1.1 为什么选择HY-MT1.5-1.8B 在全球化的商业环境中,语言障碍成为企业拓展国际市场的首要挑战。腾讯混元团队推出的HY-MT1.5-1.8B翻译模型,以其18亿参数的…...

Android USB串口通信终极指南:智能家居物联网项目实战

Android USB串口通信终极指南:智能家居物联网项目实战 【免费下载链接】usb-serial-for-android Android USB host serial driver library for CDC, FTDI, Arduino and other devices. 项目地址: https://gitcode.com/gh_mirrors/us/usb-serial-for-android …...

从NDVI到地表温度:用ENVI Band Math一次性搞定植被与热环境分析

ENVI波段运算实战:NDVI与地表温度的高效批量处理技巧 遥感影像分析中,植被指数和地表温度是最基础却又最关键的指标。传统操作流程往往需要反复切换不同工具模块,既耗时又容易出错。而ENVI的Band Math功能就像一把瑞士军刀,能将这…...

告别Swagger注解污染:用smart-doc + Maven插件5分钟生成整洁API文档(SpringBoot实战)

零侵入API文档革命:smart-doc在SpringBoot项目中的极致实践 如果你曾经被Swagger注解污染代码所困扰,或是厌倦了在业务逻辑中嵌入大量文档相关注解,那么smart-doc可能会成为你API文档管理的新选择。作为一款基于源码解析的文档生成工具&#…...

从拒稿到录用:我的TOMM投稿实战复盘与经验分享

1. 从TMM拒稿到TOMM录用的心路历程 第一次收到TMM的拒稿邮件时,我正在实验室熬夜改代码。邮件弹出来的那一刻,整个人就像被泼了一盆冷水。那篇论文已经经历了三轮大修,每次都是几十条审稿意见,我们团队前前后后修改了上百个细节。…...

Linux环境下Python段错误全解析:从内存管理到线程安全的避坑手册

Linux环境下Python段错误全解析:从内存管理到线程安全的避坑手册 当你在深夜调试一个复杂的Python项目时,突然看到屏幕上跳出"Segmentation fault (core dumped)"的提示,那种感觉就像在高速公路上爆胎——明明代码逻辑看起来没问题…...

告别天价桥接芯片!用高云GW5AT-LV15MG132 FPGA搞定MIPI C-PHY摄像头测试盒

国产FPGA革新摄像头测试方案:高云GW5AT-LV15MG132的MIPI C-PHY实战解析 在摄像头模组生产线上,测试环节的成本与效率直接关系到企业竞争力。传统测试方案依赖进口FPGA搭配昂贵桥接芯片,不仅物料清单(BOM)成本居高不下…...

uniapp集成腾讯地图:从marker点聚合到轨迹回放的跨端实战与性能调优

1. uniapp集成腾讯地图SDK的核心步骤 第一次在uniapp里用腾讯地图SDK时,我踩了个大坑——直接在H5端跑代码发现地图出不来。后来才明白,腾讯地图在H5端需要单独配置安全域名。具体操作是在腾讯地图开放平台申请key时,必须把H5的域名加入白名单…...

如何通过InstantClick事件回调实现精准的性能监控:开发者必备指南

如何通过InstantClick事件回调实现精准的性能监控:开发者必备指南 【免费下载链接】instantclick InstantClick makes following links in your website instant. 项目地址: https://gitcode.com/gh_mirrors/in/instantclick InstantClick是一款能让网站链接…...

Qwen3-Reranker-0.6B一文详解:轻量0.6B参数如何实现SOTA级重排序性能

Qwen3-Reranker-0.6B一文详解:轻量0.6B参数如何实现SOTA级重排序性能 1. 引言:为什么你需要关注这个0.6B的小模型? 如果你用过搜索引擎,肯定有过这样的体验:输入一个问题,搜出来一堆结果,但真…...