Nginx RTMP record 不能录制或者保存视频的原因分析

背景描述

今天用nginx, nginx-rtmp-module搭建了一台RTMP流式服务器,能正常的推流,正常的播放RTMP流,能实现直播功能,但是我想把推过来的视频流保存起来,于是查了下,发现是可以实现的,需要在nginx配置文件中配置一下,我按照网上的配置了,但是死活录制不了视频,我的nginx.cnf 配置如下:

rtmp {
    server {
        listen 1935;
        application videotest {
            live on;
            recorder rec1{
                record all;
                record_unique on;
                record_path /home/lab1107/record;
                record_suffix -%Y-%m-%d-%H_%M_%S.flv;
            }
        }
    }
}

原因分析

找错误原因,一般需要查看日志,于是我去查看nginx/logs/error 日志
这里写图片描述
日志信息很明显,是没有权限访问录制视频保存的路径。进一步发问,为什么没有权限呢?是不是Nginx 的程序拥有者没有权限访问,于是我用

  ps -aux|grep nginx 

命令查看了下
这里写图片描述
发现Nginx 的worker进程的用户尽然是nobody,到这时基本就知道问题出在哪里了,nobody 怎么有权限访问其他用户的路径呢

解决方案

修改 nginx work process的用户,由于nginx process 默认是nobody,需要修改为你录制视频保存的那个文件夹的所属用户,修改/usr/local/nginx/conf/nginx.cnf 配置文件,将 user nobody 改为user lab1107

 user nobody 改为 user lab1107

注:lab1107 为 视频保存的文件夹的所属用户
修改完成之后,重新加载一下nginx 的配置即可

./sbin/nginx -s reload

参考资料
stackoverflow
nginx-rtmp-module issues

你可能感兴趣的:(nginx)