ZLMediaKit 实现监控摄像头RTSP转HLS、FLV


前言

最近几年,物联网项目大量出现,在物联网开发中,监控摄像头实时视频浏览器显示成为项目必备的功能,监控摄像头大多使用RTSP格式的视频流,而RTSP视频流无法直接在chrome、edge浏览器播放,这时我们就需要引入流媒体服务器以实现RTSP转换为HLS或flv等浏览器可以直接播放的视频格式,在经过多方对比后,选择了zlmediakit作为视频转换中间件。

本文介绍了我在项目开发中ZLMediaKit作为视频转换中间件的使用经验。

一、ZLMediaKit工作原理

1. 官网工作原理

在这里插入图片描述

2. 视频监控摄像头简化后的原理图

在这里插入图片描述

二、相关知识

1. 推流和拉流

推流是指将媒体源(如摄像头、麦克风等)生成的媒体数据主动发送到流媒体服务器或直播平台的过程。推流通常由媒体源设备或编码器负责,它将媒体数据进行编码和封装,然后通过网络将数据发送到指定的流媒体服务器或直播平台。
拉流是指从流媒体服务器或直播平台获取媒体数据并进行播放的过程。拉流通常由客户端设备(如播放器、浏览器等)负责,它通过网络从流媒体服务器或直播平台请求媒体数据,并将接收到的数据进行解码和播放。
推流和拉流是流媒体传输的两个相反方向。推流是将媒体数据从源端发送到服务器端,而拉流是从服务器端获取媒体数据并在客户端进行播放。通过推流和拉流的配合,可以实现实时流媒体的传输和播放。

这是推流和拉流的名词解释,简而言之,推流就是把视频发送到视频服务器,拉流就是访问视频服务器查看实时视频

2. 点播和直播

直播是实时视频传输。点播是预先录制好的视频内容,可以随时播放,不需要实时传输

简而言之,腾讯视频APP中观看电影是点播,视频监控摄像头视频播放是直播

2. RTSP和RTMP

RTSP(Real Time Streaming Protocol)和 RTMP(Real Time Messaging Protocol)都是用于实时流媒体传输的协议,但它们在设计和用途上有一些区别。
RTSP 是一种基于文本的协议,用于控制和传输实时流媒体数据。它主要用于视频监控、视频会议、在线直播等应用场景。RTSP 协议定义了一系列消息和操作,用于协商媒体参数、建立连接、传输数据以及控制流媒体的播放、暂停、快进等。
RTMP 是一种基于 TCP 的协议,专门用于实时流媒体传输。它主要用于互联网视频直播和视频共享平台等应用场景。RTMP 协议使用了自己的一套消息格式和传输机制,可以实现高效的流媒体数据传输和低延迟的视频播放。
总体而言,RTSP 更侧重于控制和管理流媒体会话,而 RTMP 更侧重于实时流媒体数据的传输。在实际应用中,选择使用哪种协议取决于具体的需求和应用场景

这是RTSP和RTMP的区别介绍,当前监控摄像头视频流基本都是RTSP协议,RTMP协议仅供了解,在项目中不涉及。

3. 常用的chrome、edge浏览器免插件可用播放的视频流格式

当前使用比较多的chrome、edge浏览器免插件可用播放的视频流格式主要是FLV和HLS,两者使用区别不大,但HLS 是一种更现代和灵活的流媒体格式,适用于在各种设备和平台上进行视频传输和播放,而 FLV 则是一种较旧的格式

建议使用HLS格式

4. FLV和HLS格式视频流http和ws(websocket)协议地址的区别

HTTP协议是客户端定时向服务器端发送请求,每次请求都会建立一个新的连接。
ws(WebSocket) 通过客户端和服务器之间的握手过程来建立连接,一旦建立,可以保持长时间的连接

可以看出ws(WebSocket)通讯更加高效,更重要的是Chrome浏览器限制了每个域名的最大并发连接数。通常是每个域名最多同时打开 6 个连接,这样就导致chrome浏览器最多可以播放6个视频流,多于6个会一直显示加载中。因而推荐使用ws或wss(ssl)格式的视频流

5. GB28181

GB28181协议是视频监控领域的国家标准,支持GB28181协议的设备之间可以进行彼此通信与控制,实现设备的注册、保活以及流媒体和系统控制命令的传输。

这是GB28181协议的解释,具体使用是支持GB28181协议的摄像头管理平台填写上级支持GB28181协议的管理控制台,在上级GB28181服务器会自动看到下级GB28181服务器的所有摄像头并可以对摄像头视频进行预览,控制。

6. h264 和h265

H.264 和 H.265 是两种视频编码标准,定义了视频流的压缩效率、图像质量、硬件支持、兼容性等

可以类比zip格式和rar格式的文件压缩格式,H.265 的普及程度相对较低,几乎所有的视频播放器和设备都支持 H.264 编码的视频,推荐使用H.264

三、ZLMediaKit视频转换中间件的安装和使用介绍

1.访问地址

官网

github

2.编译安装

文档地址

windows版本百度网盘下载地址 ,提取码:xvi6

3.配置

所有配置文件范例以及注释

ZLMediaKit RESTful接口地址以及ZLMediaKit转换后的hls视频流地址默认运行在80端口,可以修改配置文件中http.port配置节来修改默认端口

[api] 
#RESTful api 操作秘钥,如:addStreamProxy 接口 secret即使用此处配置值来进行安全验证
secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
[http]
#http服务器监听端口
port=80

4.运行

windows版本

# 通过 -h 可以了解启动参数
./MediaServer.exe -h
# 以守护进程模式启动
./MediaServer.exe -d &

Linux版本

ZLMediaKit/release/linux/Debug/libmk_api.so

5.注册RTSP视频流

ZLMediaKit运行后会自动开启http RESTful接口,通过调用addStreamProxy RESTful接口以实现RTSP视频流的注册。

接口地址: /index/api/addStreamProxy
请求方式:get/post
接口定义

参数说明
secretapi操作秘钥,用于接口安全验证,值为配置文件api.secret
url需要转换的视频监控摄像头视频流rtsp地址,如:rtsp://[username]:[password]@[ip]:[port]/
stream转换后的HLS或者FLV视频流ID,注意唯一,转换后视频流程播放地址一部分
app流的应用名,默认live,转换后视频流程播放地址一部分

响应:
{
“code” : 0,
“data” : {
“key” : “defaultVhost/proxy/0” # 流的唯一标识
}
}

如果添加成功,可以参照播放url规则访问视频

如:

http://127.0.0.1/live/[addStreamProxy输入参数stream]/hls.m3u8
ws://127.0.0.1/live/[addStreamProxy输入参数stream]/hls.m3u8

具体规则

http|https|ws|wss://[ip]:[http.port配置端口]/[addStreamProxy输入参数app]/[addStreamProxy输入参数stream]/hls.m3u8

注意

1、addStreamProxy注册视频流后ZLMediaKit并不会持久化保存,重启ZLMediaKit后需要再次添加
2、ZLMediaKit 视频转换是按需拉/推流,当视频无法观看时,自动结束流转换
3、视频地址播放如有权限限定,通过Web Hook 接口play注册来鉴权

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、支持国标GB28181平台、国标GB28181 IPC和国标GB28181 NVR设备同时接入 (支持GB28181-2011版本和GB28181-2016版本)     2、支持国标GB28181设备注册和注销,对所有设备进行管理,获取资源 对资源列表进行管理     3、支持国标GB28181的目录订阅,对接收的订阅通知进行处理     4、支持国标GB28181实时视频请求(支持UDP、TCP主动(tcpactive)、TCP被动(tcppassive))     5、支持国标GB28181 PTZ控制     6、支持国标GB28181 录像查询     7、支持国标GB28181 历史视频点播 (支持UDP、TCP主动(tcpactive)、TCP被动(tcppassive))     8、支持国标GB28181 历史视频下载 (支持UDP、TCP主动(tcpactive)、TCP被动(tcppassive))     9、支持对接收的国标实时视频码流和历史视频码流进行管理     10、支持将国标的PS码流转换成ES码流     11、支持丢包打印和断流打印     13、支持RTSP服务和RTSP会话管理     14、支持RTSP客户端 UDP传输和TCP传输     15、支持国标GB28181设备5000路左右的接入管理,支持国标请求视频在100路左右     16、支持国标28181设备和通道写入mysql数据库      17、支持设备的云台PTZ控制,控制类型:上"up",下"down",左"left",右"right",左上"leftup",左下"leftdown",右上"rightup",右下"rightdown",镜头近"zoomin",镜头远"zoomout", 焦距远"focusfar",焦距近"focusnear", 设置预置位"setpos",调预置位"callpos"     18、支持历史视频的查询和历史视频的点播控制     19、支持对国标设备的控制,"record":录像开启和停止-通道id "guard":布放和撤防-报警通道id "reboot":设备重启-设备id "keyfame":强制关键帧-通道id     20、支持对实时视频的图片截图,通过http直接访问图片    21、支持rtmp和hls会话一直保留    22、支持报警消息(设备上线、下线和设备端报警)通过httpclient方式主动通知    23、支持公网和局域网同时存在

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值