直播配置示例详解(含加密文件实现)

0.引言(1)手把手搭建FFmpeg的Windows环境(2)超详细手把手搭建在ubuntu系统的FFmpeg环境(3)手把手搭建流媒体服务器详细步骤(4)手把

(二)ubuntu系统上搭建FFmpeg环境的超详细分步说明

(三)一步步搭建流媒体服务器的详细步骤

(4)HLS流媒体服务器逐步配置

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

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

目前RTMP形式的直播技术已经非常成熟。上一篇文章,即步骤(5)已经详细讨论过。本文主要讲解RTMP模块和HTTP模块的一些命令参数和配置方法。关于更多官方文档的配置,我这里给出链接。如果您在以后的工作中还有更多的需求,可以参考一下。地址如下:

在Ubuntu 上设置Nginx 直播HLS 视频地址:

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] /usr/local/nginx/conf/nginx.conf:178 和/usr/local/nginx/conf/nginx.conf:178 中使用相同的路径名“/data/hlskeys”

这是我的解决方案,需要进行以下更改:

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

源码中的2346和2421被调用了两次。应删除或注释掉2346 之一以解决该错误消息。上面的错误信息意味着使用了相同的路径。进行以下更改:

然后重新编译Nginx-rtmp-module。再次重启nginx,这个错误就会消失。这样,如果运行push和pull过程,就可以看到生成了HLS密钥文件。如下图:

2. RTMP模块配置参数说明

rtmp服务器:NGINX中的服务模块。

Listen: 监听端口号。

application: 在NGINX 配置文件中创建相同的程序块。

超时:连接超时。

ping:测试包。

ping_timeout:测试数据包超时。

max_streams:最大流数。

ack_window:滑动窗口大小。

chunk_size:片段大小。

max_queue:最大队列数。

max_message:最大消息数。

buflen:buf消息长度

出队列

软木塞外

3.直播配置

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

(1)直播

切换到直播模式,即一对多直播。设置参数的示例,继续。

(2)元

切换向客户端发送元数据。默认开启。设置参数示例,meta off。

(3)交错

切换交叉模式。该模式下,音频和视频数据在同一个RTMP chunk流中传输。默认关闭。设置参数示例,交错打开。

(4)等待键

使视频流从关键帧开始。默认关闭。设置参数示例,wait_key on。

(5)等待视频

在发送第一个视频帧之前禁用音频。默认关闭。可以与wait_key 结合使用,以允许客户端接收视频关键帧以及所有其他数据。然而,这通常会增加连接延迟。您可以通过调整编码器中的关键帧间距来减少延迟。设置参数示例,wait_video on。

(6)发布通知

向用户发送NetStream.Publish.Start 和NetStream.Publish.Stop。默认关闭。设置参数的示例,publish_notify on。

(7)drop_idle_publisher

终止在指定时间段内空闲(无音频/视频数据)的发布连接。默认关闭。请注意,这仅适用于发布模式下的连接(发送发布命令后)。将参数设置为drop_idle_publisher 10s。

(8)同步

同步音频和视频流。如果用户的带宽不足以接收公布的速率,服务器将丢弃一些帧。这将导致同步问题。当时间戳差值超过sync指定的值时,会发送绝对帧来解决问题。默认值为300 毫秒。

设置参数示例,同步10ms。

(9)播放_重启

使nginx-rtmp 在开始或停止发布时向每个用户发送NetStream.Play.Start 和NetStream.Play.Stop。默认开启。如果关闭,每个用户只会在播放开始和结束时收到这些通知。设置参数示例,play_restart off。

空闲流

4、m3u8实时直播的HLS协议

hls: 代表协议。

hls_path:hls 路径。

hls_fragment:hls_fragment分片时间,例如设置为5s。

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

hls_sync:设置HLS时间戳同步阈值。默认值为2 毫秒。此功能可防止从低分辨率RTMP (1KHz) 转换为高分辨率MPEG-TS (90KHz) 后出现爆裂噪声。

hls_continuous:开启HLS连续模式。在此模式下,HLS 序列号从上次停止的位置开始。保存旧剪辑(类似于保存历史记录)。默认关闭。

hls_nested:切换HLS嵌套模式。在此模式下,hls_path 为每个流创建一个子目录。播放列表和剪辑是在此子目录中创建的。默认关闭。打开后设置为测试用例:比如我们当前的推流名称是123456,那么会在hls指定的目录下新建一个以该流名称命名的目录。同时我这里设置的是:hls_fragment_naming系统。如下图:

播放地址: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:设置片段命名模式。下面有一些命名模式。如下图:

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

时间戳模式:使用流时间戳。

系统时间模式:使用系统时间。

默认是顺序的。

hls_fragment_naming_capsularity:设置hls片段ID的粒度。如果大于零,则更改ids 以除以提供的值。默认值为零。

# 使用四舍五入到500ms 的系统时间作为片段名称

hls_fragment_naming 系统;hls_fragment_naming_capsularity 500;

hls_fragment_slicing:

hls_variant

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

live:Live HLS 流通常从当前活动位置开始播放,该位置距离播放列表末尾有几个段。默认为实时状态。

event: 事件HLS 流始终从播放列表的开头播放。在事件模式下,确保播放列表足够长以容纳整个事件。

hls_keys:启用HLS 加密。 AES-128方法用于加密整个HLS段。默认关闭。

hls_key_path:设置自动生成的HLS密钥的保存目录。密钥文件具有.key 扩展名和使用OpenSSL RAND_bytes() 例程创建的伪随机16 字节内容。如果该目录不存在,则会在运行时创建。默认情况下,hls_path 目录用于存放密钥文件。但请记住,您通常应该限制对关键文件的访问,这些文件与播放列表和剪辑分开存储时会更容易。

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

hls_fragments_per_key:设置使用同一密钥加密的HLS片段数量(该功能可支持点播或直播观看)。零表示发布开始时仅创建一个密钥,并且会话中的所有片段都使用该密钥进行加密。默认值为零。

5. 录音与回放

(1)记录

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

off:不记录任何内容。

:个音视频全部录制。

音频:录制音频。

video: 录制视频。

关键帧:仅记录关键视频帧。

手动: 不会自动开始录音,使用控制界面来开始/停止,并且可以在单个录音命令中具有任何兼容的组合键。

(2)记录路径

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

(3)记录后缀

设置录音文件后缀名。默认为“.flv”。像这样设置,record_suffix _recorded.flv。录音后缀可以匹配strftime格式。设置如下:

记录后缀-%d-%b-%y-%T.flv

生成mystream-24-Apr-13-18:23:38.flv 等文件。支持strftime 格式的所有选项都可以在strftime 手册页中找到。

(4)记录_唯一

是否给录音文件添加时间戳。否则,每次新录制时都会覆盖同一文件。默认关闭。像这样设置record_unique ;

(5)记录追加

切换文件附件模式。当该命令打开时,录制时新数据将追加到旧文件中,如果旧文件丢失,将重新创建旧文件。文件中的旧数据和新数据没有时间差。默认关闭。

像这样设置record_append 。

(6)记录锁

当启用此命令时,当前录音文件将被fcntl 调用锁定。这样您就可以在其他地方验证正在记录哪个文件。默认关闭。如果这样设置,则record_lock 处于打开状态。

(7)记录最大大小

设置录音文件的最大大小。如果这样设置,record_max_size就是128K。

(8) 记录最大帧数

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

(9)记录间隔

在该命令指定的秒数(毫秒)后重新开始记录。默认关闭。设置为0表示录音无延迟。如果record_unique 关闭,则所有记录片段将写入同一个文件。否则(文件名)将附加时间戳以区分不同的文件(给定的record_interval必须大于1秒)。如果这样设置,则record_interval为1s。记录间隔15m。

(10)记录仪

创建一个记录块。可以在单个应用程序中创建多个记录。上面提到的所有与录制相关的指令都可以在recorder{} 块中定义。继承更高级别的所有设置。

(11)记录通知

定义录制开始或停止文件时,Toggle 向发布者发送NetStream.Record.Start 和NetStream.Record.Stop 状态消息(onStatus)。状态描述字段存储录制的名称(录制时默认为空)。默认关闭。

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

短跑

破折号路径

破折号片段

dash_播放列表_长度

破折号嵌套

破折号清理

MPEG-DASH

7.视频点播配置

(1)玩

播放指定目录或HTTP地址中的flv或mp4文件。如果这个参数前缀是http://那么该文件就被认为是从远程http地址下载的然后再播放。请注意,下载整个文件后开始播放。您可以使用本地nginx 在本地计算机上缓存文件。同一个播放命令可以定义多个播放地址。当定义多个播放指令时,地址列表被合并并从更高的域继承。尝试播放每个地址,直到找到成功的地址。如果没有找到成功的地址,则会向客户端发送错误状态。索引FLV 播放具有随机查找功能。没有索引的FLV 不具有搜索/暂停功能(重播模式)。使用FLV 索引器(例如yamdi)进行索引。 mp4 文件只有在RTMP 支持音频和视频编码的情况下才能播放。最常见的情况是H264/AAC。

(2)播放临时路径

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

(3)播放本地路径

play_local_path /tmp/videos;播放/tmp/videos http://example.com/videos;

8. 拉流到其他平台

(1)拉力

创建拉动继电器。该流将从远程服务器拉出并在本地提供。仅当至少一名玩家正在播放本地流时才会发生。网址语法:[rtmp://]主机[:端口][/app[/playpath]]。如果找不到应用程序,则将使用本地应用程序名称。如果找不到播放路径,则使用当前流的名称。支持以下参数:

app:指定应用程序名称。

name : 中继绑定的本地流名称。如果为空或未定义,则将使用应用程序中的所有本地流。

如果tcUrl:为空,则会自动构建。 pageUrl: 模拟页面url。 swfUrl : 模拟swf url。 flashVer: 模拟flash 版本,默认为’LNX.11,1,102,55’。 playPath: 远程播放地址。 live : 开关直播特殊行为,值:0,1。 start : 开始时间。 stop : 结束时间。 static : 创建静态拉取,该静态拉取是在nginx 启动时创建的。如果参数的值包含空格,则应在整个key=value 对周围使用引号,例如:’pageUrl=FAKE PAGE URL’。常见的设置是这样的。

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

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

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

(3)推

推送的语法与拉取相同。与pull 命令不同,push 将发布流推送到远程服务器。有这样的语法,push url [key=value]*。

(4)push_reconnect

断开连接后推送重新连接之前等待的时间。默认值为3 秒。如果可以这样设置的话,push_reconnect 1s;

(5)会话中继

切换会话中继模式。在此模式下,当连接关闭时,继电器将被破坏。当设置为关闭时,流将关闭并且中继将被销毁,以便稍后可以创建另一个中继。默认关闭。如果可以这样设置,session_relay on。

9. 直播状态消息及状态

(1)on_connect

设置HTTP连接回调。当客户端发送连接命令时,会异步发送HTTP 请求,并且命令处理会暂停,直到返回结果代码。当返回HTTP 2XX代码(成功状态代码)时,RTMP会话继续。返回代码3XX(重定向状态代码)导致RTMP 重定向到从HTTP 返回标头获取的另一个应用程序。否则(其他状态代码)连接将被丢弃。

请注意,该指令: 在应用程序域中是不允许的,因为应用程序在连接阶段仍然未知。

HTTP 请求接收一些参数。使用application/x-www-form-urlencoded MIME 类型下的POST 方法。以下参数将传递给调用者:

呼叫=连接。 addr: 客户端IP 地址。应用程序:应用程序名称。 flashVer:客户端Flash 版本。 swfUrl : 客户端swf 网址。 tcUrl:tcUrl。 pageUrl:客户端页面URL。

除了上述参数之外,所有显式传递给connect 命令的参数也都是由回调发送的。您应该区分连接参数和播放/发布参数。播放器通常有独特的方式来设置与播放/发布流名称不同的连接字符串。以下是JWPayer 如何设置这些参数的示例:

设置如下:

on_connect http://example.com/my_auth;重定向示例:

location /on_connect { if ($arg_flashver !=’my_secret_flashver’) { 重写^.*$ 后备?永恒的; } 返回200;}(2)on_play

直播配置示例详解(含加密文件实现)

设置HTTP播放回调。每次客户端发送播放命令时,都会异步发送HTTP 请求,并且命令处理会挂起- 直到返回结果代码。然后解析HTTP结果代码。结果如下:

如果收到HTTP 2XX 返回代码,则继续RTMP 会话。

如果使用HTTP 3XX返回码,则将RTMP重定向到另一个流。该流的名称是从HTTP 返回标头的位置获取的。如果新流的名称以rtmp: 开头//则将创建远程中继。 Relay 需要指定IP 地址而不是域名,并且仅适用于nginx 版本1.3.10 或更高版本。另请参见notify_relay_redirect。 * 对于其他返回代码,RTMP 连接将被断开。

重定向示例:

http { . 位置/local_redirect { 重写^.*$ 新名称?永恒的; } location /remote_redirect { # 这里没有域名,只有ip重写^.*$ rtmp://192.168.1.123/someapp/somename?永恒的; } .}rtmp { . 应用程序myapp1 { 继续运行; # 流将被重定向到’newname’ on_play http://localhost:8080/local_redirect; } 应用程序myapp2 { 继续运行; # 流将从远程位置拉取# 需要nginx=1.3.10 on_play http://localhost:8080/remote_redirect; } .} HTTP 请求收到一些参数。使用application/x-www-form-urlencoded MIME 类型下的POST 方法。以下参数将传递给调用者:

通话=播放。 addr: 客户端IP 地址。 app : 应用程序名称。 flashVer : 客户端Flash 版本。 swfUrl : 客户端swf 网址。 tcUrl : tcUrl。 pageUrl : 客户端页面URL。 name : 流名称。

(3)on_publish

与上面提到的on_play 相同,唯一的区别是该指令在发出命令时设置回调。与远程拉取不同,这里可以进行推送。设置语法为on_publish url。

(4)完成时

设置播放/发布禁用回调。以上所有内容都适用于此。但该回调不检查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

设置更新回调。该回调将在notify_update_timeout期间被调用。如果请求返回的结果不是2XX,则连接被禁止。这可用于同步过期的会话。附加一个时间参数,播放/发布调用后的秒数将被发送到处理程序。设置语法为on_update url。

(9)notify_update_timeout

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

(10)notify_update_strict

将on_update 回调切换为严格模式,默认关闭。设置为打开时,所有连接错误、超时以及HTTP 解析错误和null 返回都将被视为更新失败并导致连接终止。当设置为off时,只有与2XX不同的HTTP返回码才会导致失败。

(11)notify_relay_redirect

允许将本地流重定向到on_play 和on_publish 远程重定向。新的流名称为RTMP URL,用于远程重定向。默认关闭。设置参数示例,notify_relay_redire

ct 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 300×200 -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

创建指定的日志格式。日志格式看起来很像 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.总结

用户评论

直播配置示例详解(含加密文件实现)
巷陌繁花丶

看了这篇直播配置示例详解,感觉学到了不少,尤其是加密文件实现的部分,太实用了!

    有12位网友表示赞同!

直播配置示例详解(含加密文件实现)
爱你的小笨蛋

之前一直对直播加密技术一头雾水,这篇文章解开了我的疑惑,感谢分享!

    有20位网友表示赞同!

直播配置示例详解(含加密文件实现)
蹂躏少女

文章里提到的加密文件实现,对我这种小白来说有点复杂,还是得多看几遍。

    有10位网友表示赞同!

直播配置示例详解(含加密文件实现)
Edinburgh°南空

直播配置示例这么详细,简直是直播爱好者的福音啊!

    有16位网友表示赞同!

直播配置示例详解(含加密文件实现)
顶个蘑菇闯天下i

看了这篇文章,才发现原来直播加密也可以这么简单,太棒了!

    有19位网友表示赞同!

直播配置示例详解(含加密文件实现)
作业是老师的私生子

虽然看懂了直播配置示例,但是加密文件实现这部分还是不太明白,希望有高手能解答一下。

    有8位网友表示赞同!

直播配置示例详解(含加密文件实现)
我的黑色迷你裙

每次看直播都担心信息泄露,这篇文章让我找到了解决办法,赞一个!

    有20位网友表示赞同!

直播配置示例详解(含加密文件实现)
自繩自縛

直播配置示例详解,加密文件实现这部分让我眼前一亮,学到了不少新知识。

    有19位网友表示赞同!

直播配置示例详解(含加密文件实现)
妄灸

文章写得太好了,不仅介绍了直播配置,还详细解释了加密文件实现,太贴心了。

    有17位网友表示赞同!

直播配置示例详解(含加密文件实现)
灬一抹丶苍白

看完这篇文章,我对直播加密有了全新的认识,谢谢分享!

    有17位网友表示赞同!

直播配置示例详解(含加密文件实现)
ー半忧伤

直播配置示例详解,虽然加密文件实现部分有点难懂,但是还是能理解个大概,慢慢来。

    有14位网友表示赞同!

直播配置示例详解(含加密文件实现)
落花忆梦

文章里提到的直播加密技术,我觉得在实际应用中应该会有很大的市场。

    有20位网友表示赞同!

直播配置示例详解(含加密文件实现)
太难

加密文件实现这部分,能不能再详细一点?我对直播安全这块很感兴趣。

    有11位网友表示赞同!

直播配置示例详解(含加密文件实现)
揉乱头发

直播配置示例详解,这篇文章让我对直播行业有了更深的了解,谢谢作者!

    有17位网友表示赞同!

直播配置示例详解(含加密文件实现)
惦着脚尖摘太阳

直播加密文件实现这部分,我觉得可以加入一些实际操作步骤,这样更容易理解。

    有8位网友表示赞同!

直播配置示例详解(含加密文件实现)
最怕挣扎

这篇文章让我对直播加密有了全新的认识,尤其是加密文件实现,太棒了!

    有17位网友表示赞同!

直播配置示例详解(含加密文件实现)
滴在键盘上的泪

看了直播配置示例详解,感觉自己离成为一个直播高手又近了一步。

    有8位网友表示赞同!

直播配置示例详解(含加密文件实现)
各自安好ぃ

加密文件实现这部分,我完全看不懂,希望作者能出一篇更详细的教程。

    有11位网友表示赞同!

直播配置示例详解(含加密文件实现)
凉笙墨染

直播配置示例详解,这篇文章让我对直播行业有了更深的理解,尤其是加密文件实现,太实用了。

    有16位网友表示赞同!

直播配置示例详解(含加密文件实现)
不识爱人心

虽然看懂了直播配置示例,但是加密文件实现这部分还是觉得有点难,希望作者能再出一篇教程。

    有5位网友表示赞同!

直播配置示例详解(含加密文件实现)
念旧情i

这篇文章让我对直播加密有了全新的认识,尤其是加密文件实现,太棒了!

    有9位网友表示赞同!

综合资源

流媒体服务器架构及应用分析

2024-10-31 21:31:46

综合资源

错过了双子座流星雨?没关系!这6张流星美图让你大饱眼福

2024-10-31 21:37:03

购物车
优惠劵
搜索