使用 GB28181.Solution + ZLMediaKit + MediaServerUI 进行摄像头推流和播放

使用 GB28181.Solution + ZLMediaKit + MediaServerUI 进行摄像头推流和播放

独立观察员 2020 年 8 月 25 日

一、摄像机 GB28181 配置

打开 国标 28181 配置页面,勾上 “接入使能”:

 

打钩的是重要的配置信息,主要就是 SIP 服务器的信息和摄像头自己的编号、端口等信息。 

 

二、SIP 服务器 GB28181.Solution

项目地址:https://gitee.com/DLGCY_GB28181/GB28181.Solution

(注:本文给出的项目地址如果是克隆的,页面上会有 Fork 信息或者原地址,不再单独列出)

 

使用的是 GB28181.WinTool 这个测试程序:

 

配置特写:

 

使用流程:使用 VS 打开解决方案,修改好配置信息后,直接运行 GB28181.WinTool 项目,先点击启动,等待摄像头发来注册信息和心跳信息,然后点击目录查询,点击出现的设备,最后点击 “直播视频” 即可。

 

程序向摄像头发送直播指令(INVITE)后,就是摄像头直接向流媒体服务器以 RTP 协议发送 PS 数据流了: 

 

三、流媒体服务器 ZLMediaKit

项目地址:https://gitee.com/DLGCY_GB28181/ZLMediaKit

 

注意:如要克隆本仓库,还需克隆作为子模块的另外两个仓库 ———— ZLToolKit 和 media-server :

 

1、编译项目

由于这个是 C++ 项目,所以我们要给 VS 安上 C++ 开发的工作负载:

 

由于这个是 CMake 形式的项目,所以没有解决方案文件(.sln), 我们需要使用打开文件夹的方式:

 

打开后,我们在 CMakeLists.txt 上右键,先生成缓存,成功之后再生成:

 

这样在相关目录就生成了配置文件 config.ini 和可执行程序 MediaServer.exe:

 

2、配置和运行

实际上也不需要怎么配置,就是如果运行起来发现端口被占用的话,改一下就行了。

说说后面会用到的两个端口吧,一个是 RTP 的端口,在 rtp_proxy 节点下:

 

还有一个是 http 端口,后面播放视频要用到:

 

配置完之后双击 MediaServer.exe 就能启动了:

(感觉这些提示信息不够明确)

 

四、观看视频

我们点击 GB28181.WinTool 的 “直播视频” 后,摄像头就开始推流到 MediaServer 了:

 

来个特写:

 

我们看到出现了摄像头的地址,同时还不断看到一串编码 ID,我们拿这个 ID 就能播放视频了。

那么具体的视频地址是什么呢?作者倒是给出了解析方法:https://github.com/xia-chu/ZLMediaKit/wiki/ 播放 url 规则 

 

协议支持 rtsp、rtsps、rtmp、rtmps、http、https、ws、wss,我们这里用 http 协议测试。

虚拟主机我们选用 IP,我这里是 192.168.16.120

端口号由于我们选用 http 协议,而之前配置的是 801

应用名我暂时还不知道怎么来的,这里应该是 rtp

流 ID 是 24A4FFCC

所以最终直播视频地址为:http://192.168.16.120:801/rtp/24A4FFCC.flv 或 http://192.168.16.120:801/rtp/24A4FFCC/hls.m3u8 。

 

地址有了,我们还需要播放器,需要支持播放流媒体的播放器,推荐使用 PotPlayer。

运行后依次点击 “打开”–“打开链接”:

 

然后填入地址(我重新打开过了,流 ID 变了),点击确定即可播放。

 

播放效果:

 

flv 地址的也是一样:

 

五、ZLMediaKit 的管理网站  MediaServerUI

项目地址:https://gitee.com/DLGCY_GB28181/MediaServerUI

(使用普通分支即可,无需使用 GB28181 分支)

 

这是一个 Vue 项目,可参考《搭建一个 VUE 项目》进行环境搭建。

 

运行(1、cnpm install  2、cnpm run serve):

 

界面:

 

视频播放:

 

(感觉这个网站比较卡)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/308070.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

向结构体或结构体数组中赋值

一:结构体 方式1 #include<bits/stdc.h> using namespace std;struct Node{string name;int grade; };int main(){Node * node new Node();node->grade 100;node->name "wyj";Node *node1 new Node();node1->grade 200;node1->name "…

『软件测试2』 关于黑盒测试和测试用例的基础知识

黑盒测试和测试用例基础知识一、黑盒测试的基本概念1、黑盒测试基本概念2、黑盒测试错误类型二、测试用例概述及设计方法1、测试用例概述2、测试用例的好处三、黑盒测试方法一、黑盒测试的基本概念 1、黑盒测试基本概念 &#xff08;1&#xff09;所谓黑盒测试&#xff0c;就…

将 .NET Framework 项目转换为 .NET Standard 项目

将 .NET Framework 项目转换为 .NET Standard 项目独立观察员 2020 年 8 月 20 日如今 .NET Core 是未来发展的主流&#xff08;至少在 .NET 5 发布之前&#xff09;&#xff0c;而我们如果要改造一个项目为 .NET Core 项目&#xff0c;则它引用的项目应当先改造为 .NET Standa…

7-3 最短路径 (20 分)(分支限界+思路+详解)

一&#xff1a;题目 给定一个有N个顶点和E条边的无向图&#xff0c;顶点从0到N−1编号。请判断给定的两个顶点之间是否有路径存在。如果存在&#xff0c;给出最短路径长度。 这里定义顶点到自身的最短路径长度为0。 进行搜索时&#xff0c;假设我们总是从编号最小的顶点出发&a…

一份【软件工程】的学习指南已到达,请注意查收!!

软件工程——起始篇一、引言二、学习【软件工程】的原因1、软件设计师证书2、相关领域人员必备技能三、【软件工程】的学习方法1、不要盲目为了学习而学习2、规划学习路线四、结束语【软件工程】应该是大学计算机专业必修的一门课&#xff0c;对于开发者来说&#xff0c;可能有…

Dotnet Core异常处理的优雅实践

异常处理&#xff0c;也可以做得很优雅。一、前言异常处理的重要性&#xff0c;老司机都清楚。这篇文章&#xff0c;我们来理一下Dotnet Core异常处理的几种方式。Try Catch方式Exception Filter方式内建的异常处理中间件自定义的异常处理中间件这是目前使用比较多的几种方式。…

jdbc的预处理中如何处理模糊查询

一&#xff1a;问题描述 当我们用模糊查询的时候 想向sql语句中的&#xff1f;赋值&#xff0c;这时会发现我们的sql语句一直报错 二:解决方法 package com.wyj.one;import com.wyj.pojo.Role; import com.wyj.utils.JdbcutilsBydruid; import org.apache.commons.dbutils.Q…

『软件工程6』详解软件项目管理之软件范围与估算

软件项目管理——软件范围与估算一、软件项目计划1、目标2、步骤二、软件范围1、软件范围定义2、软件范围——引例三、影响估算的因素四、软件项目资源1、软件项目资源构成2、分析图3、人力资源4、硬件资源5、软件工具6、可复用构件五、软件工作量与成本的估算1、基于LOC估算工…

【翻译】.NET 5 Preview8发布

今天&#xff0c;.NET 5预览8发布了&#xff0c;对于.NET5.0的功能开发已经完成了&#xff0c;这必须要排除待处理的bug&#xff0c;预览8是最后一次预览版本。预计11月正式的.NET5.0版本发布之前还将发布两个正式之前的候选版本&#xff0c;这篇文章描述了.NET5.0版本中的一系…

『软件工程7』详解软件项目管理之风险分析与管理

软件项目管理——风险分析与管理一、风险及风险管理的含义1、风险的含义2、风险管理含义二、被动和主动的风险策略1、被动风险策略2、主动风险策略三、风险的特性四、风险的类型1、项目风险2、技术风险3、商业风险五、风险管理的步骤1、风险识别2、风险预测3、风险缓解、监控和…

7-1 页面置换算法--FIFO (50 分)(思路详解)

一:题目 先初始化页面大小&#xff0c;和物理块数。连续输入页面的逻辑地址&#xff0c;以“-1”作为结束标志&#xff0c;采用FIFO页面置换算法、固定分配局部置换分配策略。输出该页面的页号和页内位移&#xff0c;若该页不在内存&#xff0c;并且还有剩余的物理块&#xff…

7-2 页面置换算法--LRU (50 分)

一:题目(思路详解运行时错误解决) 先初始化页面大小&#xff0c;和物理块数。连续输入页面的逻辑地址&#xff0c;以“-1”作为结束标志&#xff0c;采用LRU页面置换算法、固定分配局部置换分配策略。输出该页面的页号和页内位移&#xff0c;若该页不在内存&#xff0c;并且还…

『软件测试3』八大典型的黑盒测试方法已来袭,快快接住!

文章目录一、等价类划分法1、定义2、等价类划分法步骤3、设计测试用例步骤4、案例&#xff1a;学生选修课程二、边界值分析法1、边界值分析法概述2、设计测试用例3、边界值设计原则三、错误推测法1、错误推测法概述2、错误推测法基本思想四、因果图设计法1、因果图设计法概述2、…

使用Jenkins来发布和代理.NetCore项目

Back toStudy!注&#xff1a;书接上文&#xff0c;上回《【CI/CD系列】使用Docker安装Jenkins》咱们说到了使用Docker镜像的方式&#xff0c;来建立Jenkins服务&#xff0c;用来持续集成和持续发布项目&#xff0c;但是上一篇文章有两个问题&#xff1a;01创建的容器不能操作和…

数据库课设(足球联赛管理系统)

一&#xff1a;前言 如果有关注博主的粉丝&#xff0c;可能会发现贴心杰又缺更好几天了&#xff0c;但是我是宠粉杰啊&#xff0c;怎么可能会忘了我的宝贝粉丝呢&#xff0c;只不过是临近期末&#xff0c;各种大作业课设如期而至&#xff0c;这几天我在写数据库课设&#xff0…

.NET Core实用技巧(一)如何将EF Core生成的SQL语句显示在控制台中

前言笔者最近在开发和维护一个.NET Core 项目&#xff0c;其中使用几个非常有意思的.NET Core 相关的扩展&#xff0c;在此总结整理一下。EF Core 性能调优如果你的项目中使用了 EF Core, 且正在处于性能调优阶段&#xff0c;那么了解 EF Core 生成的 SQL 语句是非常关键的。那…

695.岛屿的最大面积(026)BFS

二:思路 1.这里的遍历数据方式为BFS广度遍历 2.当我们遇到一个‘1’的时候,我们就遍历他的左右上下&#xff08;邻接点&#xff09;&#xff0c;如果是1那就入队&#xff0c;直到队列 为空为止。 3.我们记录每个岛屿的面积是采用 我们设置初始值为1&#xff0c;当每遇到一个邻…

『软件工程8』软件项目进度安排与跟踪,一招学会计算关键路径

项目进度安排与跟踪一、项目进度安排的定义及原则1、进度安排的定义2、进度安排的基本原则二、通信开销1、通信开销的定义2、通信路径计算3、案例分析三、工作量分配1、40-20-40规则2、工作量分配图例3、工作量分布推荐四、项目进度安排方法1、关键路径方法(CPM,Critical Path …

await,async 我要把它翻个底朝天,这回你总该明白了吧

一&#xff1a;背景1. 讲故事await&#xff0c;async 这玩意的知识点已经被人说的烂的不能再烂了&#xff0c;看似没什么好说的&#xff0c;但我发现有不少文章还是从理论上讲述了这两个语法糖的用法&#xff0c;懂得还是懂&#xff0c;不懂的看似懂了过几天又不懂了&#xff0…

栈在前端中的应用,顺便再了解下深拷贝和浅拷贝!

详解栈在前端中的应用一、栈是什么二、栈的应用场景三、前端与栈&#xff1a;深拷贝与浅拷贝1、JS数据类型&#xff08;1&#xff09;js数据类型的分类&#xff08;2&#xff09;js数据类型的定义和存储方式&#xff08;3&#xff09;js数据类型的判断方式2、深究浅拷贝和深拷贝…