ZLmediakit集群部署

1简单理解

2 如何简单部署测试

2.1: 我在10.1.1.1的机器上有拉 IPC-A摄像头的数据源;这个摄像头上的视频,通过部署在10.1.1.1这台服务器上的ZLM去拉流,转协议成RTSP的地址是:rtsp://10.1.1.1:554/rtp/stream_1

2.2:我本地(127.0.0.1)启动ZLM服务,通过VLC拉stream1:此时肯定是找不到的,因为我本地就没有叫stream_1的数据源

 2.3: 关闭本地ZLM,配置文件的溯源URL 设置源站如下图 origin_URL(rtsp://10.1.1.1:554/%s/%s),然后再启动本地的ZLM服务,此次的配置就会起作用

 2.4: 此时再用VLC访问本地stream_1; 本地启动(127.0.0.1)的ZLM检测到自己没有这个数据源,就去origin_url的地址上去拉stream_1,下边是我本地的ZLM服务的打印信息

2.5:   在10.1.1.1上拉到流之后,本地注册上   :媒体注册:rtsp://__defaultVhost__/rtp/stream_1。之后响应play请求,将数据流给到VLC;就像作者说的,很像一个按需拉流的流程

 

3实际的集群部署(要感谢ZLM互助群 keal 的多次讲解和指导

(当然我的理解绘于纸上,可能还有一些理解偏差和不太对的地方,希望可以得到更多的指正)

 

 

 

 4 关于集群部署,wiki上的一些资料

  • 场景介绍:  来源https://github.com/ZLMediaKit/ZLMediaKit/wiki/ZLMediakit%E7%8B%AC%E5%AE%B6%E7%89%B9%E6%80%A7%E4%BB%8B%E7%BB%8D

    一般流媒体集群实现方式采用溯源方式实现,服务器分为源站和边沿站。源站一般用于接收推流,它一般不直接承载用户的播放请求,而是通过边沿服务器向其拉流同时分发给播放器,通过该模式可以支持海量的用户播放请求。srs很早之前已经通过配置文件的方式支持该功能,由于zlmediakit比较早也提供按需拉流的功能,本质上也支持溯源模式的集群,不过用户需要对接hook和api,开发门槛比较高,所以最近zlmediakit也支持了通过配置文件的方式来实现集群模式,配置文件如下:

    [cluster]
    #设置源站拉流url模板, 格式跟printf类似,第一个%s指定app,第二个%s指定stream_id,
    #开启集群模式后,on_stream_not_found和on_stream_none_reader hook将无效.
    #溯源模式支持以下类型:
    #rtmp方式: rtmp://127.0.0.1:1935/%s/%s
    #rtsp方式: rtsp://127.0.0.1:554/%s/%s
    #hls方式: http://127.0.0.1:80/%s/%s/hls.m3u8
    #http-ts方式: http://127.0.0.1:80/%s/%s.live.ts
    #支持多个源站,不同源站通过分号(;)分隔
    origin_url=
    #溯源总超时时长,单位秒,float型;假如源站有3个,那么单次溯源超时时间为timeout_sec除以3
    #单次溯源超时时间不要超过general.maxStreamWaitMS配置
    timeout_sec=15

    zlmediakit的溯源方式支持rtsp/rtmp/hls/http-ts(http-flv的方式暂未开放), 方式多样丰富,同时源站不分主备,采用round robin方式来实现源站的负载均衡。需要指出的是,由于zlmediakit很早就支持hls的按需拉流功能,所以zlmediakit的边沿站也支持hls协议(其实支持zlmediakit任意支持的协议),这点是srs不具备的。

    另外需要指出的是,由于zlmediakit同时支持rtsp和webrtc,而它们两者都是基于rtp的,在zlmediakit内部,无须转协议简单处理后就可互联互通,所以使用zlmediakit来做大规模的webrtc低延时直播已经成为可能;相较于传统的基于rtmp的cdn,rtsp更适合作为webrtc的cdn基础传输协议,开发者不需要处理繁琐的解复用复用逻辑,即可平滑的实现rtsp与webrtc的互转。

posted on 2023-07-06 11:40  邗影  阅读(1201)  评论(0编辑  收藏  举报

导航