一 、安装nginx和rtmp插件模块
1.1 首先查看系统是否已安装nginx
whereis nginx查找位置,如果是yum安装的,没有configure文件,卸载参考:
https://www.jianshu.com/p/c1ce9eec5fb2
(注意:所有命令请手打,复制粘贴会因为空格的系统编码不同而执行失败!)
1.2 然后进入local目录
cd /usr/local
下载nginx(没有安装wget的请安装,安装命令:yum -y install wget)(注意:不能使用yum安装nginx,需要下载源码包编译安装才行,源码包中有configure文件)
wget http://nginx.org/download/nginx-1.18.0.tar.gz
1.3 解压
tar -zxvf nginx-1.18.0.tar.gz
1.4 目录换名
mv nginx-1.18.0 nginx
1.5 创建插件模块目录
mkdir -p /usr/local/nginx/module
1.6 创建视频数据存放位置
mkdir -p /usr/local/nginx/myapp
1.7 进入到/usr/local/nginx/module目录
cd /usr/local/nginx/module
下载nginx-rtmp-module,下载后的文件夹名叫nginx-rtmp-module
git clone https://github.com/arut/nginx-rtmp-module.git
(安装git命令:yum -y install git)
【其他方案:原生的nginx-rtmp-module有一些缺陷,可以使用它的升级模块:nginx-http-flv-module,github地址:https://github.com/winshining/nginx-http-flv-module.git,具体介绍参见中文README.CN.md】
1.8 进入解压后的nginx目录中
cd /usr/local/nginx/
指定nginx安装目录并且指定了安装的模块
./configure --prefix=/usr/local/nginx --add-module=/usr/local/nginx/module/nginx-rtmp-module --conf-path=/usr/local/nginx/conf/nginx.conf --with-http_ssl_module
如果报错说明缺少依赖库:
yum -y install pcre-devel
yum -y install openssl openssl-devel
1.9 编译并安装
make && make install
(有一两个make的小错误,可以忽略不计,启动nginx成功的话,就不用管!)
1.10 启动nginx
/usr/local/nginx/sbin/nginx &
如果报错没有logs文件夹,则创建。
此时如果没有问题,那么你就可以访问http://localhost了,会出现welcome界面。
二、 配置nginx与nginx-rtmp-module
编辑nginx配置文件,使用vim打开
vim conf/nginx.conf
添加 rtmp节点,增加myapp应用节点信息:
rtmp {
server {
listen 1935;
application myapp{
live on; #第一处添加的直播字段
on_play http://localhost:8888/rtmp/on_play; #状态回调接口
}
}
}
在http节点下,增加stat 、stat.xsl等
http {
server {
listen 9000; # 可自定义端口
location /stat { #浏览器前端展示服务推拉流状态
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
root /usr/local/nginx/module/nginx-rtmp-module/;
}
location /control {
rtmp_control all;
}
location /rtmp-publisher {
root /usr/local/nginx/module/nginx-rtmp-module/test;
}
##原nginx配置,浏览器访问localhost:9000显示welcome界面
#location / {
# root html;
# index index.html index.htm;
#}
#注意1:测试浏览器拉流,播放视频,需修改index.html
location / {
root /usr/local/nginx/module/nginx-rtmp-module/test/www;
}
}
}
配置完成后在nginx目录下重启服务
./sbin/nginx -s reload -c /usr/local/nginx/conf/nginx.conf
rtmp节点配置代表的是流媒体服务器配置,live on代表的是视频直播服务,on_play代表播放视频的状态回调配置接口地址(需要部署相应的http接口服务才可以打印相应的状态回调信息),stat配置代表的是可以在浏览器中查看监控当前流媒体拉流客户端状态信息,如下
三、使用ffmpeg进行推流和ffplay进行拉流测试
本地windows下载ffmpeg压缩包解压,在ffmpeg目录中放入一个视频文件demo.mp4,打开cmd窗口进入bin目录下:
3.1使用命令进行推流:
ffmpeg -re -i ../demo.mp4 -f flv -flvflags no_duration_filesize rtmp://127.0.0.1:1935/myapp/123
3.2使用命令进行拉流:
ffplay -fflags nobuffer rtmp:127.0.0.1:1935/myapp/123
如果没有问题,拉流后则会出现直播视频窗口,此时说明流媒体服务器部署成功。流媒体地址就是rtmp://127.0.0.1:1935/myapp/123
注释:【127.0.0.1:1935为rtmp服务器地址、myapp为nginx配置节点、123当做密钥(不同直播视频流密钥不同),拉流地址和推流地址一样即可播放】
注意1:也可以使用module插件自带的html文件进行拉流直播测试:
修改nginx/module/nginx-rtmp-module/test/www/index.html文件,将
file: "rtmp://localhost/myapp?carg=1/mystream?sarg=2" 中的mystream替换成推流的密钥就可以了。然后服务启动,在ie浏览器中输入localhost:9000,就不是nginx的欢迎页面了,而是视频播放页面,有推流的时候,点击播放键就可以直播了。(谷歌浏览器不支持Adobe flash,会提示No playable sources found)