• 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

  • 相关阅读:
    centos mongo数据库搭建
    闪屏页白屏或者显示旧图
    在Sqlserver下巧用行列转换日期的数据统计
    读 《.Net 之美》解析.Net Remoting (应用程序域)-- Part.1
    MVC的自定义动作过滤器(一)
    【算法】快排
    【编程范式】C语言1
    排序
    日志记录类
    邮箱发送类
  • 原文地址:https://www.cnblogs.com/dong1/p/10570453.html
Copyright © 2020-2023  润新知