本文是在前一篇文章根本上,去讲解更多功能的配置。
为了能够理解本文,一定要阅读前面几篇文章,下面会给出地址。

(1) 手把手搭建FFmpeg的Windows环境

(2) 超详细手把手搭建在ubuntu系统的FFmpeg环境

php流媒体加密详解流媒体直播设置装备摆设典范包含实现加密文件 Bootstrap

(3) 手把手搭建流媒体做事用具体步骤

(4) 手把手配置HLS流媒体做事器

(5) 超详细搭建多码率测试环境(成为流媒体高手必经之路)

(6)最快系统搭建:Vmware、ubuntu18.0及常用软件安装

⽬前直播技能以RTMP⽅式已经⾮常成熟,前面一篇文章,也便是第(5)步已经详细讲过了。
这篇文章紧张就讲解RTMP模块和HTTP模块的一些命令参数和配置方法。
关于更多官方文档的配置,我这里给出一个连接,如果往后事情有更多需求,可以参考。
地址如下:

Setup Nginx on Ubuntu to Stream Live HLS Video地址:

https://www.vultr.com/docs/setup-nginx-on-ubuntu-to-stream-live-hls-video

更多参数解释,详细举例:

https://www.cnblogs.com/lidabo/p/7099501.html

https://www.cnblogs.com/wainiwann/p/7514166.html

https://blog.csdn.net/defonds/article/details/9274479/

学好若何利用配置文件,可以实现很多流媒体功能,比如录制,回放,切换自适应,加密等,能够帮助我们快速实现一个直播或点播框架。
以是这篇文章也是非常主要。

官网主界面如下:

1.配置加密文件

(1)在配置文件Nginx.conf的RTMP模块中加入如下配置参数。

在/tmp目录下,先创建目录,实行命令:

mkdir hlskeys

在配置文件中,加入如下配置。

hls_key_path /tmp/hlskeys;

如果配置后,再次启动Nginx,如果涌现如下缺点,如下提示信息:

nginx: [emerg] the same path name "/data/hlskeys" used in /usr/local/nginx/conf/nginx.conf:178 and in /usr/local/nginx/conf/nginx.conf:178

我这里给出办理方案,须要做如下改动:

在官方源码ngx_rtmp_hls_module.c中,路径为nginx-rtmp-module / hls /ngx_rtmp_hls_module.c。
如下界面:

源码中的2346和2421,调用了2次,该当删除或注释掉2346的一个,可以办理缺点信息,上面缺点信息的意思便是利用了相同的路径。
作如下改动:

再重新编译Nginx-rtmp-module。
再次重启nginx,就不会有这个缺点了。
这样再把推流,拉流流程跑起来,就可以看到HLS的密钥文件会天生。
如下图所示:

2.RTMP模块配置参数解释

rtmp server :NGINX中的做事模块。

listen:监听端⼝号。

application:在NGINX配置⽂件中创建同⼀个程序块。

timeout :连接超时时间。

ping:测试数据包。

ping_timeout:测试数据包超时时间。

max_streams:最⼤流数量。

ack_window:滑动窗口大小。

chunk_size:分片大小。

max_queue:最大行列步队个数。

max_message:最大数。

buflen:buf长度

out_queue

out_cork

3.直播配置

关于直播,有以下一些常见的配置项,如下所示:

(1)live

切换直播模式,即一对多广播。
设置参数举例,live on。

(2)meta

切换发送元数据到客户端。
默认为 on。
设置参数举例,meta off。

(3)interleave

切换交叉模式。
在这个模式下,音频和视频数据会在同一个 RTMP chunk 流中传输。
默认为 off。
设置参数举例,interleave on。

(4)wait_key

使视频流从一个关键帧开始。
默认为 off。
设置参数举例,wait_key on。

(5)wait_video

在第一个视频帧发送之前禁用音频。
默认为 off。
可以和 wait_key 进行组合以使客户端可以收到,具有所有其他数据的视频关键帧。
然而这常日增加连接延迟。
您可以通过在编码器中调度关键帧间隔来减少延迟。
设置参数举例,wait_video on。

(6)publish_notify

发送 NetStream.Publish.Start 和 NetStream.Publish.Stop 给用户。
默认为 off。
设置参数举例,publish_notify on。

(7)drop_idle_publisher

终止指定时间内闲置(没有音频/视频数据)的发布连接。
默认为 off。
把稳这个仅仅对付发布模式的连接起浸染(发送 publish 命令之后)。
设置参数为drop_idle_publisher 10s。

(8)sync

同步音频和视频流。
如果用户带宽不敷以吸收发布率,做事器会丢弃一些帧。
这将导致同步问题。
当时间戳差超过 sync 指定的值,将会发送一个绝对帧来办理这个问题。
默认为 300 ms。

设置参数举例,sync 10ms。

(9)play_restart

使 nginx-rtmp 能够在发布启动或停滞时发送 NetStream.Play.Start 和 NetStream.Play.Stop 到每个用户。
默认为 on。
如果关闭的话,那么每个用户就只能在回放的开始和结束时收到这些关照了。
设置参数举例,play_restart off。

idle_streams

4.HLS协议进⾏m3u8实时直播

hls:表示协议。

hls_path:hls 路径。

hls_fragment:hls_fragment 片段韶光,比如设置5s。

hls_playlist_length:HLS播放列表长度,比如设置30s。

hls_sync:设置HLS韶光戳同步阈值。
默认值为2ms。
此功能可防止在从低分辨率RTMP(1KHz)到高分辨率MPEG-TS(90KHz)转换后涌现裂纹噪声。

hls_continuous:打开HLS连续模式。
在这种模式下,HLS序列号早年次停滞的地方开始。
老片段被保存(类似于保存历史记录)。
默认为关闭。

hls_nested:切换HLS嵌套模式。
在此模式下,hls_path为每个流创建一个子目录。
播放列表和片段在该子目录中创建。
默认为关闭。
设置为开启后的测试案例:例如我们当前推流的名称为123456,则会在hls指定目录下面新创建一个以流名称为名字的目录名称,同时在这里我设置了:hls_fragment_naming system。
如下图所示:

那播放地址:http://xxx/live/123456/index.m3u8

hls_base_url:设置HLS播放列表项目的基本URL。
当为空时,这些项目没有前缀,并假定与父播放列表位于相同的位置,或者在利用hls_nested时降落一个级别。
此功能适用于主(变式)和从HLS播放列表。
它可以让您下载播放列表并在本地播放,由于它包含对子播放列表或片段的完全引用。
默认为空。
如,http://xxx/hls/

hls_cleanup:切换HLS清理。
默认情形下,该功能处于打开状态。
在这种模式下,nginx缓存管理器进程从HLS目录中删除旧的HLS片段和播放列表。
如果打开,那每次推流完毕的时候Nginx会自动的打消上一次天生的.ts文件和m3u8视频目录文件。

hls_fragment_naming:设置片段命名模式。
有以下一些命名模式。
如下图所示:

顺序模式: 利用递增的整数。

timestamp模式:利用流韶光戳。

系统韶光模式:利用系统韶光。

默认是顺序的。

hls_fragment_naming_granularity:设置hls片段ID的粒度。
如果大于零,变动ids以划分所供应的值。
默认值为零。

#利用系统韶光舍入到500ms作为片段名称

hls_fragment_naming system;hls_fragment_naming_granularity 500;

hls_fragment_slicing:

hls_variant

hls_type:设置在X-PLAYLIST-TYPE播放列表指令中指定的HLS播放列表类型。
常日由以下2种类型。

live:Live HLS流利常从当前活动位置播放,该活动位置是几个片段到播放列表的结尾。
默认是live。

event:事宜HLS流始终从播放列表的开始播放。
在事宜模式下,确保播放列表长度足以用于全体事宜。

hls_keys:启用HLS加密。
AES-128方法用于加密全体HLS片段。
默认关闭。

hls_key_path:设置保存自动天生的HLS密钥的目录。
密钥文件具有利用OpenSSL RAND_bytes()例程创建的.key扩展和伪随机16字节内容。
如果目录不存在,它将在运行时创建。
默认情形下,hls_path目录用于密钥文件。
但是记住,你常日该当限定对密钥文件的访问,这些文件与播放列表和片段分开存储时更随意马虎。

hls_key_url:设置HLS密钥文件条款标URL。
当为空时,那些项目没有前缀,并且假设键位于与播放列表相同的位置。
默认为空。

hls_fragments_per_key:设置用同一个密钥加密的HLS分片数(这个功能,可以支持点播或直播试看)。
零意味着在发布开始时仅创建一个密钥,并且利用此密钥对会话中的所有片段进行加密。
默认值为零。

5.录制回放

(1)record

切换录制模式。
流可以被记录到 flv 文件。
有如下参数:

off : 什么也不录制。

all : 音频和视频都录制。

audio:录制音频。

video:录制视频。

keyframes:只录制关键视频帧。

manual :用不自动启动录制,利用掌握接口来启动/停滞,在单个记录指令中可以有任何兼容的组合键。

(2)record_path

指定录制的 flv 文件存放目录。
如路径为record_path /tmp/rec。

(3)record_suffix

设置录制文件后缀名。
默认为 '.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 里进行查找。

(4)record_unique

否添加韶光戳到录制文件。
否则的话同样的文件在每一次新的录制发生时将被重写。
默认为 off。
如这样设置record_unique on;

(5)record_append

切换文件附加模式。
当这一指令为开启是,录制时将把新数据附加到老文件,如果老文件丢失的话将重新创建一个。
文件中的老数据和新数据没有韶光差。
默认为 off。

如这样设置record_append on。

(6)record_lock

当这一指令开启时,当前录制文件将被 fcntl 调用锁定。
那样可以在其他地方来核实哪个文件正在进行录制。
默认为 off。
如这样设置,record_lock on。

(7)record_max_size

设置录制文件的最大值。
如这样设置,record_max_size 128K。

(8) record_max_frames

设置每个录制文件的视频帧的最大数量。
如这样设置,record_max_frames 2。

(9)record_interval

在这个指令指天命量的(毫秒)秒之后重启录制。
默认为 off。
设置为 0 的话意味着录制中无延迟。
如果 record_unique 为 off 的话所有记录片段会被写到同一个文件。
否则(文件名)将附以韶光戳以区分不同文件(给定的 record_interval 要大于 1 秒)。
如这样设置,record_interval 1s。
record_interval 15m。

(10) recorder

创建录制块。
可以在单个 application 中创建多个记录。
上文提到的所有录制干系的指令都可以在 recorder{} 块中进行定义。
继续高层次中的所有设置。

(11)record_notify

切换当定义录制启动或停滞文件时,发送 NetStream.Record.Start 和 NetStream.Record.Stop 状态信息(onStatus)到发布者。
状态描述字段保存录制的名字(默认录制的话为空)。
默认为 off。

6.HTTP动态⾃适应不同带宽的视频

dash

dash_path

dash_fragment

dash_playlist_length

dash_nested

dash_cleanup

MPEG-DASH

7.视频点播的配置

(1)play

播放指定目录或者 HTTP 地址的 flv 或者 mp4 文件。
如果此参数前缀是 http:// 那么就认为文件可以在播放前从远程 http 地址下载下来。
把稳播放是在全体文件下载完毕之后才开始。
你可以利用本地 nginx 在本地机器缓存文件。
同一个 play 指令可以定义多个播放地址。
当多个 play 指令定义时,地址列表将被合并,并进行从更高域中继续。
考试测验播放每一个地址,直到创造一个成功的地址。
如果没有找到成功地址,将发送缺点状态到客户端。
索引的 FLV 播放具有随机查找能力。
没有索引的 FLV 则不具备查找/停息能力(重播模式)。
利用 FLV 索引器(比如 yamdi)来编索引。
mp4 文件只有在音频和视频编码都被 RTMP 支持时才可以播放。
最常见的情形是 H264/AAC。

(2)play_temp_path

在播放之前设置远程存储的 VOD 文件路径。
默认为 /tmp。
如这样设置,play_temp_path /www。

(3)play_local_path

设置远程 VOD 文件完备下载之后复制于 play_temp_path 之后的路径。
空值的话禁用此功能。
默认为掌握。
这个功能可以用于缓存远程文件在本地。
这一起径该当和 play_temp_path 处于同一设备。
如可以这样设置:

play_local_path /tmp/videos;play /tmp/videos http://example.com/videos;

8.拉流转播到其它平台

(1)pull

创建 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 URL'。
如这样的常用设置。

pull rtmp://cdn.example.com/main/ch?id=12563 name=channel_a;

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;

pull rtmp://cdn.example.com/main/ch?id=12563 name=channel_a static;

(3)push

push 的语法和 pull 一样。
不同于 pull 指令的是 push 推送发布流到远程做事器。
有这样的语法,push url [key=value]。

(4)push_reconnect

在断开连接后,在 push 重新连接前等待的韶光。
默认为 3 秒。
如可以这样设置,push_reconnect 1s;

(5)session_relay

切换会话 relay 模式。
在这种模式下连接关闭时 relay 销毁。
当设置为 off 时,流关闭,relay 销毁,这样子往后另一个 relay 可以被创建。
默认为 off。
如可以这样设置,session_relay on。

9.直播状态的和状态

(1)on_connect

设置 HTTP 连接回调。
当客户分发连接命令时,一个 HTTP 要求异步发送,命令处理将被停息,直到它返回结果代码
当 HTTP 2XX 码(成功状态码)返回时,RTMP 会话连续。
返回码 3XX (重定向状态码)会使 RTMP 重定向到另一个从 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 是如何设置这些参数的一个示例:

设置如下:

on_connect http://example.com/my_auth;

重定向例子:

location /on_connect { if ($arg_flashver != "my_secret_flashver") { rewrite ^.$ fallback? permanent; } return 200;}

(2)on_play

设置 HTTP 播放回调。
每次一个客户分发播放命令时,一个 HTTP 要求异步发送,命令处理会挂起 - 直到它返回结果码。
之后再解析 HTTP 结果码。
结果吗如下:

HTTP 2XX 返回码的话连续 RTMP 会话。

HTTP 3XX 返回码的话 重定向 RTMP 到另一个流,这个流的名字在 HTTP 返转头的 Location 获取。
如果新流的名字起始于 rtmp:// 然后远程 relay 会被创建。
relay 哀求 IP 地址是指定的而不是域名,并且只事情在 1.3.10 版本以上的 nginx。
另请参考 notify_relay_redirect。
其他返回码的话 RTMP 连接丢弃。

重定向例子:

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)on_publish

同上面提到的 on_play 一样,唯一的不同点在于这个指令在发布命令设置回调。
不同于远程 pull,push 在这里是可以。
设置语法为,on_publish url。

(4)on_done

设置播放/发布禁止回调。
上述所有适用于此。
但这个回调并不检讨 HTTP 状态码。
设置语法为,on_done url。

(5)on_play_done

等同于 on_done 的表现,但只适用于播放结束事宜。

(6)on_publish_done

等同于 on_done 的表现,但只适用于发布结束事宜。
设置语法为on_publish_done url。

(7)on_record_done

设置 record_done 回调。
除了普通 HTTP 回调参数,它接管录制文件路径。
设置语法为on_record_done url。

(8)on_update

设置 update 回调。
这个回调会在 notify_update_timeout 期间调用。
如果一个要求返回结果不是 2XX,连接禁止。
这可以用来同步过期的会话。
追加 time 参数,即播放/发布调用后的秒数会被发送给处理程序。
设置语法为on_update url。

(9)notify_update_timeout

在 on_update 回调之间的超时设置,默认为 30 秒。
设置参数举例,notify_update_timeout 10s。

(10)notify_update_strict

切换 on_update 回调strict模式,默认为 off。
当设置为 on 时,所有连接缺点,超时以及 HTTP 解析缺点和空返回会被视为更新失落败,并导致连接终止。
当设置为 off 时,只有 HTTP 返回码不同于 2XX 时,导致失落败。

(11)notify_relay_redirect

使本地流可以重定向为 on_play 和 on_publish 远程重定向。
新的流名字是 RTMP URL, 用于远程重定向。
默认为 off。
设置参数举例,notify_relay_redirect on。

(12)notify_method

设置 HTTP 方法关照。
默认是带有 application/x-www-form-urlencoded 的 POST 内容类型。
在一些情形下 GET 更好,例如如果你打算在 nginx 的 http{} 部分处理调用。
在这种情形下你可以利用 arg_ 变量去访问参数。
设置语法为,notify_method get|post。

10.直播的访问权限掌握

(1)allow

许可来自指定地址或者所有地址发布/播放。
allow 和 deny 指令的先后顺序可选。
设置语法为allow [play|publish] address|subnet|all。
设置参数举例,如下:

allow publish 127.0.0.1。
allow play 192.168.1.124。

(2)deny

谢绝来自指定地址或者所有地址发布/播放。
设置语法为deny [play|publish] address|subnet|all。
设置参数举例,如下:

deny publish all。
deny play all。

(3)exec ⼀簇函数(进程每每要调⽤⼀种exec函数以执⾏另⼀个程序)

定义每个流发布时要实行的带有参数的外部命令。
发布结束时进程终止。
第一个参数该当是二进制可实行文件的完全路径。
关于这个进程将会做些什么事没有任何假定。
但这一特点在利用 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;}

(4)exec_push

(5)exec_pull

(6)exec_options

(7)exec_static

类似于 exec 指令,但在 nginx 启动时将运行定义的命令。
由于(启动时)尚无会话高下文,不支持更换。
设置举例如下,exec_static ffmpeg -i http://example.com/video.ts -c copy -f flv rtmp://localhost/myapp/mystream。

(8)exec_kill_signal

设置进程终止旗子暗记。
默认为 kill(SIGKILL)。
你可以定义为数字或者符号名(POSIX.1-1990 旗子暗记)。
设置参数如下:

exec_kill_signal term。
exec_kill_signal usr1。
exec_kill_signal 3。

(8)respawn

如果打开 respawn 子进程,进程终止时发布会仍旧连续。
默认为打开。
设置语法为respawn on|off。

(9)respawn_timeout

启动新的子实例之前,设置 respawn 超时时间。
默认为五秒。
设置举例为respawn_timeout 10s。

(10)exec_publish

指定发布事宜触发的带有参数的外部命令。
返回码是未解析的。
这里可以用 exec 更换。
其余,args 变量支持持有查询字符串参数。
设置语法为,exec_publish command arg。

(11)exec_play

指定播放事宜触发的带有参数的外部命令。
返回码是未解析的。
更换列表同 exec_publish。
设置语法为,exec_play command arg。

(12)exec_play_done

指定播放结束事宜触发的带有参数的外部命令。
返回码是未解析的。
更换列表同 exec_publish。
设置语法格式为exec_play_done command arg。

(13)exec_publish_done

指定发布结束事宜触发的带有参数的外部命令。
返回码是未解析的。
更换列表同 exec_publish。
设置语法为exec_publish_done command arg。

(14)exec_record_done

指定录制结束时触发的带有参数的外部命令。
这里支持 exec_publish 的替代以及额外的变量 path 和 recorder。
设置语法为exec_record_done command arg。

11.其它配置

关于其它配置,也可以参考这篇博客:

(1)access_log

设置访问日志参数。
日志默认是开启的。
关闭日志可以利用 access_log off 指令。
默认情形下访问日志和 HTTP 访问日志 logs/access.log 放到同一文件。
你也可以利用 access_log 指令将其定义到其异日记文件。
第二个参数是可选的。
可以根据名字来定义日志格式。
请参考 log_format 指令来获取更多关于格式的详细信息。
设置语法为access_log off|path [format_name]。
设置举例如下:

log_format new '$remote_addr';access_log logs/rtmp_access.log new;access_log logs/rtmp_access.log;access_log off;

(2)log_format

创建指定的日志格式。
日志格式看起来很像 nginx HTTP 日志格式。
设置语法为log_format format_name format。
日志格式里支持的几个变量,如下:

connection :连接数。
remote_addr:客户端地址。
app - application :名。
name:上一个流名。
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

(3)max_connections

rtmp 引擎设置最大连接数。
默认为 off。
设置举例如下:max_connections 100。

(4)rtmp_stat 数据统计

为当前 HTTP location 设置 RTMP statistics 处理程序。
RTMP 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; } }}

(5)rtmp_stat_stylesheet

添加 XML 样式表,引用到 statistics XML 使其可以在浏览器中可视。
更多信息请参考 rtmp_stat 描述和例子。
设置语法举例,rtmp_stat_stylesheet path。

(6)Multi-worker live streaming

多线程直播流,多 worker 直播流是通过推送流到剩余的 nginx worker 实现。

(7)rtmp_auto_push

切换自动推送(多 worker 直播流)模式。
默认为 off。
设置语法如下,rtmp_auto_push on|off。
设置参数举例,rtmp_auto_push on。

(10)rtmp_auto_push_reconnect

当 worker 被干掉时设置自动推送连接超时时间。
默认为 100 毫秒。
设置语法为,rtmp_auto_push_reconnect timeout。
设置参数举例,rtmp_auto_push_reconnect 1s。

(11)rtmp_socket_dir

设置用于流推送的 UNIX 域套接字目录。
默认为 /tmp。
设置参数举例,rtmp_socket_dir /var/sock。

(12)rtmp_control 直播Control 掌握模块

为当前 HTTP location 设置 RTMP 掌握程序。
control 模块是 NGINX HTTP 模块,该当放在 http{} 块之内。
设置参数语法为,rtmp_control all。
设置参数举例,如下:

http { server { location /control { rtmp_control all; } }}

重点参考:

https://www.cnblogs.com/tinywan/p/5981197.html

12.Nginx-RTMP直播范例

以下列举的是别人博客上推举的配置文件,贴在这里,一起学习。
这些配置参数的含义,上面都有阐明。

rtmp { server { listen 1935; chunk_size 4096; application hls{ live on; hls on; hls_path /byDATA/NginxRtmpNRJS/webroot/tt/hls; hls_fragment 5s; } #⽤来给115频道 application ANuid115 { live on; hls on; hls_path /byDATA/NginxRtmp/webroot/ANuid115; hls_fragment 5s; } #⽤来测试 application ANuid901 { live on; #实时回访 hls on; #保护TS切⽚ wait_key on; #每个流都⾃动创建⼀个⽂件夹 hls_nested on; #每个ts⽂件为5s hls_fragment 5s; #使⽤系统韶光戳命名ts⽂件 hls_fragment_naming system; #保存m3u8列表⻓度韶光,默认是30 秒,可考虑三⼩时10800秒 hls_playlist_length 10800s; #是否删除列表中已经没有数据的媒体块TS⽂件, 默认是开启 hls_cleanup on; #连续模式 hls_continuous on; #媒体 块ts的位置 hls_path /byDATA/NginxRtmp/webroot/live/record/ANuid901; } application ANuid902 { live on; hls on; hls_path /byDATA/NginxRtmp/webroot/tt/ANuid902; hls_fragment 5s; } application ANuid903 { live on; hls on; hls_path /byDATA/NginxRtmp/webroot/tt/ANuid903; hls_fragment 5s; } }}http { include mime.types; default_type application/octet-stream; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #include /byDATA/NginxRtmp/conf/.conf; 此处可以添加⾃定义配置⽂件⽬录 #gzip on; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { #byAdd #root /byDATA/NginxRtmp/webroot/tt; root html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one ##location ~ /\.ht { # deny all; #} }

13.总结

通过这篇文章的负责学习,再结合前面的文章,然后去实践,相信大家可以搭建出更多常用的功能。
本篇文章就分享到这里,希望能帮到大家。

欢迎关注,转发,点赞,收藏,分享,评论区谈论。

后期关于项目的知识,会在微信公众年夜众号上更新,如果想要学习项目,可以关注微信"大众年夜众号“记录天下 from antonio”