自学内容网 自学内容网

ZLMediaKit快速上手【保姆级简单快速版】

一、前言

1、ZLMediaKit使用场景

最近在写一个摄像头检测的项目,其中需要做拉流测试,但是摄像头数量不够用,如果直接重复拉流可能会出现问题,使用ZLMediaKit(一个基于C++11的高性能运营级流媒体服务框架)可以实现按需拉流推流。
ZLMediaKit源码地址
功能描述

但是网上可供参考的资料比较残缺不够完整,故在此记录一下完整的上手流程。

2、参考资料

Docker 简单部署 ZLMediaKit 超详细图文步骤
ZLMediaKit部署及使用
搭建流媒体服务器,ZLMediaKit+Docker

二、准备工作

在这里我们使用最简单直接的方式:Docker安装。所以需要有docker的环境。官网提供的docker下载命令如下:

docker run -d -p 1935:1935 -p 8080:80 -p 8554:554 -p 10000:10000 -p 10000:10000/udp -p 8000:8000/udp --name zlmediakit zlmediakit/zlmediakit:master

直接使用在后续可能会出现一个错误。在这里直接提供修改之后的代码。
在创建docker之前,做好如下配置

1、下载原始的ZLMediaKit

docker run -d -p 1935:1935 -p 8080:80 -p 8554:554 -p 10000:10000 -p 10000:10000/udp -p 8000:8000/udp --name zlmediakit zlmediakit/zlmediakit:master

2、修改ZLMediaKit配置文件

docker cp -a zlmediakit:/opt/media /home/docker/zlmediakit
docker rm -f zlmediakit  #删除
cd /home/docker/zlmediakit/media/conf
vi config.ini

在这里插入图片描述

在这里插入图片描述
修改[http]相关配置

[api]
apiDebug=1
defaultSnap=./www/logo.png
downloadRoot=./www
#修改secret,当然也可以使用默认值,这个后续要用到
secret=Icetc   
snapRoot=./www/snap/
.................
.................
[http]
#是否显示文件夹菜单,开启后可以浏览文件夹
dirMenu=1
#允许访问http api和http文件索引的ip地址范围白名单,置空情况下不做限制,初始值不为空
allow_ip_range=

启动流程

1、启动docker

按上述修改完配置文件之后就可以重新启动我们的docker了,注意启动的时候要使用我们自己的配置文件。

docker run -d -p 1935:1935 -p 8080:80 -p 8554:554 -p 10000:10000 -p 10000:10000/udp -p 8000:8000/udp -p 30000-30500:30000-30500 -p 30000-30500:30000-30500/udp --name zlmediakit --restart=always --env MODE=standalone -e TZ="Asia/Shanghai" -v /home/docker/zlmediakit/media/bin:/opt/media/bin -v /home/docker/zlmediakit/media/conf:/opt/media/conf zlmediakit/zlmediakit:master

2、检查docker是否启动成功

我们在网页上输入http://{你的ip地址}:8080如果出现一下页面,说明启动成功。
在这里插入图片描述
有一个错误可能是your ip is not allowed to access the service,原因是在之前配置文件中未修改设置allow_ip_range=

3、添加推流

在这里我们就使用第一个使用rtsp方式推流,官方提供的测试命令如下:
推流测试

ffmpeg -re -i "/path/to/test.mp4" -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://127.0.0.1/live/test

但是我们是在docker里,没有测试视频,需要把服务器中的测试视频上传到docker里。

docker cp /home/fight_test.mp4 zlmediakit:/

这样有了测试视频之后我们再进行推流测试。而且要在docker容器中运行,修改成我们的测试视频地址。

docker exec zlmediakit ffmpeg -re -i /fight_test.mp4 -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://127.0.0.1/live/test

可能出现的一个问题:[aac @ 0x560f6b976780] Too many bits 8832.000000 > 6144 per frame requested, clamping to max
解决办法是至少设置一个参数即可修复卡住的错误,具体原因不明。其中ab 为码率,ar 为采样率,ac为声道。
在这里设置就设置一下-ar,完整命令如下:

docker exec zlmediakit ffmpeg -re -i /fight_test.mp4 -vcodec h264 -ar 44100 -acodec aac -f rtsp -rtsp_transport tcp rtsp://127.0.0.1/live/test

出现以下页面说明添加推流成功!
在这里插入图片描述

4、查看推流

在这里插入图片描述
在这里插入图片描述
来到这个页面之后就可以查看刚才添加的推流了:
在这里插入图片描述
还可以查看观看人数。

5、获取视频

在这里插入图片描述
播放url规则
在这里插入图片描述
在这里插入图片描述

根据上面的讲述,可以知道我们的视频流地址创建的时候是这样的:rtsp://127.0.0.1/live/test
打开浏览器输入推流地址:rtsp://127.0.0.1:{端口号}/live/test或者正在别的主机上ip换成推流主机的ip,说明docker内使用推流的端口号是554,这个在浏览器页面都能够查看到,在服务器上输入的推流地址需要做简单修改,docker映射在一开始启动docker的时候有8554:554,所以应该是rtsp://127.0.0.1:8554/live/test
输入之后,弹出直播了,操作成功!之后把测试视频地址修改成摄像头地址,测试成功。
在这里插入图片描述


原文地址:https://blog.csdn.net/VanGotoBilibili/article/details/142603690

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!