使用Nginx+nginx-rtmp-module+OBS推流搭建流媒体服务器

一、安装Nginx

    下载必备安装包

    创建安装包存放文件夹

    cd
    mkdir /usr/source #创建源码目录 后面的源码都放在这个目录
    cd source
    yum -y install git #安装git
    git clone https://github.com/nginx/nginx.git #从github服务器上将nginx的源代码下载下来
    git clone https://github.com/arut/nginx-rtmp-module.git #将rtmp模块的源码下载下来
     
    当git下载nginx失败时可以去官网下载后放到服务器
    nginx的官方网站为:http://nginx.org/en/download.html
     
    下载依赖模块源码pcre、OpenSSL、zlib 如果机器上已经安装了这些模块就不需要了
    wget https://www.openssl.org/source/openssl-1.1.0.tar.gz #下载OpenSSL源码包
    wget https://ftp.pcre.org/pub/pcre/pcre-8.39.tar.gz #下载pcre源码包
    wget http://www.zlib.net/zlib-1.2.11.tar.gz #下载zlib包源码、
     

    对压缩包进行解压并安装Nginx

    cd /usr/source
     
    tar -zxvf 包名  #解压各个包源码

我这里采用的Nginx版本为nginx-1.9.9  因此我们进入的 cd /usr/source/nginx-1.9.9 进入文件夹后进行./configure操作

    ./configure --prefix=/usr/local/nginx \ #nginx安装路径
            --with-pcre=../pcre-8.39 \ #pcre文件路径
            --with-openssl=../openssl-1.1.0 \ #openssl文件路径
            --with-zlib=../zlib-1.2.11 \ #zlib文件路径
            --with-http_v2_module \
            --with-http_flv_module \
            --with-http_mp4_module \
            --add-module=../nginx-rtmp-module/ #nginx-rtmp-module模块
     
    根据自己源码包的版本填写相应的路径以及文件夹名!!!

./configure完成后就可以进行安装了

为了确保依赖的gcc和c++存在我们可以先执行安装gcc跟c++

    yum -y install gcc #确保依赖的gcc安装
    yum -y install gcc-c++ #确保依赖的c++已经安装

make && make install

安装完成后需要把服务器的80端口打开 直接输入地址访问 查看Nginx是否安装成功!

当看见这个界面时说明Nginx安装成功了

    rtmp相关配置

    新建hls_path文件夹
    mkdir -p /usr/share/nginx/html/hls #该路径可以自定义 需要与Nginx内的rtmp配置的hls_path路径一致

 修改Nginx配置文件

vi /usr/local/nginx/conf/nginx.conf  

 加入以下内容rtmp模块:(rtmp{}的内容和http{}为同级)

    rtmp  {
        server {    
            listen 1935;  #监听的端口  
            chunk_size 4000;      
            application hls {  #rtmp推流请求路径  
                live on;    
                hls on;    
                hls_path /usr/share/nginx/html/hls;    
                hls_fragment 5s;    
            }    
        }
    }

修改http中的server模块可以根据自己的需求进行修改{location部分}

    server {
            listen       80;
            server_name  localhost;
     
            location / {  
             add_header Cache-Control no-cache;
             add_header 'Access-Control-Allow-Origin' '*' always;
             add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
             add_header 'Access-Control-Allow-Headers' 'Range';
             root   /usr/share/nginx/html;  
             index  index.html index.htm;  
            } #主要修改这一部分代码
     
            location = /50x.html {
                root   html;
            }
        }

修改完毕重启Nginx

/usr/local/nginx/sbin/nginx -s reload

 

 

接下来是推流了

在设置->串流 中填写信息:URL为 rtmp://xxx:1935/hls,xxx为你的服务器的IP地址,hls是用来存放流媒体的。

秘钥可以随便填写一个,用来播放的时候识别播放哪个流媒体的,例如填写mystream。

填写完毕后,点击开始串流,就说明我们的流媒体服务器搭建成功了。

打开/usr/share/nginx/html/hls,里面出现mystream.m3u8说明推流正常接下来我们就可以拉流播放了

 

拉流播放我们可以使用H5的vedio标签就可以实现播放

也可以访问http://xxx:81/hls/mystream.m3u8来观看直播

当你在浏览器输入你的播放地址时候你会发现竟然是把mystream.m3u8下载下来!

因为pc不支持m3u8,所以需要使用video.js   地址 https://github.com/videojs/video.js

新建html页面 代码如下

   
   
   
            id="my-player"
        class="video-js"
        controls
        preload="auto"
        poster="//vjs.zencdn.net/v/oceans.png"
        data-setup='{}'>
                  src="http://ip地址:端口(默认80)/hls/mystream.m3u8"(你的流秘钥)
         type="application/x-mpegURL">
     


        To view this video please enable JavaScript, and consider upgrading to a
        web browser that
       
          supports HTML5 video
       

     


   
   

保存后放到nginx配置的root目录下即可成功访问并拉流播放了。

直播存在一定的延迟 这是因为.m3u8文件,这个文件内容是将一个个ts文件串联起来的,这就达到了一个播放的效果,所以看起来会有很大的延迟。

延迟解决方案 :可以设置切片生成的大小以及访问的速度,但是这样大大增加了服务器的压力。

当然,我们也可以用rtmp拉流工具(VLC播放器)来观看直播,延迟会缩短,拉流地址与推流地址一致。

特别提示:需要外部访问的端口我们都需要打开 请根据自己的需要将相应的端口打开即可!

rtmp的参数可以参考:https://github.com/arut/nginx-rtmp-module/wiki
————————————————
版权声明:本文为CSDN博主「是你静香不够骚」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011247322/article/details/81410390

你可能感兴趣的:(开发笔记)