实时监督检查,module配置指令详解威尼斯人6799.com

在意:那里不会讲到nginx流媒人体模型块怎样设置的标题,只商讨rtmp,hls直播和录像相关的nginx服务器配置文件的详实用法和表达。能够对照那几个命令详解配置nginx
-rtmp服务

译序:截止 Jul 8th,2011 官方宣布的摩登 Nginx 牧马人TMP 模块 nginx-rtmp-module
指令详解。
指令
Core
rtmp
语法:rtmp { … }
上下文:根
叙述:保存全数 奥迪Q5TMP 配置的块。
server
语法:server { … }
上下文:rtmp
讲述:声飞鹤个 智跑TMP 实例。
rtmp {
  server {
  }
}

listen
语法:listen (addr[:port]|port|unix:path) [bind] [ipv6only=on|off]
[so_keepalive=on|off|keepidle:keepintvl:keepcnt]
上下文:server
讲述:给 NGINX 添加1个监听端口以吸收 RAV4TMP 连接。
server {
    listen 1935;
}

application
语法:application name { … }
上下文:server
叙述:成立三个 卡宴TMP 应用。application 名的情势并不像样于 http
location。
server {
    listen 1935;
    application myapp {
    }
}

timeout
语法:timeout value
上下文:rtmp, server
叙述:Socket 超时。这么些值首要用于写多少时。当先八分之四气象下,LX570TMP
模块并不指望除 publisher
端口之外的别的端口处于活动状态。假若您想要快速关掉 socket 能够用
keepalive 只怕 纳瓦拉TMP ping 等。timeout 私下认可值为 1 分钟。
timeout 60s;
ping
语法:ping value
上下文:rtmp, server
叙述:路虎极光TMP ping 间隔。零值的话将 ping 关掉。CRUISERTMP ping
是一个用来检查活动三番五次的说道成效。发送2个分化日常的包到远程连接,然后在
ping_timeout 指令钦赐的时光内期待3个回复。假若在那个日子里从未接过
ping 回复,连接断开。ping 暗中认可值为一分钟。ping_timeout 暗中认可值为 30
秒。
ping 3m;
ping_timeout 30s;

ping_timeout
语法:ping_timeout value
上下文:rtmp, server
叙述:请参见上文 ping 描述。
max_streams
语法:max_streams value
上下文:rtmp, server
叙述:设置 TucsonTMP
流的最大数量。数据流被重组到3个纯粹的数据流里。分化的频道用于发送命令、音频、录像等。私下认可值为
32,适用于大部分景观。
max_streams 32;
ack_window
语法:ack_window value
上下文:rtmp, server
叙述:设置 卡宴TMP
确认视窗大小。那是对端发送确认包到远端后应该接受的字节数量。暗中认可值为
5000000。
ack_window 5000000;
chunk_size
语法:chunk_size value
上下文:rtmp, server
叙述:流整合的最大的块大小。私下认可值为 4096。那几个值设置的越大 CPU
负载就越小。这一个值不能够低于 128。
chunk_size 4096;
max_queue
语法:max_queue value
上下文:rtmp, server
叙述:输入数据报文最大尺寸。全体输入数据会被分割成报文(然后一发细分为块)。报文在拍卖实现此前会放在内部存款和储蓄器里。理论上讲,接收到的报文非常的大的话对于服务器的八面见光大概会有影响。暗中同意值
1M 对于大多数状态就丰盛了。
max_message 1M;
out_queue
out_cork
Access
allow
语法:allow [play|publish] address|subnet|all
上下文:rtmp, server, application
同意来自钦命地址或许持有地点发表/播放。allow 和 deny
指令的先后顺序可选。
allow publish 127.0.0.1;
deny publish all;
allow play 192.168.0.0/24;
deny play all;

deny
语法:deny [play|publish] address|subnet|all
上下文:rtmp, server, application
描述:参考 allow 的描述。
Exec
exec
语法:exec command arg*
上下文:rtmp, server, application
叙述:定义每种流揭橥时要执行的包涵参数的外部命令。发表结束时经过终止。第一个参数应该是二进制可执行文件的完好路径。关于这么些进程将会做些什么事从未别的假定。但这一特点在应用
ffmpeg 举行流转换时是很有用的。FFmpeg 被假定作为客户端连接到 nginx-rtmp
然后作为发表者输出转换流到 nginx-rtmp。类似于 $var/${var}
格局的轮换能够在命令行使用:
* $name – 流的名字。
* $app – 应用名。
* $addr – 客户端地址。
* $flashver – 客户端 flash 版本。
* $swfurl – 客户端 swf url。
* $tcurl – 客户端 tc url。
* $pageurl – 客户端页面 url。
可以在 exec 指令中定义 Shell
格式的转速符用于写输出和吸收输入。援救如下
* 截断输出 >file。
* 附加输出 >>file。
* 重定向描述符类似于 1>&2。
* 输入 <file。
以下 ffmpeg 调用将输入流转码为 HLS-ready
流(H264/AAC)。运维那么些示例,FFmpeg 须编写翻译为永葆 libx264 & libfaac。
**application src {
    live on;
    exec ffmpeg -i rtmp://localhost/src/$name -vcodec libx264 -vprofile
baseline -g 10 -s 300×200 -acodec libfaac -ar 44100 -ac 1 -f flv
rtmp://localhost/hls/$name 2>>/var/log/ffmpeg-$name.log;
}

一 、nginx的hls配置实例

注:nginx采用nginx1.9.x版本

实例配置如下(上面会讲课种种指令的意思和用法):

rtmp
{

  server
  {
     listen 1935;
     chunk_size 8192;

   #vod config

     application vod
     {
        play /var/vod/flv;
     }

   #live config

     application live
     {
        live on;
        max_connections 1024;
        allow play all;

        record_path /var/live;

        recorder audio
        {
           record audio;
           record_suffix -%d-%b-%y-%T.flv;
        } 
        recorder chunked
        {
           record all;
          #record_max_size 5120K;
           record_interval 15s;
           record_path /var/live/chunked;
        }
     }

   #hls

      application hls
      {
        live on;
        hls on;
        hls_path /var/hls;
        hls_playlist_length 30s;
        hls_sync 100ms;        
        meta on;
        recorder chunked
        {
           record all;
          #record_max_size 5120K;
           record_interval 15s;
           record_path /var/hls/Chunked;
        }
        recorder audio 
        {
           record audio;
           record_suffix -%d-%b-%y-%T.flv;
        }
      }

   }
}

application hls {
    live on;
    hls on;
    hls_path /tmp/hls;
    hls_fragment 15s;
}
exec_static
语法:exec_static command arg*
上下文:rtmp, server, application
讲述:类似于 exec 指令,但在 nginx
运行时将运营定义的授命。因为(运转时)尚无会话上下文,不帮助替换。
exec_static ffmpeg -i http://example.com/video.ts -c copy -f flv
rtmp://localhost/myapp/mystream;
exec_kill_signal
语法:exec_kill_signal signal
上下文:rtmp, server, application
叙述:设置进程终止信号。私下认可为
kill(SIGKILL)。你能够定义为数字恐怕符号名(POSIX.1-1987 信号)。
exec_kill_signal term;
exec_kill_signal usr1;
exec_kill_signal 3;
respawn
语法:respawn on|off
上下文:rtmp, server, application
讲述:假诺打开 respawn 子进度,进度终止时公布会依旧此起彼伏。私下认可为打开。
respawn off;
respawn_timeout
语法:respawn_timeout timeout
上下文:rtmp, server, application
讲述:运维新的种子例此前,设置 respawn 超时时间。暗中同意为五秒。
respawn_timeout 10s;
exec_publish
语法:exec_publish command arg*
上下文:rtmp, server, application
叙述:钦赐公布事件触发的含有参数的外部命令。再次来到码是未解析的。那里能够用
exec 替换。别的,args 变量扶助具备查询字符串参数。
exec_play
语法:exec_play command arg*
上下文:rtmp, server, application
叙述:钦点播放事件触发的包蕴参数的外部命令。重临码是未解析的。替换列表同
exec_publish。
exec_play_done
语法:exec_play_done command arg*
上下文:rtmp, server, application
叙述:钦点播放达成事件触发的盈盈参数的外部命令。重返码是未解析的。替换列表同
exec_publish。
exec_publish_done
语法:exec_publish_done command arg*
上下文:rtmp, server, application
叙述:钦定发布甘休事件触发的含有参数的外部命令。再次回到码是未解析的。替换列表同
exec_publish。
exec_record_done
语法:exec_record_done command arg*
上下文:rtmp, server, application, recorder
叙述:钦命录制达成时接触的涵盖参数的外部命令。那里援救 exec_publish
的代表以及额外的变量 path 和 recorder。
# track client info
exec_play bash -c “echo $addr $pageurl >> /tmp/clients”;
exec_publish bash -c “echo $addr $flashver >> /tmp/publishers”;

② 、配置详解

注:配置指令的阐述基于nginx官方的二零一二年nginx-rtmp-model文书档案

# convert recorded file to mp4 format
exec_record_done ffmpeg -y -i $path -acodec libmp3lame -ar 44100 -ac 1
-vcodec libx264 $path.mp4; Live
live
语法:live on|off
上下文:rtmp, server, application
讲述:切换直播格局,即一对多广播。
live on;
meta
语法:meta on|off
上下文:rtmp, server, application
叙述:切换发送元数据到客户端。私下认可为 on。
meta off;
interleave
语法:interleave on|off
上下文:rtmp, server, application
讲述:切换交叉情势。在那些格局下,音频和摄像数据会在同一个 LX570TMP chunk
流中传输。暗许为 off。
interleave on;
wait_key
语法:wait_key on|off
上下文:rtmp, server, application
叙述:使录制流从二个关键帧早先。暗中认可为 off。
wait_key on;
wait_video
语法:wait_video on|off
上下文:rtmp, server, application
讲述:在率先个摄像帧发送在此之前禁止使用音频。默许为 off。可以和 wait_key
举办整合以使客户端能够吸纳全体全数其他数据的摄像关键帧。可是那平常增添连接延迟。您能够通过在编码器中调整首要帧间隔来压缩延迟。
wait_video on;
publish_notify
语法:publish_notify on|off
上下文:rtmp, server, application
描述:发送 NetStream.Publish.Start 和 NetStream.Publish.Stop
给用户。默认为 off。
publish_notify on;
drop_idle_publisher
语法:drop_idle_publisher timeout
上下文:rtmp, server, application
讲述:终止钦定时间内闲置(没有节奏/摄像数据)的公布连接。暗许为
off。注意这么些唯有对于发表情势的连天起效果(发送 publish 命令之后)。
drop_idle_publisher 10s;
sync
语法:sync timeout
上下文:rtmp, server, application
讲述:同步音频和摄像流。假如用户带宽不足以接收宣布率,服务器会丢掉一些帧。那将造成同步难点。当时间戳差超越sync 钦赐的值,将会发送三个相对帧来消除这些难点。暗中同意为 300 ms。
sync 10ms;
play_restart
语法:play_restart on|off
上下文:rtmp, server, application
叙述:使 nginx-rtmp 能够在宣布运转或终止时发送 NetStream.Play.Start 和
NetStream.Play.Stop
到各样用户。尽管关闭的话,那么各类用户就只能在回看的上马和终结时接受这几个通告了。私下认可为
on。
play_restart off; Record
record
语法:record [off|all|audio|video|keyframes|manual]*
上下文:rtmp, server, application, recorder
叙述:切换摄像格局。流能够被记录到 flv 文件。本指令钦命相应被记录的:
* off – 什么也不摄像
* all – 音频和录制(全体)
* audio – 音频
* video – 视频
* keyframes – 只摄像关键录制帧
* manual – 用不自动运转录像,使用控制接口来运维/结束
在单个记录指令中能够有其余兼容的组合键。
record all;

1、rtmp{}

是三个用来保存全数rtmp配置的块

在此处便是rtmp直播录播配置的根

record audio keyframes;
record_path
语法:record_path path
上下文:rtmp, server, application, recorder
讲述:内定录像的 flv 文件存放目录。
record_path /tmp/rec;
record_suffix
语法:record_suffix value
上下文:rtmp, server, application, recorder
叙述:设置录像文件后缀名。暗许为 ‘.flv’。
record_suffix _recorded.flv;
摄像后缀能够匹配 strftime 格式。以下指令
record_suffix -%d-%b-%y-%T.flv
将会产生形如 mystream-24-Apr-13-18:23:38.flv 的文件。全部支持 strftime
格式的选项能够在 strftime man page 里开始展览查找。
record_unique
语法:record_unique on|off
上下文:rtmp, server, application, recorder
讲述:是不是丰盛时间戳到录像文件。否则的话一样的文本在每一回新的录像发生时将被重写。暗许为
off。
record_unique on;
record_append
语法:record_append on|off
上下文:rtmp, server, application, recorder
叙述:切换文件附加格局。当这一发令为打开是,录像时将把新数据附加到老文件,假若老文件丢失的话将另行成立两个。文件中的老多少和新数据没有时间差。暗许为
off。
record_append on;
record_lock
语法:record_lock on|off
上下文:rtmp, server, application, recorder
叙述:当这一下令开启时,当前录像文件将被 fcntl
调用锁定。这样能够在其他地点来核实哪个文件正在展开录像。暗中认可为 off。
record_lock on;**
在 FreeBSD 上您能够采纳 flock 工具检查。在 Linux 上 flock 和 fcntl
非亲非故,因而你必要去写1个简单易行的脚本来检查文件的锁定状态。以下
isunlocked.py 是叁个如此的本子的演示。

2、server{}

server块里面放服务器实例,比如配置里的五个application(application在第伍个说明)

[python] view
plain
 copy

3、listen

listen对比好精通,监听有些端口,让nginx监听并接受rtmp连接

 

4、chunk_size

收到网络流的块大小,接触过NIO的相应比较清楚,基于块比基于流效能要高,chunk_size暗许值是4096,至少128,数字越大服务器负荷越高,服务器调优那里较为关键

 

5、注释:#

nginx配置文件里使用‘#’作为注释

 

6、application

见名知意,创造二个接纳/实例,前边接上应用实例类型,如上布署,创造了四个应用,比如上面配置的四个服务器应用实例:(1)rtmp录播(vod),(2)rtmp直播(live),(3)hls直播(hls)

最首要:rtmp模块的配备与nginx的http模块是三种不相同的安顿指令,两者不要混淆

 

七 、vod(录播)配置详解

play  录播的广播目录

  1. #!/usr/bin/python  
  2.   
  3.   
  4. import fcntl, sys  
  5.   
  6.   
  7. sys.stderr.close()  
  8. fcntl.lockf(open(sys.argv[1], “a”), fcntl.LOCK_EX|fcntl.LOCK_NB)  

八 、live(直播)配置详解

record_max_size
语法:record_max_size size
上下文:rtmp, server, application, recorder
讲述:设置摄像文件的最大值。
record_max_size 128K;
record_max_frames
语法:record_max_frames nframes
上下文:rtmp, server, application, recorder
叙述:设置各样录像文件的录像帧的最大数据。
record_max_frames 2;
record_interval
语法:record_interval time
上下文:rtmp, server, application, recorder
叙述:在这么些命令钦定数量的(皮秒)秒以后重启摄像。暗中认可为 off。设置为 0
的话代表摄像中无延迟。若是 record_unique 为 off
的话全数记录片段会被写到同3个文本。不然(文件名)将附以时间戳以界别分化文件(给定的
record_interval 要大于 1 秒)。
**record_interval 1s;

(1)live   on/off

直播形式,一对多广播

record_interval 15m;
recorder
语法:recorder name {…}
上下文:application
叙述:创造录像块。能够在单个 application
中开创多少个记录。上文提到的富有摄像相关的指令都能够在 recorder{}
块中开始展览定义。继承高层次中的全部安装。
application {
    live on;

(2)max_connections

最罗安达接数,rtmp直播流协议属于长连接协议,服务器能开多少连接要把握好,hls协议是基于http的协议,所以理论上要比rtmp协议并发量要高很多

    # default recorder
    record all;
    record_path /var/rec;

(3)allow play/publish all/ip地址

允许来自钦点的地址/全数地方播放和表露

比如说上边配置使用allow play
all允许具备地点播放实时代风尚,假使设置成allow play 127.0.0.1
正是只同意本地播放;

再举个例证:allow publish
127.0.0.1正是同意本机公布实时流,其余地点都不能够公布。

    recorder audio {
        record audio;
        record_suffix .audio.flv;
    }

(4)record_path

用来钦定录像文件的目录,私下认可是/tmp

    recorder chunked {
        record all;
        record_interval 15s;
        record_path /var/rec/chunked;
    }
}
record_notify
语法:record_notify on|off
上下文:rtmp, server, application, recorder
叙述:切换当定义录像运营或终止文件时发送 NetStream.Record.Start 和
NetStream.Record.Stop
状态新闻(onStatus)到发表者。状态描述字段保存录像的名字(暗中认可摄像的话为空)。暗许为
off。
recorder myrec {
    record all manual;
    record_path /var/rec;
    record_notify on;
} VOD
play
语法:lay dir|http://loc [dir|http://loc\]\*
上下文:rtmp, server, application
叙述:播放钦命目录或然 HTTP 地址的 flv 可能 mp3 文件。倘诺此参数前缀是
http:// 那么就觉得文件能够在播报前从远程 http
地址下载下来。注意播放是在全部文件下载实现之后才起来。你能够行使当地
nginx 在地点机械缓存文件。
同1个 play 指令能够定义多少个广播地址。当多少个 play
指令定义时,地址列表将被联合,并开始展览从更高域中继续。尝试播放每1个地址,直到发现贰个得逞的地址。即使没有找到成功地址,将发送错误状态到客户端。
目录的 FLV 播放具有自由查找能力。没有索引的 FLV
则不持有查找/暂停能力(重放情势)。使用 FLV 索引器(比如 yamdi)来编索引。
mp3 文件唯有在节奏和录像编码都被 帕杰罗TMP 协助时才方可播放。最常见的气象是
H264/AAC。
application vod {
    play /var/flvs;
}

(5)record  off/all/video/audio/keyframes/maual

record off:什么都不录制

record all:摄像全部

record video:只摄像摄像

record audio:只摄像音频

record keyframes:只录制关键帧

record
maual:通过接口控制录像的启航甘休

可以开始展览整合,比如:record video
keyframes:便是只摄像摄像关键帧

application vod_http {
    play http://myserver.com/vod;
}

(6)record suffix

摄像文件的文书名后缀,暗中同意是.flv

比如上面的安顿 record suffix
-%d-%b-%y-%T.flv,录像文件生成文书名正是这么(举例):应用名-24-Jul-04-17:07:45.flv

application vod_mirror {
    # try local location first, then access remote location
    play /var/local_mirror http://myserver.com/vod;
}**
播放 /var/flvs/dir/file.flv:

(7)record_max_size

上边配置:record_size 5120k,录像文件的最大值是5M

[plain] view
plain
 copy

(8)record_interval

配备里的:record_interval
15s,就是录像文件的区间,间隔15秒开始下一个有些的摄像;

设置成 record_interval
0便是录像摄像文件没有距离;

安装成record-interval
off就会把装有摄像流全都写到3个文书里去。

重在:想要把流媒体保存文件,这么些能够用来做文件分片,能够按天恐怕按小时变化新的文本,很实用的作用

 

九 、hls直播配置详解

 

(1)hls on 

本条参考 live
on就行了,一点也不细略,正是开不开启hls,hls off正是不开启

 

(2)hls_path

就算摄像摄像文件的目录/路径

 

(3)hls_playlist_length

hls播放列表长度,暗中认可二十八分钟,那里设置成30秒:hls_playlist_length
30s

  1. ffplay rtmp://localhost/vod/dir/file.flv  

(4)hls_sync

安装hls时间戳同步阈值,通俗一点正是强制的音/录制同步,能够免患音画不一样步的情景,暗中认可是2ms,

play_temp_path
语法:play_temp_path dir
上下文:rtmp, server, application
讲述:在播音以前设置远程存款和储蓄的 VOD 文件路径。默许为 /tmp。
play_temp_path /www;
play http://example.com/videos;

play_local_path
语法:play_local_path dir
上下文:rtmp, server, application
叙述:设置远程 VOD 文件完全下载之后复制于 play_temp_path
之后的途径。空值的话禁止使用此效能。暗中认可为控制。这一个效果能够用于缓存远程文件在地面。
这一途径应该和 play_temp_path 处于相同设备。
**# search file in /tmp/videos.
# if not found play from remote location
# and store in /tmp/videos

(5)meta on

切换发送摄像元数据到客户端,默许就是meta
on,假使想要用修改后的录制得用meta off了

play_local_path /tmp/videos;
play /tmp/videos http://example.com/videos;**
Relay
pull
语法:pull url [key=value]*
上下文:application
讲述:创设 pull
中继。流将从远程服务器上拉下来,成为地方可用的。仅当至少有五个播放器正在播放本地流时发生。
Url 语法:[rtmp://]host[:port][/app[/playpath]]。假设application 找不着那么将会采取当地 application 名。倘使找不着 playpath
那么正是用当下流的名字。
援助以下参数:
* app – 明确 application 名。
* name – 捆绑到 relay 的地点流名字。就算为空或然没有定义,那么将会使用
application 中的全体地方流。
* tcUrl – 要是为空的话自动营造。
* pageUrl – 模拟页面 url。
* swfUrl – 模拟 swf url。
* flashVer – 模拟 flash 版本,默认为 ‘LNX.11,1,102,55’。
* playPath – 远程播放地址。
* live – 切换直播特殊表现,值:0,1。
* start – 早先时间。
* stop – 甘休时间。
* static – 成立静态 pull,这样的 pull 在 nginx 运行时创设。
万一某参数的值包涵空格,那么您应有在总体 key=value
对周围采纳引号,比如:’pageUrl=FAKE PAGE U凯雷德L’。
**pull rtmp://cdn.example.com/main/ch?id=12563 name=channel_a;

③ 、本篇小说的配备文件就只有上面那么多,上边补充部分常用到的nginx rtmp指令

pull rtmp://cdn2.example.com/another/a?b=1&c=d
pageUrl=http://www.example.com/video.html
swfUrl=http://www.example.com/player.swf live=1;

1、recorder块

成立录像块,能够在application块中添加三个recorder记录,recorder块中得以使用全体录像指令,recorder块继承application块中的录像指令。(所有record初始的都以摄像指令)。

pull rtmp://cdn.example.com/main/ch?id=12563 name=channel_a static;
push
语法:push url [key=value]*
上下文:application
叙述:push 的语法和 pull 一样。不相同于 pull 指令的是 push
推送公布流到长途服务器。
push_reconnect
语法:push_reconnect time
上下文:rtmp, server, application
叙述:在断开连接后,在 push 重新连接前等候的小运。暗中同意为 3 秒。
push_reconnect 1s;
session_relay
语法:session_relay on|off
上下文:rtmp, server, application
讲述:切换会话 relay 方式。在那种方式下三番五次关闭时 relay 销毁。当设置为
off 时,流关闭,relay 销毁,那样子之后另3个 relay 能够被创造。默许为
off。
session_relay on; Notify*
on_connect
语法:on_connect url
上下文:rtmp, server
叙述:设置 HTTP 连接回调。当客户分发连接命令1个老是命令时,3个 HTTP
请求异步发送,命令处理将被中止,直到它回到结果代码。当 HTTP 2XX
码(成功状态码)重临时,福睿斯TMP 会话继续。再次来到码 3XX (重定向状态码)会使 TucsonTMP
重定向到另贰个从 HTTP 再次来到头里获得到的
application。不然(其余状态码)连接抛弃。
留意这一指令在 application 域是不容许的,因为 application
在接二连三阶段依旧大惑不解的。
HTTP 请求接收到有的参数。在 application/x-www-form-urlencoded MIME
类型下行使 POST 方法。以下参数将被传给调用者:
\
call=connect。
* addr – 客户端 IP 地址。
* app – application 名。
* flashVer – 客户端 flash 版本。
* swfUrl – 客户端 swf url。
* tcUrl – tcUrl。
* pageUrl – 客户端页面 url。
而外上述参数以外,全部显式传递给连接命令的参数也由回调发送。你应有将连续参数和
play/publish 参数区分开。播放器日常有很是的办法设置连接字符串差别于
play/publish 流名字。那里是 JWPayer 是怎么着设置那几个参数的一个演示:

live指令补充:

[plain] view
plain
 copy

2、wait_key 

wait_key指令是还是不是等待录制从一个关键帧初始(录播想要完结录制的进度随意支配就要求录像中存在关键帧),

默认是off:不开启,设置为on:开启。

 

3、drop_idle_publisher

悬停钦点时间内空闲的发表连接,暗中同意是不打开,如

 

drop_idle_publisher 10s; 推荐开启该功用

 

4、sync

同步音频和摄像,暗许是 sync 300ms。

那是很广阔的题材,若是用户的带宽不足就会自动放任一些帧,那时就会生出一块难点;

sync指令效能正是隔一段时间发送三个时辰戳来同步音频和摄像。

 

5、meta

出殡元数据到客户端,默许是 meta on;meta
off正是不发送元数据,一般不须要改变。

(音录制的元数据包罗部分摄像的着力新闻,比如标题,文件大小,关键帧,录制长度等等音讯)

  1. …  
  2. streamer: “rtmp://localhost/myapp?connarg1=a&connarg2=b”,  
  3. file: “mystream?strarg1=c&strarg2=d”,  
  4. …  

record指令补充:

Ffplay(带有 librtmp)示例:

1、record_unique

是否丰盛时间戳到录像文件,暗中同意是
record_unique off:不添加

不打开的成效正是平等的摄像文件每一次录制的时候都会被遮盖重写,当然能够通过给文件名添加时间后缀的花样制止,其实五个职能是同一的,四个足以操纵格式,一个无法说了算格式的题材

[plain] view
plain
 copy

2、record_append

切换文件的附加方式,暗许是record_append
off

若是设置成on开启的话摄像的时候就会在老文件前面增添录像,不打开的机能就是地方讲到的覆盖重写

 

3、record_lock

录像的时候锁定文件,暗许是off;

不锁定的话,客户端可以实时播报录像的录制,能够直达跟直播一样的功能了

 

4、record_max_frames

录像文件的最大录像帧数量,比如record_max_frames
20
便是那些摄像文件最大二十个录制帧(摄像帧的意义方面已经表达过了,用来控制速度拖放的)

 

HLS指令补充:

未完待续

 

  1. ffplay “rtmp://localhost app=myapp?connarg1=a&connarg2=b playpath=mystream?strarg1=c&strarg2=d”  

利用例子:
on_connect http://example.com/my\_auth;
重定向例子:
location /on_connect {
    if ($arg_flashver != “my_secret_flashver”) {
        rewrite ^.*$ fallback? permanent;
    }
    return 200;
}

on_play
语法:on_play url
上下文:rtmp, server, application
讲述:设置 HTTP 播放回调。每一次一个客户分发播放命令时,3个 HTTP
请求异步发送,命令处理会挂起 – 直到它回到结果码。之后再分析 HTTP
结果码。
* HTTP 2XX 重返码的话继续 LANDTMP 会话。
* HTTP 3XX 重回码的话 重定向 瑞虎TMP 到另七个流,那几个流的名字在 HTTP
再次来到头的 Location 获取。假使新流的名字早先于 rtmp:// 然后远程 relay
会被创建。relay 供给 IP 地址是钦赐的而不是域名,并且只工作在 1.3.10
版本以上的 nginx。另请参见 notify_relay_redirect。
* 别的再次回到码的话 LacrosseTMP 连接舍弃。
重定向例子:
*http {
    …
    location /local_redirect {
        rewrite ^.\
$ newname? permanent;
    }
    location /remote_redirect {
        # no domain name here, only ip
        rewrite ^.*$ rtmp://192.168.1.123/someapp/somename?
permanent;
    }
    …
}

rtmp {
    …
    application myapp1 {
        live on;
        # stream will be redirected to ‘newname’
        on_play http://localhost:8080/local\_redirect;
    }
    application myapp2 {
        live on;
        # stream will be pulled from remote location
        # requires nginx >= 1.3.10
        on_play http://localhost:8080/remote\_redirect;
    }
    …
}
HTTP 请求接收到有的个参数。在 application/x-www-form-urlencoded MIME
类型下选拔 POST 方法。以下参数会被传送给调用者:
* call=play。
* addr – 客户端 IP 地址。
* app – application 名。
* flashVer – 客户端 flash 版本。
* swfUrl – 客户端 swf url。
* tcUrl – tcUrl。
* pageUrl – 客户端页面 url。
* name – 流名。
出了上述参数之外任何具有播放命令参数显式地发送回调。例如借使3个流由 url
rtmp://localhost/app/movie?a=100&b=face&foo=bar 访问,然后呢 a,b 和 foo
发送回调。
on_play http://example.com/my\_callback;**
on_publish
语法:on_publish url
上下文:rtmp, server, application
叙述:同地点提到的 on_play
一样,唯一的差别点在于这几个命令在公布命令设置回调。差别于远程 pull,push
在那边是足以的。
on_done
语法:on_done url
上下文:rtmp, server, application
叙述:设置播放/公布禁止回调。上述全数适用于此。但以此回调并不检查 HTTP
状态码。
on_play_done
语法:on_publish_done url
上下文:rtmp, server, application
描述:等同于 on_done 的显示,但只适用于播放完毕事件。
on_publish_done
语法:on_publish_done url
上下文:rtmp, server, application
描述:等同于 on_done 的显现,但只适用于宣布截至事件。
on_record_done
语法:on_record_done url
上下文:rtmp, server, application, recorder
描述:设置 record_done 回调。除了常见 HTTP
回调参数它接受录像文件路径。
on_record_done http://example.com/recorded;
on_update
语法:on_update url
上下文:rtmp, server, application
讲述:设置 update 回调。那几个回调会在 notify_update_timeout
时期调用。要是一个伸手再次回到结果不是
2XX,连接禁止。那能够用来一起过期的对话。追加 time
参数即播放/宣布调用后的秒数会被发送给处理程序。
on_update http://example.com/update;
notify_update_timeout
语法:notify_update_timeout timeout
上下文:rtmp, server, application
描述:在 on_update 回调之间的逾期设置。暗中同意为 30 秒。
notify_update_timeout 10s;
on_update http://example.com/update;

notify_update_strict
语法:notify_update_strict on|off
上下文:rtmp, server, application
描述:切换 on_update 回调严酷情势。暗许为 off。当设置为 on
时,全数连接错误,超时以及 HTTP
解析错误和空重返会被视为更新失利并造成连日终止。当设置为 off 时唯有 HTTP
重临码分裂于 2XX 时造成破产。
notify_update_strict on;
on_update http://example.com/update;

notify_relay_redirect
语法:notify_relay_redirect on|off
上下文:rtmp, server, application
叙述:使本地流能够重定向为 on_play 和 on_publish
远程重定向。新的流名字是 中华VTMP UTiggoL 用于远程重定向。暗中同意为 off。
notify_relay_redirect on;
notify_method
语法:notify_method get|post
上下文:rtmp, server, application, recorder
讲述:设置 HTTP 方法公告。暗中同意是包涵 application/x-www-form-urlencoded
的 POST 内容类型。在有个别情景下 GET 更好,例如假诺您打算在 nginx 的
http{} 部分处理调用。在那种景色下您能够接纳 arg_* 变量去拜访参数。
notify_method get;
在 http{} 部分使用 GET 方法处理通报能够行使那种方法:
location /on_play {
    if ($arg_pageUrl ~* localhost) {
        return 200;
    }
    return 500;
}

HLS
hls
语法:hls on|off
上下文:rtmp, server, application
描述:在 application 切换 HLS。
hls on;
hls_path /tmp/hls;
hls_fragment 15s;

在 http{} 段为客户端播放 HLS 设置在以下任务设置:
http {
    …
    server {
        …
        location /hls {
            types {
                application/vnd.apple.mpegurl m3u8;
            }
            alias /tmp/hls;
        }
    }
}

hls_path
语法:hls_path path
上下文:rtmp, server, application
讲述:设置 HLS 播放列表和分支目录。这一目录必须在 NGINX
运维前就已存在。
hls_fragment
语法:hls_fragment time
上下文:rtmp, server, application
讲述:设置 HLS 分段长度。默认为 5 分钟。
hls_playlist_length
语法:hls_playlist_length time
上下文:rtmp, server, application
讲述:设置 HLS 播放列表长度。暗中同意为 30 分钟。
hls_playlist_length 10m;
hls_sync
语法:hls_sync time
上下文:rtmp, server, application
讲述:设置 HLS 时间戳同步阈值。暗中同意为 2 ms。这一效果能够幸免由低分辨率
大切诺基TMP (1KHz) 转换来高分辨率 MPEG-TS (90KHz) 之后出现噪声。
hls_sync 100ms;
hls_continuous
语法:hls_continuous on|off
上下文:rtmp, server, application
叙述:切换 HLS 三番五次格局。这一方式下 HLS
系列号由其上次终止的最后时光初叶。老的分支保留下去。暗中同意为 off。
hls_continuous on;
hls_nested
语法:hls_nested on|off
上下文:rtmp, server, application
讲述:切换 HLS 嵌套格局。这一情势下为每种流成立了三个 hls_path
的子目录。播放列表和分层在丰裕子目录中开创。暗中同意为 off。
hls_nested on;
hls_cleanup
语法:hls_cleanup on|off
上下文:rtmp, server, application
讲述:切换 HLS 清理。这一作用默许为开启的。在这一形式下 nginx
缓存管理进程将老的 HLS 片段和播放列表由 HLS 清理掉。
hls_cleanup off;
Access log
access_log
语法:access_log off|path [format_name]
上下文:rtmp, server, application
叙述:设置访问日志参数。日志私下认可是开启的。关闭日志能够接纳 access_log
off 指令。默许处境下访问日志和 HTTP 访问日志 logs/access.log
放到同一文件。你也足以运用 access_log
指令将其定义到任何日志文件。第①个参数是可选的。能够依照名字来定义日志格式。请参考
log_format 指令来博取越多关于格式的详细新闻。
log_format new ‘$remote_addr’;
access_log logs/rtmp_access.log new;
access_log logs/rtmp_access.log;
access_log off;

log_format
语法:log_format format_name format
上下文:rtmp
叙述:创立钦点的日志格式。日志格式看起来很像 nginx HTTP
日志格式。日志格式里帮助的多少个变量有:
* connection – 连接数。
* remote_addr – 客户端地址。
* app – application 名。
* name – 上1个流名。
* args – 上多少个流播放/发表参数。
* flashver – 客户端 flash 版本。
* swfurl – 客户端 swf url。
* tcurl – 客户端 tcUrl。
* pageurl – 客户端页面 url。
* command –
客户端发送的播放/发表命令:NONE、PLAY、PUBLISH、PLAY+PUBLISH。
* bytes_sent – 发送到客户端的字节数。
* bytes_received – 从客户端接收到的字节数。
* time_local – 客户端连接完成的本土时间。
* session_time – 持续连接的秒数。
* session_readable_time – 在可读格式下的持续时间。
暗中同意的日志格式叫做 combined。那里是这一格式的定义:
$remote_addr [$time_local] $command “$app” “$name” “$args” – 
$bytes_received $bytes_sent “$pageurl” “$flashver”
($session_readable_time)

Limits
max_connections
语法:max_connections number
上下文:rtmp, server, application
叙述:为 rtmp 引擎设置最明斯克接数。暗中认可为 off。
max_connections 100;
Statistics
statistics 模块不一样于本文列举的其他模块,它是 NGINX HTTP 模块。因而statistics 指令应该放在 http{} 块内部。
rtmp_stat
语法:rtmp_stat all
上下文:http, server, location
叙述:为当前 HTTP location 设置 汉兰达TMP statistics 处理程序。安德拉TMP
statistics 是贰个静态的 XML 文档。能够选拔 rtmp_stat_stylesheet
指令在浏览器中作为 XHTML 页面查看这一个文书档案。
http {
    server {
        location /stat {
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }
        location /stat.xsl {
            root /path/to/stat/xsl/file;
        }
    }
}

rtmp_stat_stylesheet
语法:rtmp_stat_stylesheet path
上下文:http, server, location
讲述:添加 XML 样式表引用到 statistics XML
使其能够在浏览器中可视。越来越多消息请参考 rtmp_stat 描述和例子。
Multi-worker live streaming
多 worker 直播流是因而推送流到剩余的 nginx worker 完毕的。
rtmp_auto_push
语法:rtmp_auto_push on|off
上下文:root
叙述:切换自动推送(多 worker 直播流)方式。暗中同意为 off。
rtmp_auto_push_reconnect
语法:rtmp_auto_push_reconnect timeout
上下文:root
讲述:当 worker 被干掉时设置自动推送连接超时时间。默许为 100 飞秒。
rtmp_socket_dir
语法:rtmp_socket_dir dir
上下文:root
讲述:设置用于流推送的 UNIX 域套接字目录。暗许为 /tmp。
**rtmp_auto_push on;
rtmp_auto_push_reconnect 1s;
rtmp_socket_dir /var/sock;

rtmp {
    server {
        listen 1935;
        application myapp {
            live on;
        }
    }
} Control
control 模块是 NGINX HTTP 模块,应该放在 http{} 块之内。
rtmp_control
语法:rtmp_control all
上下文:http, server, location
叙述:为最近 HTTP location 设置 LX570TMP 控制造进度序。
http {
    server {
        location /control {
            rtmp_control all;
        }
    }
}**
至于 control
模块越来越多新闻

原稿链接:https://github.com/arut/nginx-rtmp-module/wiki/Directives