由于产品在内网中部署,采用Nginx 进行rtmp 进行转发。

环境布置

因为内网有docker,则找到一个star很高的容器 nginx-rtmp(docker) (内网部署请看docker 镜像的导出和导入)

docker run -d -p 1935:1935 -p 8080:8080 jasonrivers/nginx-rtmp

注意:
1. 1935端口 :作为RTMP的推流和拉流端口。
2. 8080端口: 作为nginx相关http

  • 此镜像配置内容为/opt/nginx/conf/nginx.conf 的默认配置
worker_processes 1;

events {
    worker_connections 1024;
}
http {
    include             mime.types;
    default_type        application/octet-stream;
    sendfile            on;
    keepalive_timeout   65;

    server {
        listen          8080;
        server_name     localhost;

        location /hls {
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2ts ts;
            }
            root /tmp;
            add_header  Cache-Control no-cache;
            add_header  Access-Control-Allow-Origin *;
        }

        location /on_publish {
            return  201;
        }
        # 推流的监控台
        location /stat {
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }
        location /stat.xsl {
            alias /opt/nginx/conf/stat.xsl;
        }
        location /control {
            rtmp_control all;
        }

        error_page  500 502 503 504 /50x.html;
        location = /50x.html {
            root html;
        }
    }
}

rtmp {
    server {
        listen 1935;
        chunk_size 4096;
        # RTMP 推流
        application live {
            live on;
            record off;
            on_publish http://localhost:8080/on_publish;
            hls on;
            hls_path /tmp/hls;
            hls_fragment    1;
            hls_playlist_length     20;
        }
        application testing {
            live on;
            record off;
            on_publish http://localhost:8080/on_publish;
        }
    }
}

推荐的几种配置

点播模型

rtmp {

    server {

        listen 1935;  #//服务端口 

    chunk_size 4096;   #//数据传输块的大小

    application video {
        play /usr/local/data/video; #//视频文件存放位置,访问方式rtmp://localhost:1935/video
        }
    }
}

直播回放


rtmp {
    server {
        listen 1935;
        chunk_size 4096;

        application video {
            play /usr/local/data/video;
        }

        application live {

        live on;#直播模式

        hls on; #这个参数把直播服务器改造成实时回放服务器。

        wait_key on; #对视频切片进行保护,这样就不会产生马赛克了。

        hls_path /usr/local/data/hls; #切片视频文件存放位置。

        hls_fragment 10s;     #每个视频切片的时长。

        hls_playlist_length 60s;  #总共可以回看的事件,这里设置的是1分钟。

        hls_continuous on; #连续模式。

        hls_cleanup on;    #对多余的切片进行删除。

        hls_nested on;     #嵌套模式。
        }
    }

测试

OBS推流

OBS 作为开源推流客户端, 可以使用其进行推流操作

  • OBS 中 settings–> 进行填写你本地的推流地址(如图2.1)。
    OBS配置

    图2.1

  • 打开http://localhost:32779/stat(根据你实际的IP 和 端口号) 如图2.2 。红框中我们可以看到已经在TEST 推流了。
    OBS推流控制台显示

    图2.2

拉取

拉取方式 为: http://localhost:1935/live/TEST进行拉取 TEST的推流。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐