《ZLMediaKit源码学习笔记》(2)MediaServer作为RTSP转发服务器

 系列文章目录

《ZLMediaKit源码学习笔记》(1)windows下VS2022源码编译

《ZLMediaKit源码学习笔记》(2)MediaServer作为RTSP转发服务器(本文)


前言

学习源码前,我们需要先熟悉如何使用ZLMediaKit提供的测试程序,正好本人手上有宇视摄像头,本节就测试下如何使用MediaServer来转发摄像头的RTSP流。

说明:依赖库ZLToolKit源码学习参见《ZLToolKit源码学习笔记》


目录

系列文章目录

前言

一、背景

二、实操


一、背景

安防监控常见使用场景中,经常会出现这种情况:一个网络摄像机/网络录像机,有多个用户需要同时观看实况。而设备的取流是有上限的,无法满足所有用户都能观看成功。比如,一台IPC的取流上限只有10路,当已经有10个用户在局域网电脑上进行了实况预览,那么如果局域网内还有另一个用户也想访问实况就不行了。再或者NVR设备,假设支持的取流上限是64路,如果某个用户播放端上已经看了40路实况,那么就只剩下24路实况供其它用户观看了。

要解决以上限制,我们可以使用流媒体服务器来对设备的视频流进行转发,摄像机的视频流经流媒体服务器转发到不同的用户播放端,用户将不再直接向摄像机拉流,这样就能降低设备的取流压力,满足了多用户使用的需求。

在监控网络传输中,流媒体技术也可以降低网络中的带宽限制。当多个用户要查看同一路监控图像时,流媒体服务器将从IPC/NVR取流,并进行视频流的分发,对IPC/NVR而言只需要取一路视频流,服务器解除了发流设备的带宽限制以及发流端到流媒体的带宽限制,对于后续部分的监控网络传输带宽是没有影响的,这样就可以减少了网络的负荷。


二、实操

测试比较简单,MediaServer作为服务器,提供了一组restful api用来和客户端进行交互。具体参见MediaServer支持的HTTP API · ZLMediaKit/ZLMediaKit Wiki · GitHub。满足我们需求的api是以下这条:

动态添加rtsp/rtmp/hls拉流代理
/index/api/addStreamProxy
参数 是否必选 释意
secret Y api操作密钥(配置文件配置),如果操作ip是127.0.0.1,则不需要此参数
vhost Y 添加的流的虚拟主机,例如__defaultVhost__
app Y 添加的流的应用名,例如live
stream Y 添加的流的id名,例如test
url Y 拉流地址,例如rtmp://live.hkstv.hk.lxdns.com/live/hks2
enable_hls N 是否转hls
enable_mp4 N 是否mp4录制
rtp_type N rtsp拉流时,拉流方式,0:tcp,1:udp,2:组播
timeout_sec N 拉流超时时间,单位秒,float类型

 测试实例:

http://127.0.0.1/index/api/addStreamProxy?vhost=__defaultVhost__&app=live&stream=test1&url=rtsp://admin:123456@192.168.31.66/media/video2&rtp_type=0

我们可以直接在浏览器中测试,这里为方便后续操作,建议安装下postman,ZLMediaKit提供了对应的配置文件可以直接使用。

使用postman导入ZLM源码postman目录下的两个json文件,File->Import->Upload Files:

127.0.0.1.postman_environment.json
ZLMediaKit.postman_collection.json

《ZLMediaKit源码学习笔记》(2)MediaServer作为RTSP转发服务器

 使能环境变量,ZLMediaKit_URL配置的IP地址和端口必须与MediaServer中的一致,本地环境默认是127.0.0.1:80,这里不用修改。

《ZLMediaKit源码学习笔记》(2)MediaServer作为RTSP转发服务器
 

具体测试过程如下:

1)、启动服务器,直接运行MediaServer即可。

《ZLMediaKit源码学习笔记》(2)MediaServer作为RTSP转发服务器

2)、配置rtsp地址,将我们摄像机的rtsp拉流地址配置到服务器,由服务器向IPC拉流,然后通过播放端使用VLC向服务器拉流,也可以使用上节提到的test_player程序拉流。这样不管有多少个播放端,都不需要直接向IPC拉流了,降低了IPC的负载。

《ZLMediaKit源码学习笔记》(2)MediaServer作为RTSP转发服务器

 3)、VLC拉流。VLC中,媒体->打开网络串流,输入拉流地址rtsp://127.0.0.1/live/test1,点击播放。

《ZLMediaKit源码学习笔记》(2)MediaServer作为RTSP转发服务器

上一篇:RTSP 与 RTMP 协议


下一篇:监控RTSP取流格式