user root;
# 运行worker进程的用户,一般遵循最低权限原则,避免用root。mark
worker_processes 1;
# worker进程的数量,一般为cpu核数减1,即master+worker的总数等于cpu核数。mark
error_log logs
/error
.log info;
# 错误日志的位置与level,一般为error.log info。
pid logs
/nginx
.pid;
# master进程的pid位置,一般为logs/nginx.pid,但使用同一二进制(sbin/nginx)运行多个实例时,应保证该配置不重名,避免pid文件被覆盖导致kill,reload等指令无法传达到nginx进程。mark
worker_rlimit_nofile 40960;
# 一个worker进程打开文件的最大数量。
dynamic_reslover on;
# 开启动态解析域名
dynamic_reslover_interval 20s;
# 动态解析域名的时间间隔
events {
# 连接处理相关的配置
worker_connections 40960;
# 一个worker进程同时接受的连接数量,注意不超过worker_rlimit_nofile。
use epoll;
#一个高效的连接处理方法。
}
rtmp {
# rtmp服务相关的配置
log_format rtmp
'$remote_addr\t$unix_time\t-\t-\t-\t-\t$bytes_received\t$command\t$tcurl\t$name\t-\t-\t-\t-\t-\t$pageurl\t$flashver\t$session_time'
;
# 日志格式
access_log logs
/access
.log rtmp;
# 访问日志的位置与级别。
server {
# 定义一个服务
listen 1935;
# 监听端口,可多次指定。
listen 9935;
# 如下四个配置项组合的含义是:每3s进行一次帧率的采样,采样6次后进行统计,当结果中低于60帧率的结果多于50%时,记录本次结果到日志,作为链路卡顿的参考。unclear
fps_sample_duration 3s;
# 帧率采样间隔。
fps_sample_count 6;
# 帧率采样次数(一周期)。
fps_sample_threshold 50;
# 帧率采样低于阀值的判断比例(一周期)。
fps_threshold 60;
# 帧率阀值。
drop_gop on;
# 视频的发送模式,on表示按帧发送,默认off。unclear
ack_window 2400000;
# 确认视窗大小,默认5000000字节。unclear
chunk_size 4096;
# 流整合块大小的最大值,不能小于128。备注:chunk_size越大cpu负载越小。
publish_time_fix off;
# unknown。
application pengrunlive {
# 一个名为pengrunlive的应用,一般1个应用对应1个挂载点。
live on;
# 直播模式(一堆多广播)。
wait_key off;
# 从关键帧开始发送。
wait_video off;
# 第一个视频帧发送之前禁用音频。
sync
1000ms;
# 音频和视频同步的最大时间差。当音、视频的同步时间差超过sync指定的值,发送绝对帧。
drop_idle_publisher 60s;
# 推流最大闲置时长,仅对发布模式起作用,默认off。闲置(无视频,无音频)时间大于该值,终止连接。
ip_link on;
# unknown
meta copy;
# 发送元数据到客户端,有[on, off, copy]三种模式。on:【解析metadata】。off:【不发送】。copy:【不解析,直接透传】。
allow publish all;
# 允许来自特定ip、网段的推流。
allow play all;
# 允许来自特定ip、网段的拉流。
deny publish all;
# 禁止来自特定ip、网段的拉流。
dn_tcurl publishdl.xcbobo.com;
# tcurl验证。unclear
notify_method get;
# HTTP通知的方法。默认是带有application/x-www-form-urlencoded头信息的POST。特定情况下GET更好,例如在nginx的http{}部分处理时,可以用arg_*变量访问参数。
on_publish_failed_interval 3s;
# 推送失败间隔
on_play http:
//xxxxxxxxx/xxx
;
# 在建立拉流时调用接口,根据返回值执行操作。2xx:【继续rtmp会话】。3xx:【重定向rtmp到另一个流】。
on_publish http:
//101
.69.167.50
/XKHRTMP
;
# 同上
exec_publish
/usr/local/nginx/conf/stopstream
.pl $app $name $addr;
# 在建立推流时调用脚本。
exec_publish_done xxxxxxxxxxxx;
# 在推流结束时调用脚本。
push rtmp:
//HDZJHZ5
.dnionrtmp.com:1835
/star
;
# 转推地址。
stream_cover_rtmp on;
# 流覆盖。unclear
on_already_publish on;
# unknown
record;
# 录制模式。
record_path
/data/star/
;
# 录制文件的存放路径。
record_suffix -%d-%b-%y-%T.flv;
# 录制文件的后缀。
record_interval 60s;
# 指定时间后重启录制。unclear
record_unique on;
# 添加时间戳到录制文件名。
exec_record_done xxxxxxxx;
# 在录制结束时调用的脚本。
}
}
}