ZLMediaServer配置⽂件说明
[api]
#是否调试http api,启⽤调试后,会打印每次http请求的内容和回复
apiDebug=1
#⼀些⽐较敏感的http api在访问时需要提供secret,否则⽆权限调⽤
#如果是通过127.0.0.1访问,那么可以不提供secret
secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
#截图保存路径根⽬录,截图通过http api(/index/api/getSnap)⽣成和获取
snapRoot=./www/snap/
#默认截图图⽚,在启动FFmpeg截图后但是截图还未⽣成时,可以返回默认的预设图⽚
defaultSnap=./www/logo.png
[ffmpeg]
#FFmpeg可执⾏程序绝对路径
bin=/usr/bin/ffmpeg
#FFmpeg拉流再推流的命令模板,通过该模板可以设置再编码的⼀些参数
cmd=%s -re -i %s -c:a aac -strict -2-ar 44100-ab 48k -c:v libx264 -f flv %s
#FFmpeg⽣成截图的命令,可以通过修改该配置改变截图分辨率或质量
snap=%s -i %s -y -f mjpeg -t 0.001%s
#FFmpeg⽇志的路径,如果置空则不⽣成FFmpeg⽇志
#可以为相对(相对于本可执⾏程序⽬录)或绝对路径
log=./ffmpeg/ffmpeg.log
[general]
#是否启⽤虚拟主机
enableVhost=0
#播放器或推流器在断开后会触发_flow_report事件(使⽤多少流量事件),
#flowThreshold参数控制触发_flow_report事件阈值,使⽤流量超过该阈值后才触发,单位KB
flowThreshold=1024
#播放最多等待时间,单位毫秒
#播放在播放某个流时,如果该流不存在,
#ZLMediaKit会最多让播放器等待maxStreamWaitMS毫秒
#如果在这个时间内,该流注册成功,那么会⽴即返回播放器播放成功
#否则返回播放器未到该流,该机制的⽬的是可以先播放再推流
maxStreamWaitMS=15000
#某个流⽆⼈观看时,触发_stream_none_reader事件的最⼤等待时间,单位毫秒
#在配合_stream_none_reader事件时,可以做到⽆⼈观看⾃动停⽌拉流或停⽌接收推流streamNoneReaderDelayMS=20000
#拉流代理是否添加静⾳⾳频(直接拉流模式本协议⽆效)
addMuteAudio=1
#拉流代理时如果断流再重连成功是否删除前⼀次的媒体流数据,如果删除将重新开始,
#如果不删除将会接着上⼀次的数据继续写(录制hls/mp4时会继续在前⼀个⽂件后⾯写)
resetWhenRePlay=1
#是否默认推流时转换成hls,hook接⼝(on_publish)中可以覆盖该设置
publishToHls=1
#是否默认推流时mp4录像,hook接⼝(on_publish)中可以覆盖该设置
publishToMP4=0
#合并写缓存⼤⼩(单位毫秒),合并写指服务器缓存⼀定的数据后才会⼀次性写⼊socket,这样能提⾼性能,但是会提⾼延时#开启后会同时关闭TCP_NODELAY并开启MSG_MORE
mergeWriteMS=0
#全局的时间戳覆盖开关,在转协议时,对frame进⾏时间戳覆盖
#该开关对rtsp/rtmp/rtp推流、rtsp/rtmp/hls拉流代理转协议时⽣效
#会直接影响rtsp/rtmp/hls/mp4/flv等协议的时间戳
#同协议情况下不影响(例如rtsp/rtmp推流,那么播放rtsp/rtmp时不会影响时间戳)
modifyStamp=0
#服务器唯⼀id,⽤于触发hook时区别是哪台服务器
mediaServerId=your_server_id
[hls]
#hls写⽂件的buf⼤⼩,调整参数可以提⾼⽂件io性能
fileBufSize=65536
#hls保存⽂件路径
#可以为相对(相对于本可执⾏程序⽬录)或绝对路径
filePath=./www
filePath=./www
#hls最⼤切⽚时间
segDur=2
#m3u8索引中,hls保留切⽚个数(实际保留切⽚个数⼤2~3个)
#如果设置为0,则不删除切⽚,⽽是保存为点播
segNum=3
#HLS切⽚从m3u8⽂件中移除后,继续保留在磁盘上的个数
segRetain=5
# 是否⼴播 ts 切⽚完成通知
broadcastRecordTs=0
[hook]
#在推流时,如果url参数匹对admin_params,那么可以不经过hook鉴权直接推流成功,播放时亦然
#该配置项的⽬的是为了开发者⾃⼰调试测试,该参数暴露后会有泄露隐私的安全隐患
admin_params=secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
#是否启⽤hook事件,启⽤后,推拉流都将进⾏鉴权
enable=0
#播放器或推流器使⽤流量事件,置空则关闭
on_flow_report=127.0.0.1/index/hook/on_flow_report
#访问http⽂件鉴权事件,置空则关闭鉴权
on_http_access=127.0.0.1/index/hook/on_http_access
#播放鉴权事件,置空则关闭鉴权
on_play=127.0.0.1/index/hook/on_play
#推流鉴权事件,置空则关闭鉴权
on_publish=127.0.0.1/index/hook/on_publish
#录制mp4切⽚完成事件
on_record_mp4=127.0.0.1/index/hook/on_record_mp4
# 录制 hls ts 切⽚完成事件
on_record_ts=127.0.0.1/index/hook/on_record_ts
#rtsp播放鉴权事件,此事件中⽐对rtsp的⽤户名密码
on_rtsp_auth=127.0.0.1/index/hook/on_rtsp_auth
#rtsp播放是否开启专属鉴权事件,置空则关闭rtsp鉴权。rtsp播放鉴权还⽀持url⽅式鉴权
#建议开发者统⼀采⽤url参数⽅式鉴权,rtsp⽤户名密码鉴权⼀般在设备上⽤的⽐较多
#开启rtsp专属鉴权后,将不再触发on_play鉴权事件
on_rtsp_realm=127.0.0.1/index/hook/on_rtsp_realm
#远程telnet调试鉴权事件
on_shell_login=127.0.0.1/index/hook/on_shell_login
#直播流注册或注销事件
on_stream_changed=127.0.0.1/index/hook/on_stream_changed
#⽆⼈观看流事件,通过该事件,可以选择是否关闭⽆⼈观看的流。配合general.streamNoneReaderDelayMS选项⼀起使⽤
on_stream_none_reader=127.0.0.1/index/hook/on_stream_none_reader
#播放时,未到流事件,通过配合_stream_none_reader事件可以完成按需拉流
on_stream_not_found=127.0.0.1/index/hook/on_stream_not_found
#服务器启动报告,可以⽤于服务器的崩溃重启事件监听
on_server_started=127.0.0.1/index/hook/on_server_started
#hook api最⼤等待回复时间,单位秒
timeoutSec=10
[http]
#http服务器字符编码,windows上默认gb2312
charSet=utf-8
#http链接超时时间
keepAliveSecond=30
#http请求体最⼤字节数,如果post的body太⼤,则不适合缓存body在内存
maxReqSize=4096
#404⽹页内容,⽤户可以⾃定义404⽹页
notFound=<html><head><title>404 Not Found</title></head><body bgcolor="white"><center><h1>您访问的资源不存在!</h1></center><hr><center>ZLM ediaKit-4.0</center></body></html>
#http服务器监听端⼝
port=80
#http⽂件服务器根⽬录
#可以为相对(相对于本可执⾏程序⽬录)或绝对路径
rootPath=./www
#http⽂件服务器读⽂件缓存⼤⼩,单位BYTE,调整该参数可以优化⽂件io性能
sendBufSize=65536
#https服务器监听端⼝
#https服务器监听端⼝
sslport=443
#是否显⽰⽂件夹菜单,开启后可以浏览⽂件夹
dirMenu=1
[multicast]
#rtp组播截⽌组播ip地址
addrMax=239.255.255.255
#rtp组播起始组播ip地址
addrMin=239.0.0.0
#组播udp ttl
udpTTL=64
[record]
#mp4录制或mp4点播的应⽤名,通过限制应⽤名,可以防⽌随意点播
#点播的⽂件必须放置在此⽂件夹下
appName=record
#mp4录制写⽂件缓存,单位BYTE,调整参数可以提⾼⽂件io性能fileBufSize=65536
#mp4录制保存、mp4点播根路径
#可以为相对(相对于本可执⾏程序⽬录)或绝对路径
filePath=./www
#mp4录制切⽚时间,单位秒
fileSecond=3600
#mp4点播每次流化数据量,单位毫秒,
#减少该值可以让点播数据发送量更平滑,增⼤该值则更节省cpu资源sampleMS=500
#mp4录制完成后是否进⾏⼆次关键帧索引写⼊头部
fastStart=0
#MP4点播(rtsp/rtmp/http-flv/ws-flv)是否循环播放⽂件
fileRepeat=0
[rtmp]
#rtmp必须在此时间内完成握⼿,否则服务器会断开链接,单位秒handshakeSecond=15
#rtmp超时时间,如果该时间内未收到客户端的数据,
#或者tcp发送缓存超过这个时间,则会断开连接,单位秒keepAliveSecond=15
#在接收rtmp推流时,是否重新⽣成时间戳(很多推流器的时间戳着实很烂) modifyStamp=0
#rtmp服务器监听端⼝
port=1935
#rtmps服务器监听地址
sslport=19350
[rtp]
#⾳频mtu⼤⼩,该参数限制rtp最⼤字节数,推荐不要超过1400
#加⼤该值会明显增加直播延时
audioMtuSize=600
#rtp时间戳回环时间,单位毫秒
cycleMS=46800000
#视频mtu⼤⼩,该参数限制rtp最⼤字节数,推荐不要超过1400 videoMtuSize=1400
[rtp_proxy]
#udp类型的代理服务器是否检查rtp源地址,地址不配备将丢弃数据checkSource=1
#导出调试数据(包括rtp/ps/h264)⾄该⽬录,置空则关闭数据导出dumpDir=
ssl协议未开启的危害#udp和tcp代理服务器,⽀持rtp(必须是ts或ps类型)代理
port=10000
#rtp超时时间,单位秒
timeoutSec=15
[rtsp]
#rtsp专有鉴权⽅式是采⽤base64还是md5⽅式
#rtsp专有鉴权⽅式是采⽤base64还是md5⽅式
authBasic=0
#rtsp拉流代理是否是直接代理模式
#直接代理后⽀持任意编码格式,但是会导致GOP缓存⽆法定位到I帧,可能会导致开播花屏#并且如果是tcp⽅式拉流,如果rtp⼤于mtu会导致⽆法使⽤udp⽅式代理
#假定您的拉流源地址不是264或265或AAC,那么你可以使⽤直接代理的⽅式来⽀持rtsp代理#默认开启rtsp直接代理,rtmp由于没有这些问题,是强制开启直接代理的
directProxy=1
#rtsp必须在此时间内完成握⼿,否则服务器会断开链接,单位秒
handshakeSecond=15
#rtsp超时时间,如果该时间内未收到客户端的数据,
#或者tcp发送缓存超过这个时间,则会断开连接,单位秒
keepAliveSecond=15
#rtsp服务器监听地址
port=554
#rtsps服务器监听地址
sslport=322
[shell]
#调试telnet服务器接受最⼤bufffer⼤⼩
maxReqSize=1024
#调试telnet服务器监听端⼝
port=9000