NRM - 环境搭建

NRM(Nginx-rtmp-module) 的出现,使得很多非专业的流媒体开发工程师也可以简单、迅速地搭建流媒体服务器。

在 NRM 安装之前,首先要确保完成了 Nginx - 环境搭建 中的内容,然后再进行后续操作。

NRM 介绍

安装前的准备

下载 NRM

可以在 Github 中的 nginx-rtmp-module 项目仓库:https://github.com/arut/nginx-rtmp-module/releases 获取 nginx-rtmp-module 源码包。

至本文编写时,最新的 nginx-rtmp-module 稳定版本为 nginx-rtmp-module-1.2.1,下文也是用该版本的源码包 nginx-rtmp-module-1.2.1.tar.gz 进行安装。

将下载好的源码包 nginx-rtmp-module-1.2.1.tar.gz 放到准备好的 Nginx 源码目录(比如我的目录为 /root/nginx/)中,通过命令解压:

# git clone https://github.com/arut/nginx-rtmp-module
$ tar xzvf nginx-rtmp-module-1.2.1.tar.gz
$ mv nginx-rtmp-module-1.2.1 rtmp-module

安装

进入 Nginx 源码目录(比如我的目录为 /root/nginx/nginx-1.18.0/),执行以下命令:

$ ./configure --add-module=/path/src/rtmp-module/
# My configure option
$ ./configure --add-module=/root/nginx/rtmp-module/ --prefix=/usr/local/nginx --with-http_ssl_module --pid-path=/var/run/nginx.pid --with-debug
$ make && sudo make install

配置

修改配置文件

  1. 从原配置文件中拷贝一份作为新配置文件的模板:

    $ cd /usr/local/nginx/conf/
    $ cp nginx.conf live.conf

  2. 在新配置文件末尾加入以下内容:

    rtmp {
        server {
            listen 1935;
            application mylive {
                live on;
            }
        }
    }

  3. 启用新配置文件:

    ==1. Systemctl 工具配置(推荐)==

    • 修改系统服务脚本(sudo vim /lib/systemd/system/nginx.service):

      # 找到如下行
      ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
      # 修改为
      ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/live.conf

    • 重启 Nginx 服务使新配置生效:

      [root@VM_0_6_centos conf]# sudo systemctl restart nginx

    ==Service 工具配置==

    • 修改系统服务脚本(vim /etc/init.d/nginx):

      # 找到如下行
      NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
      # 修改为
      NGINX_CONF_FILE="/usr/local/nginx/conf/live.conf"

    • 检查配置文件正确性:

      [root@VM_0_6_centos conf]# service nginx configtest
      nginx: the configuration file /usr/local/nginx/conf/live.conf syntax is ok
      nginx: configuration file /usr/local/nginx/conf/live.conf test is successful

    • 重启 Nginx 服务使新配置生效:

      [root@VM_0_6_centos conf]# service nginx restart
      Restarting nginx (via systemctl):                          [  OK  ]

测试

使用 ffmpeg 推流

在服务器上使用 ffmpeg 向 Nginx-rtmp-module 服务进行推流:

ffmpeg -re -i xxx.flv -r 25 -b 1M -f flv rtmp://127.0.0.1:1935/url
# 示例:
ffmpeg -re -i Read_Book_852x480.flv -ar 22050 -f flv rtmp://127.0.0.1:1935/mylive/1
ffmpeg -re -stream_loop -1 -i Read_Book_1280x720.flv -vcodec libx264 -f flv rtmp://127.0.0.1:1935/mylive/1

使用 VLC 拉流

使用可以连接到服务器的计算机打开 VLC 播放器进行拉流:

VLC 拉流测试

参考资料

  • [1] 中国工信出版集团 《直播系统开发 基于 Nginx 与 Nginx-rtmp-module》