zoukankan      html  css  js  c++  java
  • Centos7 搭建Nginx+rtmp+hls直播推流服务器

    1 准备工具

    使用yum安装git

    [root~]# yum -y install git

    下载nginx-rtmp-module,官方github地址

    // 通过git clone 的方式下载到服务器上
    [root~]# git clone https://github.com/arut/nginx-rtmp-module.git

    yum 安装 openssl

    [root~]# yum -y install openssl openssl-devel

    2 安装Nginx服务器,官方网址

    下载Nginx解压,并添加rtmp和openssl支持

    如果需要nginx监控模块 下面倒数第二行后面添加 

    --with-http_stub_status_module 
    //这里我安装的是 nginx-1.10.3 版本
    [root~]# wget http://nginx.org/download/nginx-1.10.3.tar.gz 
    [root~]# tar -zxvf nginx-1.10.3.tar.gz 
    [root~]# cd nginx-1.10.3
    //添加rtmp和openssl支持
    [root~]# ./configure --add-module=/替换为自己的安装路径(path/to)/nginx-rtmp-module --with-http_ssl_module
    [root~]# make && make install

    如果已经安装过Nginx,只需要找到Nginx源码目录添加rtmp的支持即可

    1.查看当前安装的Nginx版本
    [root~]# /usr/local/nginx/sbin/nginx -v
    查询结果:nginx version: nginx/1.10.3
    2.再使用find命令查找其位置
    [root~]# find / -name nginx-1.10.3
    查询结果:/root/nginx-1.10.3
    3.cd到查询到的源目录
    [root~]# cd  /root/nginx-1.10.3
    4.添加rtmp的支持(如果看到一个绿色的 configure 文件就说明查找对了)
    [root~]# ./configure --add-module=/替换为自己的安装路径(path/to)/nginx-rtmp-module
    [root~]#  make && make install
    5.启动nignx
    [root~]# /usr/local/nginx/sbin/nginx 

    3 修改Nginx配置文件nginx.conf

    使用vi命令打开 nginx.conf,输入 i 进入编辑状态

    [root~]# vi /usr/local/nginx/conf/nginx.conf  
    # 在http节点同级加上rtmp配置:
    rtmp {
        server {
            listen 1935;
            chunk_size 2048;
    drop_idle_publisher 10s; #指定的时间内丢弃空闲的publisher application rtmplive { live on; record off; notify_method get;
    # 跳转的时候,默认以POST方式传输参数,修改成GET方式(权限验证url参数方式用) on_publish http://127.0.0.1/on_publish; # 推流权限验证地址(可选)

           

            #转推流
            push rtmp://****;

              }

         # HLS 配置(可选)
            application hls {
                live on;
                hls on;
                hls_path /tmp/hls; #需要手动创建路径
                hls_continuous on; #切片编号从上一次结束开始
            }
        }
    }
    
    #http配置 简单权限验证 HLS配置
    http {
    
        server {
    
            listen      8080;
            
            # 推流权限验证
            location /on_publish {
                default_type text/html;
                if ( $args ~ pass=1234 ) { # 如果url参数包括 pass=1234
                    return 200;
                }
                return 404;
            }
    
            # This URL provides RTMP statistics in XML
            location /stat {
                rtmp_stat all;
    
                # Use this stylesheet to view XML as web page
                # in browser
                rtmp_stat_stylesheet stat.xsl;
            }
    
            location /stat.xsl {
                # XML stylesheet to view RTMP stats.
                # Copy stat.xsl wherever you want
                # and put the full directory path here
                root /path/to/stat.xsl/;
            }
    
            # HLS(可选)
            location /hls {
                # Serve HLS fragments
                types {
                    application/vnd.apple.mpegurl m3u8;
                    video/mp2t ts;
                }
                root /tmp; #root path
                add_header Cache-Control no-cache;
            }
        }
    }

     nginx状态监控页面(需前面安装http_stub_status_module)

            # nginx状态监控页面
            location /status {
                # Turn on nginx stats
                stub_status on;
                # I do not need logs for stats
                access_log   off;
                # Security: Only allow access from 192.168.1.100 IP #
                #allow 192.168.1.100;
                # Send rest of the world to /dev/null #
                #deny all
            }

    重启nginx

    [root~]# nginx -s reload #方法一
    [root~]# systemctl restart nginx.service #方法二

    开机启动

    # vi /lib/systemd/system/nginx.service
    [Unit]
    Description=nginx 
    After=network.target 
       
    [Service] 
    Type=forking 
    ExecStart=/usr/local/nginx/sbin/nginx
    ExecReload=/usr/local/nginx/sbin/nginx reload
    ExecStop=/usr/local/nginx/sbin/nginx quit
    PrivateTmp=true 
       
    [Install] 
    WantedBy=multi-user.target
    # systemctl enable nginx.service
    systemctl start nginx.service    启动nginx
    systemctl stop nginx.service    结束nginx
    systemctl restart nginx.service    重启nginx

    4 推流

    使用obs推流

    url填写 rtmp://[服务器ip]:[端口]/[nginx配置中rtmp的application名称],如 rtmp://10.129.0.100:1935/hls

    如配置HLS,需填写串流码,名称随意,如 demo,这个名称在HLS方式拉流时会用到(笔者测试中发现,个别电脑推流填写串流码名称后,使用vlc不能直接播放rtmp,去掉串流码名称后可正常播放)

    如配置url验证,在url后面添加验证参数,如 rtmp://10.129.0.100:1935/hls?pass=1234,“?pass=1234”可以放在串码流中

    5 拉流

    使用vlc拉流

    填写网络URL 如 http://10.129.0.100:8080/hls/demo.m3u8

    注意m3u8的文件名与推流时填的串流码一致

    或者填写rtmp链接,如 rtmp://10.129.0.100:1935/hls

    附:

    nginx默认路径:/usr/local/nginx/html


    在Centos7上搭建Nginx+rtmp服务器

    centos7 搭建rtmp+hls直播流服务器及rtmp转hls直播流(nginx+nginx-rtmp-module-master+obs)

    基于Nginx搭建RTMP/HLS视频直播流媒体服务器

    搭建rtmp推流服务器

    nginx-rtmp-module(github)

    Setup Nginx-RTMP on CentOS 7

    nginx nginx-rtmp-module 基于rtmp协议实现公网推流拉流

    centos7安装nginx-rtmp

    Nginx RTMP配置文件种HLS部分

    【官方文档】Nginx模块Nginx-Rtmp-Module学习笔记(二)HLS 指令详解

    nginx-rtmp加入权限验证的简单方法

    nginx-rtmp加入权限验证的简单方法

    Nginx配置中的if判断

    「自己开发直播」实现nginx-rtmp-module多频道输入输出与权限控制

    在实战中使用nginx-rtmp遇到的TCP连接问题分析

    Nginx 服务器性能Bug和性能优化方案(真实经历)

  • 相关阅读:
    吸烟的女人有着一种让人心动的美
    怎么样的女人让男人不变心
    姐妹们!一起来做狐狸精!
    清华图书馆机器人
    大地实习程序
    《非2》里的两首诗
    GIS拓扑生成
    一点小发现
    directX下的三维坐标系
    Let's start from here
  • 原文地址:https://www.cnblogs.com/wintertone/p/13235802.html
Copyright © 2011-2022 走看看