在Ubuntu 14.04上设置Nginx-RTMP

注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com

RTMP非常适合提供实时内容。将RTMP与FFmpeg配对时,可以将流转换为各种质量。 Vultr非常适合这些应用程序,因为它们提供了快速而专用的CPU性能。 Vultr的全球网络还可以确保您以最小的延迟交付高质量的实时内容。让我们开始吧!

安装Nginx和Nginx-RTMP

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

sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev

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

mkdir ~/working
cd ~/working

下载Nginx和Nginx-RTMP源。

wget http://nginx.org/download/nginx-1.7.5.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip

安装解压缩软件包。

sudo apt-get install unzip

提取Nginx和Nginx-RTMP源。

tar -zxvf nginx-1.7.5.tar.gz
unzip master.zip

切换到Nginx目录。

cd nginx-1.7.5

添加将与Nginx一起编译的模块。包括Nginx-RTMP。

./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master

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

make
sudo make install

安装Nginx初始化脚本。

sudo wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx
sudo chmod +x /etc/init.d/nginx
sudo update-rc.d nginx defaults

启动和停止Nginx以生成配置文件。

sudo service nginx start
sudo service nginx stop

安装FFmpeg

添加FFmpeg PPA。

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next

更新软件包列表。

sudo apt-get update

安装FFmpeg。

sudo apt-get install ffmpeg

注意:
  在某些情况下,可能未安装apt-add-repository命令。要安装它运行 sudo apt-get install software-properties-common

配置Nginx-RTMP和FFmpeg

打开Nginx配置文件。

sudo nano /usr/local/nginx/conf/nginx.conf

追加以下内容。

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 将改变分辨率。

同时按Control和X保存文件。
重新启动Nginx。

sudo service nginx restart

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

安全须知

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

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

sudo nano /usr/local/nginx/conf/nginx.conf

查找以下行。

                live on;
                record off;

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

                allow publish 127.0.0.1;
                allow publish 0.0.0.0;
                deny publish all;

现在,配置应如下所示。

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;
        }
    }
}

同时按Control和X保存文件。
重新启动Nginx。

sudo service nginx restart

配置软件以与Nginx-RTMP一起使用

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

Field 1: rtmp://your.vultr.ip/live/
Field 2: stream-key-you-set

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

rtmp://your.vultr.ip/live/stream-key-you-set
rtmp://your.vultr.ip/live360p/stream-key-you-set

设置播放器以在网站上显示实时视频超出了本指南的范围。搜索“ RTMP网络播放器”一词可能会对您有所帮助。

注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com