首先我们下载需要的源码包,如下:
nginx-rtmp-module-1.2.1.zip
nginx-1.18.0.tar.gz
哪里下载的?肯定是官方啊!
我们先用YUM安装编译环境:
yum -y install gcc gcc-c++ zlib zlib-devel pcre pcre-devel openssl openssl-devel unzip
我一般习惯把源码包集成放置到 /data/ide 目录下,首先要解压缩 nginx-rtmp-module
cd /data/ide
unzip nginx-rtmp-module-1.2.1.zip
然后编译安装Nginx
mkdir /data/nginx
groupadd nginx
useradd -g nginx nginx -s /sbin/nologin
cd /data/ide
tar zxvf nginx-1.18.0.tar.gz
cd nginx-1.18.0
export CFLAGS=""
./configure --prefix=/data/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--add-module=/data/ide/nginx-rtmp-module-1.2.1
make && make install
这个过程非常简单了,我们将nginx安装到了/data/nginx目录下,并且创建了一个同名用户来运行Nginx
通常情况,我们都会把nginx设置开机启动,centos 7以上是用Systemd进行系统初始化的
cd /lib/systemd/system
vi nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
ExecStart=/data/nginx/sbin/nginx
ExecReload=/data/nginx/sbin/nginx reload
ExecStop=/data/nginx/sbin/nginx quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
:wq
# 设置开机启动
systemctl enable nginx.service
其实很简单,就是在 /lib/systemd/system 目录下创建一个 nginx.service 文件。
文件内容已经给出,然后通过 systemctl 命令设置开机自启动。
请注意nginx的安装目录,如果跟我的不一样,文件内容的路径也要对应调整。
如果我们需要重启或者关闭Nginx的话,可以使用如下命令
# 启动nginx命令
systemctl start nginx.service
# 结束nginx命令
systemctl stop nginx.service
# 重启nginx命令
systemctl restart nginx.service
这个东西确实别CentOS6简单多了。
Nginx安装成功后,我们需要设置防火墙,开启80端口。
yum -y install iptables-services
vi /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
:wq
# 关闭firewall,CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙
systemctl disable firewalld.service
# 设置开机启动:
systemctl enable iptables.service
上面的脚本很简单了,安装iptables,然后增加80端口,关闭CentOS默认的防火墙,设置iptables开机启动。
我们重启CentOS之后,浏览器访问:http://192.168.0.200
为什么是这个IP地址,请翻我前面的文章。
还没有结束,我们的目的是安装nginx-rtmp-module,一个直播模块。
我们需要配置,开启直播功能:
vi /data/nginx/conf/nginx.conf
rtmp {
server {
listen 1935;
application mylive {
live on;
}
}
}
:wq
# 重启Nginx
systemctl restart nginx.service
上面的脚本很简单啊,就是修改Nginx的配置文件,增加rtmp标签内容。
把内容放到events和http中间即可,rtmp默认使用1935端口。
因此,我们需要开启1935端口:
# 添加端口
vi /etc/sysconfig/iptables
-A INPUT -p tcp --dport 1935 -j ACCEPT
:wq
# 重启防火墙
systemctl restart iptables
配置已经完成,Nginx和防火墙都已经重新启动了。
下一步该如何使用检查一个直播功能了。
推流我们使用ffmpeg命令即可,拉流的话安装一个VLC media player即可。
请注意,推流是CentOS虚拟机上运行的,VLC media player播放器拉流是在宿主机Win7上完成的。
关于如何安装ffmpeg请参考上一篇文章:CentOS7编译安装ffmpeg
我们随便下载一个mp4视频文件,放置到/data目录下即可,然后执行如下命令进行推流:
ffmpeg -re -i /data/test.mp4 -vcodec copy -acodec aac -b:a 192k -f flv rtmp://192.168.0.200:1935/mylive/3
#-vcodec copy 指定视频编码为复制。
#-acodec aac 音频使用aac编码。
#-b:a 192k则是指定码率。
#-f flv 指定输出格式,这个必须是flv才能推到直播服务器。
直播流地址是:rtmp://192.168.0.200:1935/mylive/3
后面的数字3是流ID,一个视频流对应一个ID,也可以理解为一个直播房间,这个ID肯定是根据业务情况自定义的。
推流开始后截图如下:
执行推流命令之后,我们就可以打开 VLC media player ,一个路障标志的播放器。
使用菜单”媒体“-》”打开网络串流(N)“, 见如下:
在地址栏输入 直播流地址,点击播放就能看到我们刚才的mp4文件了。
视频播放开始的时候,还显示了播流地址。说明成功了!