SRS配置和热加载

这篇博客介绍了SRS服务器的配置文件结构,包括SrsConfig::parse_options函数的作用,如何隔离不同流的配置以及如何实现配置的热加载。内容还涵盖了如何根据vhost隔离配置,并讲解了不重启服务即可使配置生效的机制,以及如何添加自定义配置选项。

配置文件结构

./objs/srs 时需要跟上 -c 选择配置文件

开发建议使用console.conf 把日志输出在控制台

/conf目录下的配置项可以组合使用,例如将hls.conf里面vhost部分拷贝到console.conf

srs如何加载配置文件?

在srs_main_server.cpp里面

SrsConfig::parse_options函数

  1. 首先解析argv 得到config_file(其实是-c后的配置文件,是argv[2])
  2. err = parse_file(config_file.c_str()); 函数解析配置文件。解析后srs_config_transform_vhost()函数用于兼容老的SRS配置。 读取配置是通过root的树结构按各个节点读取的。例如

     

隔离:不同流应用不同的配置

通过vhost实现

默认推流的时候没有vhost,需要指定

例如:rtmp://127.0.0.1/live/livestream?vhost=sports.ossrs.net

Reload:不重启服务使配置生效

killall -1 srs

由于进程没有退出,所以不会影响推流和播放

实现方式:

ISrsReloadHandler里面实现了很多函数

具体调用:

 如何增加自己的配置?

对照srs_app_config.hpp里面实现

例如

全局:get_max_connections();

vohst:get_vhost_emabled();

本文为个人学习SRS笔记,视频地址:https://www.bilibili.com/video/BV1SZ4y1M7Ag?share_source=copy_web

我们现在开发了一款程序,根据一定的规则来解析用户需求,例如是excel文件,然后根据一些规则组成我们要的数据,例如我们最终要的数据{ "AUTOSAR": { "EcuC": { "EcucPartitionCollection": { "EcucPartition": [{ "ShortName":"用户自定义", "EcucPartitionBswModuleExecution": "用户自定义", "PartitionCanBeRestarted": "用户自定义", "EcucPartitionSoftwareComponentInstanceRef": "用户自定义" }] }, "EcucPduCollection": { "PduIdTypeEnum": "设计参数:根据创建的pdu个数判断,若个数少于或等于255,则配置为UINT8; 若大于255,则配置为UINT16", "PduLengthTypeEnum": "设计参数:根据PduLength最大的那个参数判断,若长度小于或等于255,则配置为UINT8; 若长度大于255且小于等于65535,则配置为UINT16; 若大于65535,则配置为UINT32", "Pdu": [{ "ShortName":"用户需求", "PduLength": "用户需求", "SysTPduToFrameMappingRef": "用户需求" }] }, "EcucVariationResolver": { "PredefinedVariantRef": "默认不配置" } } } }大概长这个样子,这个SRS.json,是跟版本相关的,如果版本变化了,那么这个json也变化了,包括这里面的一些规则也有可能变化了,我们现在是一个版本,会对应一个规则,对对应一套代码,我们现在想有没有一种可能,就是把规则都存在知识库,例如这个json里面的数据,怎么需求文件里面进行映射的也存在知识库,一些设计规则,默认值都存在知识库,如果每次版本更新了,只用更新知识库,不用更新代码,这种架构怎么设计啊,首先你理解我的需求么?
10-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值