在CentOS 7上设置Nginx-RTMP
** 这个写的都是从源码安装 **
安装Nginx和Nginx-RTMP
- 安装从源代码编译Nginx和Nginx-RTMP所需的工具。
sudo yum install pcre pcre-devel openssl openssl-devel zlib zlib-devel -y
- 创建一个临时目录用来下载源码压缩包
mkdir ~/temp
cd ~/temp
- 下载Nginx和Nginx-RTMP源代码。
wget http://nginx.org/download/nginx-1.9.9.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
- 安装 unzip 包
sudo yum install unzip
- 提取源码。
tar -xvf nginx-1.9.9.tar.gz
unzip master.zip
- 切换到Nginx目录。
cd nginx-1.9.9
- 添加模块以编译成Nginx。添加Nginx-RTMP。
这里./configure
检测你的安装平台的目标特征 可以使用 ./configure --help
查看帮助
./configure --add-module=../nginx-rtmp-module-master/
- 编译和安装Nginx。
make
sudo make install
- 创建SystemD单元文件
sudo vim /usr/lib/systemd/system/nginx.service
并写入如下
[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
按ESC
输入:wq
保存并退出
- 启动nginx服务
sudo systemctl start nginx.service
输入以下让系统在启动时就自动启动nginx
systemctl enable nginx.service
现在就可以在浏览器中输入http://*******
,******
是你服务器的IP地址
看到了一个页面就证明你的nginx服务已经启动了
安装FFMPEG
- 更新系统
sudo yum install epel-release -y
sudo yum update -y
sudo shutdown -r now
- 安装Nux 库
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
- 安装ffmpeg 和它的开发库
sudo yum install ffmpeg ffmpeg-devel -y
配置nginx
- 打开Nginx配置文件
sudo vim /usr/local/nginx/conf/nginx.conf
在文件最后添加如下:
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
allow publish 127.0.0.1;
allow publish *.*.*.*;
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 *.*.*.*;
deny publish all;
}
}
}
这里说明一下 其中的 *.*.*.*
改为你实际的ip地址,不然谁都能往你的服务器推流。中间的ffmpeg
命令将其中一个直播流,视频改用h264压缩,音频改用aac,送至另外一个直播服务流,可以自定义视频比特率,音频比特率和分辨率等设置。
- 重启 nginx
sudo service nginx restart
一切都搭建完成,你可以在本地使用ffmpeg 推流至服务器,然后使用vlc拉流进行观看了
推流:使用ffmpeg
ffmpeg -i local.mp4 -c:a aac -c:v libx264 -vpre slow -f flv rtmp://server/live/h264Stream
拉流:直接在vlc中打开串流输入如下
rtmp://*.*.*.*:XXXX/live360p/h264Stream