【实战】ZLMediaKit部署及使用

发布时间:2024年01月19日

1.ZLMediaKit简介

官网gitee, github

1.1概述

一个基于C++11的高性能运营级流媒体服务框架

1.2项目特点

  • 基于C++11开发,避免使用裸指针,代码稳定可靠,性能优越。
  • 支持多种协议(RTSP/RTMP/HLS/HTTP-FLV/WebSocket-FLV/GB28181/HTTP-TS/WebSocket-TS/HTTP-fMP4/WebSocket-fMP4/MP4/WebRTC),支持协议互转。
  • 使用多路复用/多线程/异步网络IO模式开发,并发性能优越,支持海量客户端连接。
  • 代码经过长期大量的稳定性、性能测试,已经在线上商用验证已久。
  • 支持linux、macos、ios、android、windows全平台。
  • 支持x86、arm、risc-v、mips、龙芯、申威等指令集平台。
  • 支持画面秒开、极低延时(500毫秒内,最低可达100毫秒)。
  • 提供完善的标准C API,可以作SDK用,或供其他语言调用。
  • 提供完整的MediaServer服务器,可以免开发直接部署为商用服务器。
  • 提供完善的restful api以及web hook,支持丰富的业务逻辑。
  • 打通了视频监控协议栈与直播协议栈,对RTSP/RTMP支持都很完善。
  • 全面支持H265/H264/AAC/G711/OPUS。
  • 功能完善,支持集群、按需转协议、按需推拉流、先播后推、断连续推等功能。
  • 极致性能,单机10W级别播放器,100Gb/s级别io带宽能力。
  • 极致体验,独家特性
  • 谁在使用zlmediakit?
  • 全面支持ipv6网络
  • 支持多轨道模式(一个流中多个视频/音频)

1.3项目定位

  • 移动嵌入式跨平台流媒体解决方案。
  • 商用级流媒体服务器。
  • 网络编程二次开发SDK。

1.4功能清单

在这里插入图片描述

1.5怎么使用

  1. 使用c api,作为sdk使用,请参考这里
  2. 作为独立的流媒体服务器使用,不想做c/c++开发的,可以参考 restful apiweb hook
  3. 如果想做c/c++开发,添加业务逻辑增加功能,可以参考这里的测试程序.

2.docker部署

2.1拉取镜像

docker pull zlmediakit/zlmediakit:master

2.2启动容器

  1. 确保docker开机自启命令: systemctl enable docker.service
  2. 启动容器时加入参数 --restart=always 实现容器自动重启,前提docker服务开启了自动重启
#此镜像为github持续集成自动编译推送,跟代码(master分支)保持最新状态
docker run -id --restart=always -p 1935:1935 -p 8080:80 -p 8443:443 -p 8554:554 -p 10000:10000 -p 10000:10000/udp -p 8000:8000/udp -p 9000:9000/udp zlmediakit/zlmediakit:master
  • 说明: rtmp默认端口1935, rtsp默认端口554,http默认端口80, SSL默认端口443

3.web控制台介绍

3.1访问地址

http://服务器IP:8080

3.2页面功能介绍

在这里插入图片描述

3.2.1 swagger页面

就不过多介绍怎么使用
在这里插入图片描述

3.2.2 webassist页面

3.2.2.1 首页

在这里插入图片描述
在这里插入图片描述

  • 说明: secret默认只为035c73f7-bb6b-4889-a715-d9eb2d1925cc , 可在官方文档中查询

在这里插入图片描述

3.2.2.2 代理测试

在这里插入图片描述

  1. 左边是请求的拉流接口/index/api/addStreamProxy
  2. 右边请求的是推流接口/index/api/addStreamPusherProxy
3.2.2.2 服务器配置

在这里插入图片描述

  • 说明: 对应配置文件中的内容,可以在控制台直接进行修改,配置文件会被更新,所以个人觉得docker部署ZLMediakit时,就没有必要挂载配置文件到宿主机用于手动修改了
  • 如可以修改secret等,如下
    在这里插入图片描述

4.在项目中的使用

4.1 项目说明

  • 主要使用zlmediakit作为流媒体服务器,用于拉取摄像头的rtsp流,转换为rtmp, 并推送到云端的rtmp服务器,实现摄像头数据上云的业务

4.2 技术选型的问题

  1. 初期使用ffmpeg进行[拉,转,推]几个步骤的实现, 发现的问题,对服务器的cpu消耗比较高
  2. 故测试使用zlmediakit进行该操作,发现能解决此问题

4.3 项目中使用发现的问题

  1. 注意摄像头的编码要使用H264 , 在排查此问题用了很长时间才发现,在此做下记录

4.3 项目中使用方式

  • 使用rest api 的方式 实现拉流,推流
  • 使用接口调用拉流接口 /index/api/addStreamProxy 对摄像头数据进行拉取,并自动转换为rtmp协议
  • 调用推流接口 /index/api/addStreamPusherProxy ,对rtmp流推送到rtmp云服务器

4.4 实现自动监控ZLMediaKit,进行拉流和推流

由于篇幅太长,将在下一篇文章中写, 文章地址

文章来源:https://blog.csdn.net/weixin_44684303/article/details/135688697
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。