zoukankan      html  css  js  c++  java
  • nginx-rtmp/http-flv

    1. Install nginx

    su
    mkdir /usr/local/nginx
    cd /usr/local/nginx
    apt-get install libssl-dev
    tar xvf nginx-http-flv-module-1.2.7.tar.gz
    tar xvf nginx-1.17.5.tar.gz
    cd nginx-1.17.5
    ./configure --with-http_ssl_module --add-module=../nginx-http-flv-module-1.2.7
    make && make install

    2. Edit  nginx.conf

    cp nginx-http-flv-module-1.2.7/test/nginx.conf /usr/local/nginx/conf/

    worker_processes  1;
    
    error_log  logs/error.log debug;
    
    events {
        worker_connections  1024;
    }
    
    rtmp {
        server {
            listen 1935;
    
            application myapp {
                live on;
    
                #record keyframes;
                #record_path /tmp;
                #record_max_size 128K;
                #record_interval 30s;
                #record_suffix .this.is.flv;
    
                #on_publish http://localhost:8080/publish;
                #on_play http://localhost:8080/play;
                #on_record_done http://localhost:8080/record_done;
            }
        }
    }
    
    http {
        server {
            listen      8002;
    
            location /live{
                flv_live on;
            }
    
            location /stat {
                rtmp_stat all;
                rtmp_stat_stylesheet stat.xsl;
            }
    
            location /stat.xsl {
                root /usr/local/nginx/nginx-http-flv-module-1.2.7/;
            }
    
            location /control {
                rtmp_control all;
            }
    
            #location /publish {
            #    return 201;
            #}
    
            #location /play {
            #    return 202;
            #}
    
            #location /record_done {
            #    return 203;
            #}
    
            location /rtmp-publisher {
                root /usr/local/nginx/nginx-http-flv-module-1.2.7/test;
            }
    
            location / {
                root /usr/local/nginx/nginx-http-flv-module-1.2.7/test/www;
            }
        }
    }

    Reference example:

    Example
    
    Assume that listen directive specified in http block is:
    
    http {
        ...
        server {
            listen 8080; #not default port 80
            ...
    
            location /live {
                flv_live on;
            }
        }
    }
    
    And listen directive specified in rtmp block is:
    
    rtmp {
        ...
        server {
            listen 1985; #not default port 1935
            ...
    
            application myapp {
                live on;
            }
        }
    }

    3. Startup nginx

    /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

    #ps -ef|grep nginx
    #kill -TERM 2132 or kill -INT 2132
    #pkill -9 nginx
    #./nginx -t
    #./nginx -s reload

    4. push rtmp stream

    ffmpeg -re -i source.200kbps.768x320.flv -c copy -f flv rtmp://127.0.0.1:1935/myapp/mystream

    5. player
    rtmp://localhost:1935/myapp/mystream

    http://localhost:8002/live?port=1935&app=myapp&stream=mystream

    6. Other optimized configuration

    worker_processes  10;
    events {
        worker_connections  10240;
    }
    rtmp_auto_push on;
    rtmp_auto_push_reconnect 1s;
    rtmp_socket_dir /tmp;
    rtmp{
        out_queue 4096;
        out_cork 8;
        max_streams 128;
        timeout 15s;
        drop_idle_publisher 15s;
        log_interval 5s;
        log_size 1m;
        server{
         listen 9000;
         server_name 127.0.0.1;
         application myapp{
             live on;
             gop_cache on;
          }
         application hls{
          live on;
          hls on;
          hls_path /usr/local/nginx/html/hls; 
        }
         application dash{
           live on;
           dash on;
           dash_path /usr/local/nginx/html/dash;
         }
        
        }
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        server {
            listen       8002;
        server_name  localhost;
            location / {
                root   html;
                index  index.html index.htm;
            }
        location /live{
            flv_live on;
            chunked_transfer_encoding  on;
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Credentials' 'true';
        }
        location /hls{
            types {
            application/vnd.apple.mpegurl m3u8;
            video/mp2t ts;
             }
             root /usr/local/nginx/html/hls;
             add_header 'Cache-Control' 'no-cache';
        }
         location /dash {
                root /usr/local/nginx/html/dash;
                add_header 'Cache-Control' 'no-cache';
            }
        
         location /stat {
                #configuration of push & pull status
                  rtmp_stat all;
                  rtmp_stat_stylesheet stat.xsl;
             }
        location /stat.xsl {
          root /usr/local/nginx/nginx-http-flv-module-1.2.7;
        }
    
         location /control {
                rtmp_control all; #configuration of control module of rtmp
            }    
            
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    
    }

    rtmp

    rtmp://example.com[:port]/myapp/mystream

    hls
    http://example.com[:port]/dir/streamname.m3u8

    dash
    http://example.com[:port]/dir/streamname.mpd

    7. Reference design:

    https://github.com/winshining/nginx-http-flv-module

    https://blog.csdn.net/caowenjing123/article/details/94623466

  • 相关阅读:
    VysorPro助手
    Play 2D games on Pixel running Android Nougat (N7.1.2) with Daydream View VR headset
    Play 2D games on Nexus 6P running Android N7.1.1 with Daydream View VR headset
    Native SBS for Android
    ADB和Fastboot最新版的谷歌官方下载链接
    How do I install Daydream on my phone?
    Daydream Controller手柄数据的解析
    蓝牙BLE传输性能及延迟分析
    VR(虚拟现实)开发资源汇总
    Android(Java)控制GPIO的方法及耗时分析
  • 原文地址:https://www.cnblogs.com/dong1/p/10570453.html
Copyright © 2011-2022 走看看