centos7.5 Nginx+rtmp 搭建流媒体服务器
一. gcc 安装
安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:
yum -y install gcc gcc-c++
二. PCRE pcre-devel 安装
PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。命令:
yum install -y pcre pcre-devel
三. zlib 安装
zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。
yum install -y zlib zlib-devel
四. OpenSSL 安装
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。
1、第一种安装方式
yum install -y openssl openssl-devel
2、第二种安装方式(源码编译安装)
sudo wget https://www.openssl.org/source/openssl-1.1.0e.tar.gz
sudo tar -zxvf openssl-1.1.0e.tar.gz
cd openssl-1.1.0e/
sudo ./config
sudo make
sudo make install
3、第三种安装方式(已经使用此方案,安装成功)
# 查看openssl版本
openssl version
下载openssl
sudo wget https://www.openssl.org/source/openssl-1.1.0e.tar.gz
解压并编译安装
tar -zxvf openssl-1.1.1c.tar.gz
cd openssl-1.1.1c
./config --prefix=/usr/local/openssl #如果此步骤报错,需要安装perl以及gcc包
make && make install
mv /usr/bin/openssl /usr/bin/openssl.bak
ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig -v # 设置生效
# 查看openssl版本
openssl version
五、安装nginx 跟rtmp MP4模块
1.官网下载直接下载.tar.gz安装包
下载Nginx
wget http://nginx.org/download/nginx-1.12.1.tar.gz
下载 Rtmp
wget https://github.com/arut/nginx-rtmp-module/archive/v1.2.0.tar.gz
下载flv和mp4支持模块
wget http://h264.code-shop.com/download/nginx_mod_h264_streaming-2.2.7.tar.gz
2.解压
tar -zxvf nginx-1.12.1.tar.gz
tar -zxvf nginx_mod_h264_streaming-2.2.7.tar.gz
tar -zxvf v1.2.0.tar.gz
3、修改配置nginx openssl 的配置文件,否则会找不到openssl库
修改配置文件不然会报openssl库找不到错误
修改 /home/nginxdir/nginx-1.12.1/auto/lib/openssl/conf文件
增加下面这个分支替换增加的路径
if [ $ngx_found = no ]; then
ngx_feature="OpenSSL library in //root/liushen/nginx/openssl-OpenSSL_1_1_0f/bin/include"
ngx_feature_path="/root/liushen/nginx/openssl-OpenSSL_1_1_0f/bin/include"
if [ $NGX_RPATH = YES ]; then
ngx_feature_libs="-R/root/liushen/nginx/openssl-OpenSSL_1_1_0f/bin/lib -L/root/liushen/nginx/openssl-OpenSSL_1_1_0f/bin/ -lssl -lcrypto $NGX_LIBDL"
else
ngx_feature_libs="-L/root/liushen/nginx/openssl-OpenSSL_1_1_0f/bin/lib -lssl -lcrypto $NGX_LIBDL"
fi
. auto/feature
fi
增加后截图如下:
4、生成Makefile
安装nginx跟rtmp模块(未指定依赖包的路径,使用系统默认路径)
./configure --prefix=/usr/local/nginx --add-module=../nginx-rtmp-module --with-http_ssl_module
make & make install(指定依赖包的路径)
./configure --add-module=../nginx_mod_h264_streaming-2.2.7 --with-http_ssl_module --with-pcre=/root/zhang/nginx/pcre-7.9 --with-zlib=/root/zhang/nginx/zlib-1.2.3--user=www --group=www --prefix=/usr/local/nginx --with-http_flv_module --with-http_stub_status_module
make && make install
注意:
4.1、依赖包的路径,最好是加进去,不过不加也可以
4.2、第2种方案:先编译安装nginx-rtmp-module-1.2.0 ,然后后期再编译nginx_mod_h264_streaming-2.2.7 ,然后删除安装目录中的nginx文件,将/home/nginxdir/nginx-1.12.1/objs下的编译好的nginx文件,复制到安装目录/usr/local/nginx/sbin
4.3、编译时如果报weberror的错误,将/home/nginxdir/nginx-1.12.1/objs/Makefile 中的-weberror删除掉,重新编译,其余的错误,就是那里报错,注释哪里
4.4.修改配置文件。进入 /usr/local/nginx/conf 文件夹。增添rtmp部分
rtmp {
server {
listen 1935; #监听的端口
chunk_size 4000;
application live { #rtmp推流请求路径
live on;
recorder rec1 {
record all manual;
record_unique on;
record_notify on;
record_max_size 512M;
#record_interval 0s;
record_path /usr/local/nginx/html/flv_file;
record_suffix .flv;
# exec_record_done /usr/local/nginx/shell/upload2oss.sh $path $filename $basename;
}
}
}
}
http server块中添加如下部分:
root /usr/local/nginx/html/flv_file/;
#limit_rate_after 5m; ####在flv视频文件下载了5M以后开始限速
#limit_rate 512k; ####速度限制为512K
index index.html;
charset utf-8;
location ~ \.flv {
flv;
}
location ~ \.mp4$ {
mp4;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location / {
root html;
index index.html index.htm;
}
location /control {
rtmp_control all;
}
5、进入 /usr/local/nginx/sbin文件夹,执行./nginx启动nginx
参考网址:
centos7 搭建Nginx+rtmp流媒体服务器
CentOS7升级OpenSSL版本
搭建nginx rtmp流媒体服务器(超详细)
nginx搭建mp4、flv流媒体服务器
RTMP 流媒体服务器视频直播录制并上传至OSS实现