ZLMediakit-集群部署

news/2024/12/5 8:58:08/

集群部署

  • 痛点: 溯源方式单一,边沿服务器不能使用HLS。

  • 场景介绍:

    一般流媒体集群实现方式采用溯源方式实现,服务器分为源站和边沿站。源站一般用于接收推流,它一般不直接承载用户的播放请求,而是通过边沿服务器向其拉流同时分发给播放器,通过该模式可以支持海量的用户播放请求。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
    
[cluster]
origin_url=rtsp://xx.xx.xx.xx:554/%s/%s

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的互转。


http://www.ppmy.cn/news/1040967.html

相关文章

Redis——list类型详解

概要 Redis中的list类型相当于双端队列,支持头插,头删,尾插,尾删,并且列表中的内容是可以重复的。 如果搭配使用rpush和lpop,那么就相当于队列 如果搭配使用rpush和rpop,那么就相当于栈 lpu…

低代码平台全套源码,支持二次开发

低代码开发平台:只需要编写简单的配置文件即可构建企业级应用程序。 一、低代码PaaS平台可以在云端开发、部署、运行低代码应用程序。使用独立数据库模型,基于Kubernetes云原生技术,每个租户均可拥有一套独立的存储、数据库、代码和命名空间&…

ardupilot开发 --- log篇

懂的都懂,你也要懂 log作用记录您的飞行数据; 两种方式或类型: Data flash log ,通常记录在SD卡上,可通过地面站下载; Telemetry logs(Tlogs),地面站通过无线设备进行实…

算法修炼Day52|● 300.最长递增子序列 ● 674. 最长连续递增序列 ● 718. 最长重复子数组

LeetCode:300.最长递增子序列 300. 最长递增子序列 - 力扣(LeetCode) 1.思路 dp[i]的状态表示以nums[i]为结尾的最长递增子序列的个数。 dp[i]有很多个,选择其中最大的dp[i]Math.max(dp[j]1,dp[i]) 2.代码实现 1class Solution {2 pub…

2020年3月全国计算机等级考试真题(C语言二级)

2020年3月全国计算机等级考试真题(C语言二级) 第1题 有以下程序 void fun1 (char*p) { char*q; qp; while(*q!\0) { (*Q); q; } } main() { char a[]{"Program"},*p; p&a[3]; fun1(p); print…

【分类讨论】CF1674 E

Problem - E - Codeforces 题意&#xff1a; 思路&#xff1a; 样例&#xff1a; 这种分类讨论的题&#xff0c;主要是去看答案的最终来源是哪几种情况&#xff0c;这几种情况得不重不漏 Code&#xff1a; #include <bits/stdc.h>#define int long longusing i64 lon…

全国三网优惠话费充值接口开发指南

一、文档综述 近期想做项目的看过来~三网&#xff08;全国移动、联通、电信&#xff09;话费、电费充值接口能够实现将接口接入到小程序或者app上面&#xff0c;通过接口提交号码和金额进行充值&#xff0c;可以帮助相关人员快速完成接口对接与联调&#xff0c;平台用户可以通…

[国产MCU]-BL602开发实例-OLED-SSD1306驱动与U8g2移植

OLED-SSD1306驱动与U8g2移植 文章目录 OLED-SSD1306驱动与U8g2移植1、OLED介绍2、SSD1306介绍2、U8g2介绍3、U8g2移植3.1 定义U8g2图形库的移植函数3.2 移植函数实现3.3 移植函数调用4、驱动测试本文将详细介绍如何在BL602中移植U8g2图形库,并通过U8g2库驱动OLED SSD1306显示屏…