ZLMediaKit-服务器的启动与关闭

文章讲述了编译ZLMediaKit后生成的MediaServer程序的路径,以及详细的启动参数说明,包括守护进程、日志控制、配置文件、SSL证书和线程设置。还介绍了配置文件的热加载机制和服务器关闭方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序所在路径

在编译zlmediakit后,会生成MediaServer主程序,该程序相对路径为release/${platform}/${build_type}/MediaServer

${platform}根据您的操作系统,可能为windows/linux/mac,${build_type}根据您cmake时指定的编译类型,可能为Debug/Release.

启动与参数

  • 先参考启动参数帮助:
xzl-mac-pro:Debug xzl$ ./MediaServer -h
  -h  --help     无参  默认:null                                                    选填  打印此信息
  -d  --daemon   无参  默认:null                                                    选填  是否以Daemon方式启动
  -l  --level    有参  默认:0                                                       选填  日志等级,LTrace~LError(0~4)
  -m  --max_day  有参  默认:7                                                       选填  日志最多保存天数
  -c  --config   有参  默认:/Users/xzl/git/ZLMediaKit/release/mac/Debug/config.ini  选填  配置文件路径
  -s  --ssl      有参  默认:/Users/xzl/git/ZLMediaKit/release/mac/Debug/ssl.p12     选填  ssl证书文件或文件夹,支持p12/pem类型
  -t  --threads  有参  默认:8                                                       选填  启动事件触发线程数
  • 说明:

    • -d(--daemon): 是否以守护进程的方式启动,守护进程只做一件事,就是判断子进程(这个才是干活的进程)是否已经退出,退出后会不断尝试重启子进程。
    • -l(--level): 指定日志打印等级,赋值范围为0~4,等级越高,日志越少。
    • -m(--max_day): 日志文件保存天数,程序本次运行期间的日志如果超过这个天数,就会被删除。
    • -c(--config): 指定配置文件路径,配置文件为ini格式,请参考ZLMediaKit的默认配置文件。
    • -s(--ssl): 指定ssl证书路径,证书格式支持p12和pem类型,里面必须包含公钥和私钥,私钥不能有加密密码。如果指定文件夹,会加载文件夹下所有证书。
    • -t(--threads): 指定事件驱动线程(干重活)和后台工作线程(干阻塞的活)个数。
  • 启动命令:

图片

  • 注意事项:
    • 1、如果你启动MediaServer后需要关闭shell,那么好需要输入 exit退出shell,否则关闭shell会导致MediaServer一起被关闭。
    • 2、如果你会使用到FFmpeg相关功能,你应该这样启动程序nohup ./MediaServer -d &,否则在fork FFmpeg进程时会导致MediaServer进程挂起。

配置文件的热加载

修改并保存配置文件后,在shell里面输入killall -1 MediaServer就能使ZLMediaKit热加载配置文件,如果生效,会打印下面样式的日志: 

图片

关闭服务器

  • 如果你是后台启动方式,请在shell中输入killall -2 MediaServer以便优雅关闭服务器(程序收到SIGINT信号后会自动释放资源并退出)。
  • 否则你可以同时按下Ctr + C退出程序。
### 配置 ZLMediaKit 实现按需推流 ZLMediaKit 是一款高性能的音视频服务框架,支持 RTMP、HLS、WebRTC等多种协议。为了实现按需推流功能,在配置 ZLMediaKit 服务器时需要注意以下几个方面: #### 1. 安装依赖库并编译源码 确保安装了必要的开发工具链以及第三方依赖项之后,可以从 GitHub 上获取最新版的 ZLMediaKit 源代码,并按照官方文档说明完成编译过程。 #### 2. 修改配置文件 `config.ini` 编辑位于项目根目录下的`config.ini` 文件来调整相关参数设置。对于按需推流场景来说,重点在于优化内存占用网络传输效率等方面的表现: ```ini [rtp] ; RTP最大缓存时间(ms), 默认值为50ms, 对于低延迟直播可以适当减小该数值 rtp_max_cache_time=30 [rtmp] ; 是否开启RTMP拉流转推功能,默认关闭(false),此处应设为true以启用此特性 enable_proxy=true ``` 上述配置通过减少RTP包的最大缓冲时间和允许RTMP代理转发两项措施共同作用,有助于提高响应速度和降低延迟[^1]。 #### 3. 启动 HTTP API 接口用于动态管理媒体资源 为了让客户端能够实时请求特定的音视频流数据,建议开启HTTP-API接口以便程序化控制推拉流行为。具体做法是在同一份配置文件中找到 `[http_server]` 节点并将端口号设定为你希望监听的服务地址;同时还要确认已加载相应的插件模块(如 RESTful 插件)从而使得外部应用可以通过标准REST风格的操作指令向内核提交命令。 #### 4. 编写业务逻辑处理脚本 最后一步则是根据实际需求编写一段简单的应用程序或者Shell脚本来触发具体的推流动作。这里给出一个Python版本的例子供参考: ```python import requests import json def start_stream(pull_url, push_url): url = "http://localhost:8888/api/v1/push" headers = {'Content-Type': 'application/json'} data = { "pullUrl": pull_url, "pushUrls": [ {"url": push_url} ] } response = requests.post(url=url, data=json.dumps(data), headers=headers) print(response.text) if __name__ == '__main__': pull_from = "rtsp://example.com/path/to/source" push_to = "rtmp://yourserver/app/streamkey" start_stream(pull_from, push_to) ``` 这段代码展示了如何利用内置API发起一次新的转码任务,其中包含了指定输入源(`pull_url`)及目标输出位置(`push_url`)的信息传递流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值