centos7安装nginx-rtmp

2020-03-20 10:53:03 浏览数 (1)

简介

RTMP流媒体协议是 一套 Adobe 开发的音频视频实时传输协议;nginx-rtmp 是一个基于nginx的 RTMP服务模块,开源,免费

https://github.com/arut/nginx-rtmp-module

安装nginx和nginx-rtmp

1.安装从源代码编译Nginx和Nginx-RTMP所需的工具。

代码语言:javascript复制
sudo yum install pcre pcre-devel openssl openssl-devel zlib zlib-devel -y

2.创建一个工作目录并切换到该目录。

代码语言:javascript复制
mkdir ~/working
cd ~/working

3.下载Nginx和Nginx-RTMP源。

代码语言:javascript复制
wget http://nginx.org/download/nginx-1.9.7.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip

安装解压缩包。

代码语言:javascript复制
sudo yum install unzip

4.提取Nginx和Nginx-RTMP源。

代码语言:javascript复制
tar -xvf nginx-1.9.7.tar.gz
unzip v1.2.1.zip

5.切换到Nginx目录。

代码语言:javascript复制
cd nginx-1.9.7

6.添加模块以编译到Nginx中。包括Nginx-RTMP。

代码语言:javascript复制
./configure --add-module=../nginx-rtmp-module-1.2.1/

7.使用Nginx-RTMP编译并安装Nginx。

代码语言:javascript复制
make
sudo make install

8.为Nginx创建一个SystemD单元文件。

代码语言:javascript复制
sudo nano /usr/lib/systemd/system/nginx.service

用以下内容填充文件。

代码语言:javascript复制
[Unit]
Description=nginx - high performance web server
Documentation=https://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID

[Install]
WantedBy=multi-user.target

9.启动并启用Nginx服务。

代码语言:javascript复制
sudo systemctl start nginx.service

告诉SystemD在启动时自动启动Nginx服务。

代码语言:javascript复制
systemctl enable nginx.service

10.安装FFmpeg

安装epel-release和更新系统。

代码语言:javascript复制
sudo yum install epel-release -y
sudo yum update -y
sudo shutdown -r now

11.安装Nux存储库。

代码语言:javascript复制
sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

12.安装FFmpeg及其开发包。

代码语言:javascript复制
sudo yum install ffmpeg ffmpeg-devel -y

配置Nginx-RTMP和FFmpeg

打开Nginx配置文件。

代码语言:javascript复制
sudo nano /usr/local/nginx/conf/nginx.conf

将以下内容添加到配置中。

代码语言:javascript复制
    rtmp {
        server {
            listen 1935;
            chunk_size 4096;

            application live {
                    live on;
                    record off;
                    exec ffmpeg -i rtmp://localhost/live/$name -threads 1 -c:v libx264 -profile:v baseline -b:v 350K -s 640x360 -f flv -c:a aac -ac 1 -strict -2 -b:a 56k rtmp://localhost/live360p/$name;
            }
            application live360p {
                    live on;
                    record off;
        }
    }
}

添加该配置文本后,您可以自定义设置,例如视频比特率,音频比特率和分辨率。这些更改将仅应用于质量较低的流。要添加更多质量,请复制并粘贴exec FFmpeg行并更改设置。您还需要创建一个新的应用程序。您可以通过复制并粘贴已包含的live360示例来执行此操作。不要忘记用新应用程序的地址更新exec FFmpeg行。您可以通过更改exec FFmpeg行中的最终RTMP地址来执行此操作。

注意:之后 更改值-b:v将更改视频比特率。以千比特/秒为单位。之后更改值-b:a将更改音频比特率。以千比特/秒为单位。之后更改值-s将更改分辨率。

按CTRL 保存文件X。

重新启动Nginx。

代码语言:javascript复制
sudo service nginx restart

注意: 为了获得最佳性能,每个要转换的流都应具有自己的CPU内核。例如,如果要从720P流创建两种品质360P和480P,则应使用具有至少两个CPU内核的Vultr实例。

安全须知

如果您使用的是防火墙,则需要确保TCP 1935已允许。

当前配置允许任何人流式传输到您的服务器。我们可以通过仅授予某些IP地址发布权限来解决此问题。打开Nginx配置。

代码语言:javascript复制
sudo nano /usr/local/nginx/conf/nginx.conf

查找以下行。

代码语言:javascript复制
live on;
record off;

将以下内容添加到上述各行中。更改0.0.0.0为您的实际IP地址。

代码语言:javascript复制
allow publish 127.0.0.1;
allow publish 0.0.0.0;
deny publish all;

现在,配置将如下所示。

代码语言:javascript复制
rtmp {
    server {
        listen 1935;
        chunk_size 4096;

        application live {
                live on;
                record off;
                allow publish 127.0.0.1;
                allow publish 0.0.0.0;
                deny publish all;
                exec ffmpeg -i rtmp://localhost/live/$name -threads 1 -c:v libx264 -profile:v baseline -b:v 350K -s 640x360 -f flv -c:a aac -ac 1 -strict -2 -b:a 56k rtmp://localhost/live360p/$name;
        }
        application live360p {
                live on;
                record off;
                allow publish 127.0.0.1;
                allow publish 0.0.0.0;
                deny publish all;
        }
    }
}

按CTRL 保存文件X。

重新启动Nginx。

代码语言:javascript复制
sudo service nginx restart

配置软件以使用Nginx-RTMP

流应用程序通常具有两个用于连接信息的字段。第一个字段通常用于服务器信息,第二个字段通常用于流名称或键。列出了您应放置在每个字段中的信息。流名称或键可以设置为任何内容。

代码语言:javascript复制
Field 1: rtmp://your.vultr.ip/live/
Field 2: stream-key-you-set

要查看流,请在支持RTMP的播放器中打开以下链接。

代码语言:javascript复制
rtmp://your.vultr.ip/live/stream-key-you-set
rtmp://your.vultr.ip/live360p/stream-key-you-set

https://www.vultr.com/docs/setup-nginx-rtmp-on-centos-7

0 人点赞