2019-08-19 17:32:43 +08:00
[api]
#是否调试http api,启用调试后, 会打印每次http请求的内容和回复
apiDebug = 1
#一些比较敏感的http api在访问时需要提供secret, 否则无权限调用
#如果是通过127.0.0.1访问,那么可以不提供secret
secret = 035c73f7-bb6b-4889-a715-d9eb2d1925cc
[ffmpeg]
2019-10-18 10:06:18 +08:00
#FFmpeg可执行程序绝对路径
2019-08-19 17:32:43 +08:00
bin = /usr/local/bin/ffmpeg
#FFmpeg拉流再推流的命令模板, 通过该模板可以设置再编码的一些参数
cmd = %s -i %s -c:a aac -strict -2 -ar 44100 -ab 48k -c:v libx264 -f flv %s
#FFmpeg日志的路径, 如果置空则不生成FFmpeg日志
2019-10-18 10:06:18 +08:00
#可以为相对(相对于本可执行程序目录)或绝对路径
log = ./ffmpeg/ffmpeg.log
2019-08-19 17:32:43 +08:00
[general]
#是否启用虚拟主机
enableVhost = 1
#播放器或推流器在断开后会触发hook.on_flow_report事件(使用多少流量事件),
#flowThreshold参数控制触发hook.on_flow_report事件阈值, 使用流量超过该阈值后才触发, 单位KB
flowThreshold = 1024
#播放最多等待时间,单位毫秒
#播放在播放某个流时,如果该流不存在,
#ZLMediaKit会最多让播放器等待maxStreamWaitMS毫秒
#如果在这个时间内,该流注册成功,那么会立即返回播放器播放成功
#否则返回播放器未找到该流,该机制的目的是可以先播放再推流
maxStreamWaitMS = 5000
#某个流无人观看时, 触发hook.on_stream_none_reader事件的最大等待时间, 单位毫秒
#在配合hook.on_stream_none_reader事件时, 可以做到无人观看自动停止拉流或停止接收推流
streamNoneReaderDelayMS = 5000
2019-09-04 18:57:54 +08:00
#是否开启低延时模式, 该模式下禁用MSG_MORE,启用TCP_NODEALY, 延时将降低, 但数据发送性能将降低
ultraLowDelay = 1
2019-09-30 09:20:14 +08:00
#拉流代理是否添加静音音频(直接拉流模式本协议无效)
addMuteAudio = 1
2019-10-11 16:51:10 +08:00
#拉流代理时如果断流再重连成功是否删除前一次的媒体流数据,如果删除将重新开始,
#如果不删除将会接着上一次的数据继续写(录制hls/mp4时会继续在前一个文件后面写)
resetWhenRePlay = 1
2019-08-19 17:32:43 +08:00
[hls]
#hls写文件的buf大小, 调整参数可以提高文件io性能
fileBufSize = 65536
#hls保存文件路径
2019-10-18 10:06:18 +08:00
#可以为相对(相对于本可执行程序目录)或绝对路径
filePath = ./httpRoot
2019-08-19 17:32:43 +08:00
#hls最大切片时间
segDur = 3
#m3u8索引中,hls保留切片个数(实际保留切片个数大2~3个)
2019-09-26 14:21:20 +08:00
#如果设置为0, 则不删除切片, 而是保存为点播
2019-08-19 17:32:43 +08:00
segNum = 3
[hook]
#在推流时, 如果url参数匹对admin_params, 那么可以不经过hook鉴权直接推流成功, 播放时亦然
#该配置项的目的是为了开发者自己调试测试,该参数暴露后会有泄露隐私的安全隐患
admin_params = secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
#是否启用hook事件, 启用后, 推拉流都将进行鉴权
enable = 0
#播放器或推流器使用流量事件,置空则关闭
on_flow_report = https://127.0.0.1/index/hook/on_flow_report
#访问http文件鉴权事件, 置空则关闭鉴权
on_http_access = https://127.0.0.1/index/hook/on_http_access
#播放鉴权事件,置空则关闭鉴权
on_play = https://127.0.0.1/index/hook/on_play
#推流鉴权事件,置空则关闭鉴权
on_publish = https://127.0.0.1/index/hook/on_publish
#录制mp4切片完成事件
on_record_mp4 = https://127.0.0.1/index/hook/on_record_mp4
#rtsp播放鉴权事件, 此事件中比对rtsp的用户名密码
on_rtsp_auth = https://127.0.0.1/index/hook/on_rtsp_auth
#rtsp播放是否开启鉴权事件, 置空则关闭rtsp鉴权。rtsp播放鉴权还支持url方式鉴权
#建议开发者统一采用url参数方式鉴权, rtsp用户名密码鉴权一般在设备上用的比较多
on_rtsp_realm = https://127.0.0.1/index/hook/on_rtsp_realm
#远程telnet调试鉴权事件
on_shell_login = https://127.0.0.1/index/hook/on_shell_login
#直播流注册或注销事件
on_stream_changed = https://127.0.0.1/index/hook/on_stream_changed
#无人观看流事件, 通过该事件, 可以选择是否关闭无人观看的流。配合general.streamNoneReaderDelayMS选项一起使用
on_stream_none_reader = https://127.0.0.1/index/hook/on_stream_none_reader
#播放时, 未找到流事件, 通过配合hook.on_stream_none_reader事件可以完成按需拉流
on_stream_not_found = https://127.0.0.1/index/hook/on_stream_not_found
#hook api最大等待回复时间, 单位秒
timeoutSec = 10
[http]
#http服务器字符编码, windows上默认gb2312
charSet = utf-8
#http链接超时时间
keepAliveSecond = 10
#keep-alive类型的链接最多复用次数
maxReqCount = 100
#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>ZLMediaKit-4.0</center></body></html>
#http服务器监听端口
port = 80
#http文件服务器根目录
2019-10-18 10:06:18 +08:00
#可以为相对(相对于本可执行程序目录)或绝对路径
rootPath = ./httpRoot
2019-08-19 17:32:43 +08:00
#http文件服务器读文件缓存大小, 单位BYTE, 调整该参数可以优化文件io性能
sendBufSize = 65536
#https服务器监听端口
sslport = 443
[multicast]
#rtp组播截止组播ip地址
addrMax = 239.255.255.255
#rtp组播起始组播ip地址
addrMin = 239.0.0.0
#组播udp ttl
udpTTL = 64
[record]
#mp4录制或mp4点播的应用名, 通过限制应用名, 可以防止随意点播
2019-09-06 18:03:40 +08:00
#点播的文件必须放置在此文件夹下
2019-08-19 17:32:43 +08:00
appName = record
#mp4录制写文件缓存, 单位BYTE,调整参数可以提高文件io性能
fileBufSize = 65536
2019-09-06 18:03:40 +08:00
#mp4录制保存、mp4点播根路径
2019-10-18 10:06:18 +08:00
#可以为相对(相对于本可执行程序目录)或绝对路径
filePath = ./httpRoot
2019-08-19 17:32:43 +08:00
#mp4录制切片时间, 单位秒
fileSecond = 3600
#mp4点播每次流化数据量, 单位毫秒,
#减少该值可以让点播数据发送量更平滑, 增大该值则更节省cpu资源
2019-10-10 17:52:19 +08:00
sampleMS = 500
2019-10-10 13:37:56 +08:00
#mp4录制完成后是否进行二次关键帧索引写入头部
fastStart = 0
2019-09-30 09:20:14 +08:00
#MP4点播(rtsp/rtmp/http-flv/ws-flv)是否循环播放文件
fileRepeat = 0
2019-08-19 17:32:43 +08:00
[rtmp]
#rtmp必须在此时间内完成握手, 否则服务器会断开链接, 单位秒
handshakeSecond = 15
#rtmp超时时间, 如果该时间内未收到客户端的数据,
#或者tcp发送缓存超过这个时间, 则会断开连接, 单位秒
keepAliveSecond = 15
#在接收rtmp推流时, 是否重新生成时间戳(很多推流器的时间戳着实很烂)
modifyStamp = 1
#rtmp服务器监听端口
port = 1935
[rtp]
#音频mtu大小, 该参数限制rtp最大字节数, 推荐不要超过1400
#加大该值会明显增加直播延时
audioMtuSize = 600
#如果rtp的序列号连续clearCount次有序, 那么rtp将不再排序(目的减少rtp排序导致的延时)
clearCount = 10
#rtp时间戳回环时间, 单位毫秒
cycleMS = 46800000
#rtp排序map缓存大小, 加大该值可能会增大延时, 但是rtp乱序问题会减小
maxRtpCount = 50
#视频mtu大小, 该参数限制rtp最大字节数, 推荐不要超过1400
videoMtuSize = 1400
[rtsp]
#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
2019-10-12 18:35:26 +08:00
#在接收rtsp推流时, 是否重新生成时间戳(很多推流器的时间戳着实很烂)
modifyStamp = 1
2019-08-19 17:32:43 +08:00
[shell]
#调试telnet服务器接受最大bufffer大小
maxReqSize = 1024
#调试telnet服务器监听端口
port = 9000