《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
参数是否必选释意
secretYapi操作密钥(配置文件配置),如果操作ip是127.0.0.1,则不需要此参数
vhostY添加的流的虚拟主机,例如__defaultVhost__
appY添加的流的应用名,例如live
streamY添加的流的id名,例如test
urlY拉流地址,例如rtmp://live.hkstv.hk.lxdns.com/live/hks2
enable_hlsN是否转hls
enable_mp4N是否mp4录制
rtp_typeNrtsp拉流时,拉流方式,0:tcp,1:udp,2:组播
timeout_secN拉流超时时间,单位秒,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_URL配置的IP地址和端口必须与MediaServer中的一致,本地环境默认是127.0.0.1:80,这里不用修改。


 

具体测试过程如下:

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

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

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

### 回答1: zlmediakit是一个开源的流媒体服务器软件,其源码可以用于搭建自己的流媒体服务器。该软件使用C++编写,具有高性能和低资源消耗的特点。 zlmediakit源码提供了丰富的功能和模块,可以支持RTSP、RTMP、HLS、HTTP/HTTPS等流媒体协议的直播和点播。它可以用于构建具有较高并发量的流媒体平台,适用于各种场景,如视频直播、音频直播、视频点播等。 zlmediakit源码采用了多线程和事件驱动的设计,可以同时处理多个客户端连接和媒体流传输。它还支持实时录制功能,可以将接收到的流媒体数据实时保存到本地磁盘中,方便后续回放和存储。 zlmediakit源码的使用相对较为简单,只需要在服务器上编译和安装即可。同时,它还提供了丰富的配置选项和API接口,以便于用户进行个性化定制和二次开发。 总之,zlmediakit源码是一个强大而灵活的流媒体服务器软件,通过使用它,用户可以搭建自己的流媒体平台,实现高并发的流媒体传输和处理,适用于各种直播和点播场景。 ### 回答2: zlmediakit是一款基于C++语言开发的开源流媒体解决方案,旨在提供高性能的实时音视频传输和处理功能。其源码提供了丰富的功能和模块,可以用于构建各种音视频应用。 zlmediakit源码具有的特点包括: 1. 高性能:通过使用底层优化技术和多线程处理,zlmediakit能够实现高效的音视频传输和处理,保证了应用的实时性和流畅性。 2. 支持多种协议:zlmediakit支持常见的音视频传输协议,如RTSP、RTMP、HTTP等,使得应用能够与各类设备和平台进行互通。 3. 灵活的扩展性:zlmediakit源码提供了丰富的接口和模块,可以根据具体需求进行定制和扩展,满足不同应用场景的需求。 4. 多平台支持:zlmediakit源码可以在多个平台上运行,如Windows、Linux等,且可以与常见的开发框架和工具协同使用。 5. 丰富的功能:zlmediakit提供了各种功能模块,如音视频编码、解码、录制、转码、推流、拉流等,可以实现多种实时音视频处理需求。 通过使用zlmediakit源码,开发者可以快速构建和部署高性能的音视频应用,如视频直播、视频会议、监控系统等。同时,源码的开放性也意味着开发者可以根据自己的需求进行二次开发和定制,以满足更加复杂的应用场景。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秦时小

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值