ZLMediakit 基于源码安装

  1. 安装 cmake
  2. 安装 ZLMediakit
    1. 下载源码
    2. 编译
    3. 修改配置文件
    4. 运行
    5. 附,未改 wvp ip 的配置

安装 cmake

centos7 自带了低版本的 cmake,如果不按照下面的代码安装高版本 cmake,等下编译会报错:

centos7 CMake 3.1.3 or higher is required. You are running version 2.8.12.2

所以,先检查下吧:

cmake -version

若是低于 3.1.3 的,那就卸载吧:

yum remove cmake

然后接下来安装高版本 cmake,下载编译好的 cmake:https://cmake.org/download/

新建目录,并上传到此目录:

mkdir -p /data/cmake

解压:

tar -zxvf cmake-3.18.5-Linux-x86_64.tar.gz

添加到环境变量中:

export CMAKE_HOME=/data/cmake/cmake-3.18.5-Linux-x86_64
export PATH=$PATH:$CMAKE_HOME/bin

保存并退出,执行命令让cmake环境文件生效:

source /etc/profile

此时,再次查看cmake版本,就已经是3.10.2了:

cmake -version

OK,cmake环境版本升级完毕。

安装 ZLMediakit

下载源码

国内用户推荐从同步镜像网站gitee下载

git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit;
cd ZLMediaKit;
git submodule update --init;

新建目录,把文件夹上传到此目录:

mkdir -p /data/zlm;
mkdir -p /data/zlm/rtpdump;
mkdir -p /data/zlm/ZLMediaKit;

编译

cd /data/zlm/ZLMediaKit;
mkdir build;
cd build;
cmake ..;
make -j4;

修改配置文件

修改配置文件中下面几个参数

[hook]
#播放器或推流器使用流量事件,置空则关闭
on_flow_report=http://192.168.2.188:18080/index/hook/on_flow_report
#访问http文件鉴权事件,置空则关闭鉴权
on_http_access=http://192.168.2.188:18080/index/hook/on_http_access
#播放鉴权事件,置空则关闭鉴权
on_play=http://192.168.2.188:18080/index/hook/on_play
#推流鉴权事件,置空则关闭鉴权
on_publish=http://192.168.2.188:18080/index/hook/on_publish
#录制mp4切片完成事件
on_record_mp4=http://192.168.2.188:18080/index/hook/on_record_mp4
# 录制 hls ts 切片完成事件
on_record_ts=http://192.168.2.188:18080/index/hook/on_record_ts
#rtsp播放鉴权事件,此事件中比对rtsp的用户名密码
on_rtsp_auth=http://192.168.2.188:18080/index/hook/on_rtsp_auth
#rtsp播放是否开启专属鉴权事件,置空则关闭rtsp鉴权。rtsp播放鉴权还支持url方式鉴权
#建议开发者统一采用url参数方式鉴权,rtsp用户名密码鉴权一般在设备上用的比较多
#开启rtsp专属鉴权后,将不再触发on_play鉴权事件
on_rtsp_realm=http://192.168.2.188:18080/index/hook/on_rtsp_realm
#远程telnet调试鉴权事件
on_shell_login=http://192.168.2.188:18080/index/hook/on_shell_login
#直播流注册或注销事件
on_stream_changed=http://192.168.2.188:18080/index/hook/on_stream_changed
#无人观看流事件,通过该事件,可以选择是否关闭无人观看的流。配合general.streamNoneReaderDelayMS选项一起使用
on_stream_none_reader=http://192.168.2.188:18080/index/hook/on_stream_none_reader
#播放时,未找到流事件,通过配合hook.on_stream_none_reader事件可以完成按需拉流
on_stream_not_found=http://192.168.2.188:18080/index/hook/on_stream_not_found
#服务器启动报告,可以用于服务器的崩溃重启事件监听
on_server_started=http://192.168.2.188:18080/index/hook/on_server_started

[http]
#http服务器监听端口
port=8080

[rtp_proxy]
#导出调试数据(包括rtp/ps/h264)至该目录,置空则关闭数据导出
dumpDir=/data/zlm/rtpdump

[rtsp]
port=8554

运行

官方的启动、关闭比较麻烦,我写个简单脚本:

cd /data/zlm/ZLMediaKit/release/linux/Debug

新建启动脚本 vim startup.sh

#! /bin/sh
var=`date +%Y-%m-%d`
./MediaServer -d & tail -f log/log-$var.out

新建关闭脚本 vim shutdown.sh

#! /bin/sh
pid=`ps -ef |grep MediaServer | grep -v grep | awk '{print $2}'`
kill -9 $pid

现在启动程序:sh startup.sh

若要关闭程序:sh shutdown.sh

附,未改 wvp ip 的配置

[api]
apiDebug=1
defaultSnap=./www/logo.png
secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
snapRoot=./www/snap/

[ffmpeg]
bin=/usr/bin/ffmpeg
cmd=%s -fflags nobuffer -rtsp_transport tcp -i %s -c:a aac -strict -2 -ar 44100 -ab 48k -c:v libx264  -f flv %s
log=./ffmpeg/ffmpeg.log
snap=%s -i %s -y -f mjpeg -t 0.001 %s

[general]
addMuteAudio=1
enableVhost=0
flowThreshold=1024
fmp4_demand=0
hls_demand=0
maxStreamWaitMS=15000
mediaServerId=your_server_id
mergeWriteMS=0
modifyStamp=0
publishToHls=1
publishToMP4=0
resetWhenRePlay=1
rtmp_demand=0
rtsp_demand=0
streamNoneReaderDelayMS=600000
ts_demand=0

[hls]
broadcastRecordTs=0
fileBufSize=65536
filePath=./www
segDur=2
segNum=3
segRetain=5

[hook]
admin_params=secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
enable=1
on_flow_report=
on_http_access=
on_play=
on_publish=http://10.20.30.40:18080/index/hook/on_publish
on_record_mp4=
on_record_ts=
on_rtsp_auth=
on_rtsp_realm=
on_server_started=http://10.20.30.40:18080/index/hook/on_server_started
on_shell_login=http://10.20.30.40:18080/index/hook/on_shell_login
on_stream_changed=http://10.20.30.40:18080/index/hook/on_stream_changed
on_stream_none_reader=http://10.20.30.40:18080/index/hook/on_stream_none_reader
on_stream_not_found=http://10.20.30.40:18080/index/hook/on_stream_not_found
timeoutSec=20

[http]
charSet=utf-8
dirMenu=1
keepAliveSecond=30
maxReqSize=4096
notFound=<html><head><title>404 Not Found</title></head><body bgcolor="white"><center><h1>你访问的资源不存在!</h1></center><hr><center>ZLMediaKit-4.0</center></body></html>
port=8080
rootPath=./www
sendBufSize=65536
sslport=443

[multicast]
addrMax=239.255.255.255
addrMin=239.0.0.0
udpTTL=64

[record]
appName=record
fastStart=0
fileBufSize=65536
filePath=./www
fileRepeat=0
fileSecond=3600
sampleMS=500

[rtmp]
handshakeSecond=15
keepAliveSecond=15
modifyStamp=0
port=1935
sslport=19350

[rtp]
audioMtuSize=600
clearCount=10
cycleMS=46800000
maxRtpCount=50
videoMtuSize=1400

[rtp_proxy]
checkSource=1
dumpDir=/data/zlm/rtpdump
port=10000
timeoutSec=15

[rtsp]
authBasic=0
directProxy=1
handshakeSecond=15
keepAliveSecond=15
port=554
sslport=322

[shell]
maxReqSize=1024
port=9000

转载请注明来源。 欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。 可以在下面评论区评论,也可以邮件至 sharlot2050@foxmail.com。

文章标题:ZLMediakit 基于源码安装

字数:1.2k

本文作者:夏来风

发布时间:2020-12-22, 17:37:24

原始链接:http://www.demo1024.com/blog/zlm-install/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。