一些参数及其含义

参数名称 说明
app 指明应用名称
name 绑定监听的本地流名字,为空则监听所有的流
tcUrl 自动构建如果为空
pageUrl  
swfUrl  
flashVer  
playPath 远程播放地址
live 合并指定的行为,为直播流
start  
stop  
static 静态化,会在nginx 启动的时候创建

中继(relay)

Syntax: pull url [key=value]*
Context: application

创建pull中继,拉取远程的流放到本地使用,当有播放器连接的时候命令才会生效

Url 语法: [rtmp://]host[:port][/app[/playpath]].

如果app没有指定,则使用本地请求中的app名字

Example

pull rtmp://192.168.1.129/live/test name=ted;

hls

hls_type

播放列表中的多个播放片段 event 从第一开始播放 live 从当前片段开始播放|

hls_keys

对所有的hls片段启用aes-128加密,默认不使用加密。同时nginx编译的时候需要配置 --with-http_ssl_module 对https的支持。

密钥的位置可以在本地hls_key_path,也可以是网络文件hls_key_url。

也可以用 hls_fragments_per_key 指定一个密钥可以加密多少hls片段

hls_path
设置playlist和视频片段存放位置
hls_fragment
视频片段长度 默认是5s
hls_playlist_length
播放列表长度,默认是30s视频长度
hls_syn
时间戳同步阈值默认是2ms,当从低分辨率向高分辨路转换的的时候可以去噪,low-resolution RTMP (1KHz) to high-resolution MPEG-TS (90KHz
hls_continuous:
序列号连续模式上次停止的时候序列号开始
hls_nested
嵌套模式 是否为每一个流创建一个子目录
hls_base_url
指定播放列表url,默认为空
hls_cleanup
清理播放列表和视频片段缓存
hls_fragment_naming
视频片段命名 1.流时间戳,2.自增整数 3.系统时间戳
hls_fragment_naming_granularity
设置视频片段ids间隔,默认是0
hls_fragment_slicing
分片模式 1.plain 2.align

Notify相关指令

主要用于回调通知

on_connect

nginx 块: rtmp, server

当客户端发起一个连接的时候,同时将会发起一个异步的http请求,客户端连接将会被挂起等待http请求的结果。根据不同的结果做出不同的响应。

返回结果

  • 2xx – 刚才发起的RTMP会话请求继续
  • 3xx – 重定向到另外一个应用,应用名在Location响应头中
  • 其他连接将会被丢弃

应用不能放在application块,连接阶段的时候还不知道具体是请求的哪一个应用。 HTTP请求默认使用POST方法。

on_play

与on_connect 类似,只是返回结果为 3xx的时候需要指定新的流名称

##参考资料

  • https://github.com/arut/nginx-rtmp-module/wiki/Directives#live
  • http://blog.waterlin.org/articles/using-nginx-rtmp-module-to-build-broadcast-system.html?utm_source=tuicool