3.3.1 Record

通过Record选项,我们可以实现对直播流的录制与停止功能。这完全取决于我们在record中设置的参数。

示例

我们先来看一个最简单的配置实现录制

application mylive{
           live on;
           hls on;
           hls_path /usr/local/m3u8File;
           hls_fragment 2s;
           hls_playlist_length 16s;
           recorder myRecord {
               record all manual;
               record_suffix _.flv;
               record_path /tmp/rec;
           }
        }

首先手动去创建一个目录 mkdir /tmp/rec,再执行ffmpeg推流命令,再去请求开启录制的url。

ffmpeg -i /tmp/nh.mp4 -c:v libx264 -c:a aac -f flv rtmp://172.26.22.30:1935/mylive/77 
#ffmpeg推流
http://172.26.22.30/control/record/start?app=mylive&name=77&rec=myRecord
#开启录制url

执行后页面返回/tmp/rec/77_.flv。但是我们到tmp/rec目录下并没发现有录制的文件存在。这里通常是因为文件夹访问权限授予的不够高,无法在rec目录创建及写入,我们通过chmod -R 777 /tmp对目录进行授权,-R是递归子目录,777是最高权限,因为tmp目录我们未来会放很多东西所以把它全部授权了,然后再执行录制命令,成功录制文件,如图3-4。


图3-4

如何停止录制呢?很简单。替换url中start为stop即可。

常用配置

rtmp_stat

流数据统计模块,通过在HTTP下配置可以通过url实时监控流媒体各种状态

示例:
#http://ip:post/liveStat
 location /liveStat { 
      rtmp_stat all; 
      rtmp_stat_stylesheet stat.xsl;
    }
    location /stat.xsl { 
      root /download/NRM/;
    }
record

record配置中最基础的功能,来设定录制媒体选项 命令选项 [off|all|audio|video|keyframes|manual] off:关闭录制 all:录制音频与食品 audio:仅录制音频 video:仅录制食品 keyframes:仅记录关键帧 manual:手动开启和关闭录制(默认自动录制)

示例:
record all manual #手动控制,记录音视频
record audio #自动控制,记录音频
record_path

设置录制文件的输出路径

示例:
record_path /xx/x/
record_suffix

设置录制文件输出的文件名 nginx-rtmp-module会在{1}的位置自动替换为StreamKey,因此我们可以设置个性的文件名格式规范(支持strftime函数)。

示例:
record_suffix {1}.flv
record_unique

将当前时间戳附加到已记录的文件。否则,每次新记录发生时,将重写相同的文件。默认是关闭的。 输出格式为{StreamKey}-{long time} 例:77-1517192930.flv

示例:
record_unique on
record_append

将新数据追加到旧文件中,或者当它丢失时创建它。旧数据和文件中的新数据之间没有时间差。默认是关闭的。 因此append与unique、suffix配置是有所冲突的,因为unique与使用了strftime函数的suffix总会产生一个不同的文件名,因此append追加也就没有意义了。

示例:
record_append on
record_max_size

最大录制文件大小,当达到大小限制后,文件将会清空并写入后续数据,确保不会超过设置的数值。

示例:
record_max_size 5000K

results matching ""

    No results matching ""