Nginx RTMP 模块 nginx rtmp module 指令详解

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                译序:截至 Jul 8th,2013 官方公布的最新 Nginx RTMP 模块 nginx-rtmp-module 指令详解。
指令
Core
rtmp
语法: rtmp { ... }
上下文: 根
描述:保存所有 RTMP 配置的块。
server
语法: server { ... }
上下文: rtmp
描述:声明一个 RTMP 实例。
rtmp {
  server {
  }
}

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

application
语法: application name { ... }
上下文: server
描述:创建一个 RTMP 应用。application 名的模式并不类似于 http location。
server {
    listen 1935;
    application myapp {
    }
}

timeout
语法: timeout value
上下文: rtmp, server
描述:Socket 超时。这个值主要用于写数据时。大多数情况下,RTMP 模块并不期望除 publisher 端口之外的其他端口处于活动状态。如果你想要快速关掉 socket 可以用 keepalive 或者 RTMP ping 等。timeout 默认值为 1 分钟。
timeout 60s;
ping
语法: ping value
上下文: rtmp, server
描述:RTMP ping 间隔。零值的话将 ping 关掉。RTMP ping 是一个用于检查活动连接的协议功能。发送一个特殊的包到远程连接,然后在 ping_timeout 指令指定的时间内期待一个回复。如果在这个时间里没有收到 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
描述:设置 RTMP 流的最大数目。数据流被整合到一个单一的数据流里。不同的频道用于发送命令、音频、视频等。默认值为 32,适用于大多数情况。
max_streams 32;
ack_window
语法: ack_window value
上下文: rtmp, server
描述:设置 RTMP 确认视窗大小。这是对端发送确认包到远端后应该收到的字节数量。默认值为 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 300x200 -acodec libfaac -ar 44100 -ac 1 -f flv rtmp://localhost/hls/$name 2>>/var/log/ffmpeg-$name.log;
}


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-1990 信号)。
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 <
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值