【实战】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怎么使用
- 使用c api,作为sdk使用,请参考这里
- 作为独立的流媒体服务器使用,不想做c/c++开发的,可以参考 restful api 和 web hook
- 如果想做c/c++开发,添加业务逻辑增加功能,可以参考这里的测试程序.
2.docker部署
2.1拉取镜像
docker pull zlmediakit/zlmediakit:master
2.2启动容器
- 确保docker开机自启命令: systemctl enable docker.service
- 启动容器时加入参数 --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 代理测试
- 左边是请求的拉流接口/index/api/addStreamProxy
- 右边请求的是推流接口/index/api/addStreamPusherProxy
3.2.2.2 服务器配置
- 说明: 对应配置文件中的内容,可以在控制台直接进行修改,配置文件会被更新,所以个人觉得docker部署ZLMediakit时,就没有必要挂载配置文件到宿主机用于手动修改了
- 如可以修改secret等,如下
4.在项目中的使用
4.1 项目说明
- 主要使用zlmediakit作为流媒体服务器,用于拉取摄像头的rtsp流,转换为rtmp, 并推送到云端的rtmp服务器,实现摄像头数据上云的业务
4.2 技术选型的问题
- 初期使用ffmpeg进行[拉,转,推]几个步骤的实现, 发现的问题,对服务器的cpu消耗比较高
- 故测试使用zlmediakit进行该操作,发现能解决此问题
4.3 项目中使用发现的问题
- 注意摄像头的编码要使用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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:chenni525@qq.com进行投诉反馈,一经查实,立即删除!