centos7下利用nginx+rtmp搭建直播流服务器

0、安装Centos7 Mini版即可

(1)参照教程《CentOS /RHEL 系统更新安全补丁的方法》将Centos7 升级到最新

(2)通过yum安装必备包

#yum -y  install wget

#yum -y install git

(3)关闭防火墙(也可以之后根据需要开放对应端口)

#systemctl stop firewalld

#systemctl disable firewalld

1.到nginx官网下载源码到服务器然后解压

官网地址http://nginx.org/en/download.html
右键复制地址得到地址 http://nginx.org/download/nginx-1.15.12.tar.gz

下载并解压

1)#wget http://nginx.org/download/nginx-1.15.12.tar.gz
(2)#tar zxvf nginx-1.15.12.tar.gz

2.下载nginx-rtmp-module

#git clone https://github.com/arut/nginx-rtmp-module.git

3.环境检查 编译 安装

(1)如果缺少gcc等环境编译工具请自行下载安装

#yum -y install gcc openssl-devel zlib pcre

(2)切换到nginx源码目录下执行

#cd nginx-1.15.12

./configure –prefix=/usr/local/nginx –add-module=../nginx-rtmp-module –with-http_ssl_module

如果提示缺少提示缺少openssl,zlib,pcre相关的lib,有两种解决方式
1)系统安装相关的软件,但是在实际的安装过程中遇到openssl安装了但是nginx还是找不到,这个应该是openssl的安装目录和nginx找的目录对不上,此时可采用第二种方式
2)下载openssl,zlib,pcre的源码包,指定目录,运行

./configure –add-module=<nginx-rtmp-module的源码目录>
–with-pcre=<pcre的源码目录>
–with-openssl=<openssl的源码目录>
–with-zlib=<zlib的源码目录>

然后再执行

如果结果是这样的就没问题了

(3)接下来就是编译安装了

make && make install

编译完成可能会报错,原因在于openssl的版本和nginx的版本不兼容,具体版本适配可以百度
执行完后去/usr/local目录下可以看到nginx文件夹,这个就是编译安装生成nginx

(4)创建hls存储路径

mkdir -p /usr/share/nginx/html/hls

4.编辑配置文件

nginx当前安装路径为 /usr/share/nginx/

我们主要关心的文件有两个,一个是sbin/nginx 这个是nginx的执行文件,还有一个就是conf/nginx.conf这个是nginx的配置文件

./sbin/nginx -c ./conf/nginx.conf 启动nginx
./sbin/nginx -s stop 停止nginx
./sbin/nginx -s reload 重启nginx

配置nginx.conf


#user  nobody;
worker_processes  1;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
rtmp {   #推流配置   
    server {    
        listen 1935;  #监听的端口  
        chunk_size 1000;    
        application live {#直播推流配置,推流地址rtmp://ip:1935/live/流密匙,这个流密匙用于拉流时之用
            live on;
            record off;
        }
        application hls {  #点播推流配置  推流地址rtmp://ip:1935/hls/流密匙 
            live on;    
            hls on;    
            hls_path /usr/local/nginx/html/hls;   #ts文件存放地址
            hls_fragment 1s;    
        }    
    }    
}  
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
 
        location / {
            root   html;
            index  index.html index.htm;
        }
 
        location /hls {#获取点播流的配置
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            alias /usr/local/nginx/html/hls;
            add_header Cache-Control no-cache;
        }
    }
}

5.启动nginx之后就可以进行推流了

(1)启动nginx

 

(2)推流

这里用的推流工具为obs https://obsproject.com/

6.拉流观看,利用ckplayer创建播放页面

(1)下载ckplayer播放器源码

#cd /usr/local/nginx/html

#wget http://ckplayer-down.oss-cn-shanghai.aliyuncs.com/x1/ckplayer.zip

#unzip ckplayer.zip

(2)直播拉流 创建直播流播放页面 live.html( 其中test就是推流时所用串流密钥)

<script type="text/javascript" src="ckplayer.js" charset="utf-8"></script>
   <div id="a1"></div>
   <script type="text/javascript">
   var flashvars = {
       f: 'rtmp://ip:1935/live/test',
       c: 0
   };
   var video = [''];
   CKobject.embed('ckplayer.swf', 'a1', 'ckplayer_a1', '600', '400', false, flashvars, video);
</script>

(3)点播拉流,创建点播页面,并用ffmpeg 将视频切片

<script type="text/javascript" src="ckplayer.js" charset="utf-8"></script>
 <div id="a1"></div>
 <script type="text/javascript">
 var flashvars = {
     f: 'm3u8.swf',
     a: 'http://ip/hls/test.m3u8',
     s: 4,
     c: 0
 };
 var params = {
     bgcolor: '#FFF',
     allowFullScreen: true,
     allowScriptAccess: 'always',
     wmode: 'transparent'
 };
 var video = ['http://ip/hls/test.m3u8'];
 CKobject.embed('ckplayer.swf', 'a1', 'ckplayer_a1', '100%', '100%', false, flashvars, video, params);
 </script>

7.至此,服务器创建完成