通过nginx扩展nginx-rtmp-module搭建简单流媒体服务-胡新春个人博客
  •  首页
  •  游戏/动漫
  •  日记/生活
  •  程序员式幽默
  •  闲言碎语
  •  博客大计事
  •  留言板
  • 
    通过nginx扩展nginx-rtmp-module搭建简单流媒体服务
     作者:胡新春  发布时间:2018-04-02 11:10:25  访客:485

    搭建的过程中出现过一些问题,环境其实就需要nginx就可以,然后就是在播放的问题,m3u8的格式,mac直接访问就支持,苹果系统原生H5支持m3u8,还有就是手机直接访问也支持!但是其他其他系统PC端不支持,尝试了好多都不行,最后终于找到了一个支持m3u8格式H5播放器(https://github.com/huangyaoxin/hLive).


    环境和工具

    centos 7.0

    我是在腾讯云服务器上安装的centos7.0进行的本次流媒体服务搭建测试。


    Nginx1.8.1

    这个是我之前装的版本,版本没什么大的影响

    我是源代码编译安装的,不建议用 apt-get install nginx


    nginx-rtmp-module

    github地址:https://github.com/arut/nginx-rtmp-module


    直播肯定用大名鼎鼎的OBS

    OBS地址: https://obsproject.com/


    观看目前只是用客户端观看

    使用的是VLC media player。

    地址:https://www.videolan.org/vlc/

    下载建议直接百度下载就行了,vlc官网些许慢,需要说明的是,在linux下直播和观看当然也没有任何的问题,而且上面提到的作者也介绍了如何在linux进行直播和观看直播。


    配置过程


    一、首先就是先下载nginx-rtmp-module


    官方github地址:https://github.com/arut/nginx-rtmp-module

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

    git问题:yum install git

    我是下载到根目录的,看情况来就好!如果该方法不好使,请百度nginx-rtmp-module模块编译安装。


    二、安装:nginx


    nginx的官方网站为:http://nginx.org/en/download.html

    wget http://nginx.org/download/nginx-1.8.1.tar.gz  
    tar -zxvf nginx-1.8.1.tar.gz  
    cd nginx-1.8.1  
    ./configure --prefix=/usr/local/nginx  --add-module=../nginx-rtmp-module  --with-http_ssl_module    
    make && make install

    问题1:编译C 问题(在nginx-1.8.1目录下)  yum install gcc gcc-c++

    问题2:在于已经安装好nginx,怎么重新配置第三方模块,找到一个写的很全面的博客!

     http://blog.csdn.net/ystyaoshengting/article/details/48436409如何安装nginx第三方模块--add-module(./configure --prefix=/你的安装目录  --add-module=/第三方模块目录 )

    问题3:make编译问题(在nginx-1.8.1目录下),

    安装时候可能会报错没有安装openssl,需要执行命令:(安装了依赖包就不会出现这个问题啦)

    yum -y install openssl openssl-devel


    三、修改nginx配置文件


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

    在文件里加入下面内容(加载在最后面就行,独立模块)

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

    还有就是这个路径,看你自己的实际情况的访问根目录来,我的是/usr/local/nginx/html/这个路径,然而/usr/local/nginx/html/hls肯定没有这个目录,所以需要建一个放流文件的目录hls,并且需要改权限可读可写的权限。

    修改http中的server模块:

    主要是改了一下端口号,改成了81;然后root目录 按实际情况改!

     server {  
            listen       81;  
            server_name  localhost;  
          
            #charset koi8-r;  
          
            #access_log  logs/host.access.log  main;        
            location / {  
                root   /usr/local/nginx/html;  
                index  index.html index.htm;  
            }  
          
            #error_page  404              /404.html;  
          
            # redirect server error pages to the static page /50x.html  
            #  
            error_page   500 502 503 504  /50x.html;  
            location = /50x.html {  
                root   html;  
        }

    然后启动nginx:

    /usr/local/nginx/sbin/nginx

    关于更多rtmp的参数可以参考:https://github.com/arut/nginx-rtmp-module/wiki


    四、然后就开始推流啦


    配好后就用推流软件啦,我用的是OBS,按照OBS操作就可以 啦!

    1522638074802285.png

    设置视屏来源,可以是摄像头捕捉或者屏幕捕捉



    1522638091353315.png

    设置串流服务器和地址


    设置->串流 中填写信息:URL为 rtmp://xxx:1935/hls,xxx为你的服务器的IP地址,hls是用来存放流媒体的与nginx中流媒体应用名相同。秘钥可以随便填写一个,用来播放的时候识别播放哪个流媒体的,例如填写test等。填写完毕后,点击开始串流,就说明我们的流媒体服务器搭建成功了。

     

    五、看直播


    测试时首先使用的lvc来进行拉流测试。


    3.png

    点击,媒体->打开网络串流 填写串流地址,和推流地址一样!


    如果是mac直接浏览器可以访问http://xxx:81/hls/test.m3u8来观看直播,其中xxx为你的服务器IP地址,手机端直接访问文件也可以看!然后其他的H5的vadio需要下载支持m3u8格式的播放啦,我是在https://github.com/huangyaoxin/hLive这下的,挺好用的!找了好多不行,这个可以!

     1522638592961007.png

     六、看直播肯定会很卡 

     如果降低延迟也不是没有方法,可以设置切片生成的大小以及访问的速度,但是这样大大增加了服务器的压力。当然,我们也可以用rtmp拉流工具(VLC等)来看该直播,延迟大概在2-5S左右,拉流地址与推流地址一致。



    本文参考:https://www.cnblogs.com/lipcblog/p/6824145.html

    点评一下

    
    程序:HXC博客v2.0 主题:HXC博客前端Funs主题    基于CodeIgniter框架构建
    博客平稳运行2年+