SRS

启动命令

docker pull ossrs/srs:5
docker run --name srs -d \
--restart always \
--net backend \
--net-alias srs \
-v ~/srs/live.conf:/live.conf \
    --env CANDIDATE=*your ipv4 address* -p 8000:8000 -p 8000:8000/udp \
    -p 10080:10080/udp \
    ossrs/srs:5 ./objs/srs -c /live.conf

反代

我使用 Caddy 反代。此 Caddyfile 对各路径设置正确的后端地址;对提供 flv、HLS 等播放的域名,屏蔽几个敏感路径;对管理域名设置认证。

domain.for.live.flv.hls.etc.com {
    respond /console/* 403
    respond /rtc/v1/whip* 403
    reverse_proxy /rtc/* srs:1985
    reverse_proxy * srs:8080 {
    }
    header * {
        ?Access-Control-Allow-Origin *
        Cache-Control no-cache
    }
}
domain.for.management.com {
    reverse_proxy /api/* srs:1985
#    reverse_proxy /rtc/v1/whip* srs:1990
    reverse_proxy /rtc/* srs:1985
    reverse_proxy * srs:8080
    basicauth * bcrypt {
        *replace with your user name* *replace with your password*
    }
}

配置

live.conf,放于 ~/srs/live.con

listen              1935;
max_connections     100;
srs_log_tank        console;
daemon              off;
http_api {
    enabled         on;
    listen          1985;
}
http_server {
    enabled         on;
    listen          8080;
    dir             ./objs/nginx/html;
}
rtc_server {
    enabled on;
    listen 8000;
    candidate $CANDIDATE;
    ip_family all;
    tcp {
        enabled on;
        listen 8000;
    }
    protocol all;
}
srt_server {
    enabled on;
    listen 10080;
    connect_timeout 4000;
    peerlatency 0;
    recvlatency 1;
    latency 1;
    tlpktdrop off;
    tsbpdmode off;
    passphrase *please replace with your own passphrase*;
    pbkeylen 32;
}
vhost __defaultVhost__ {
    tcp_nodelay on;
    min_latency on;
    hls {
        enabled         on;
        hls_fragment    5;
        hls_window      30;
        hls_wait_keyframe       on;
    }
    http_remux {
        enabled     on;
        mount       [vhost]/[app]/[stream].flv;
    }
    rtc {
        enabled     on;
        rtmp_to_rtc on;
        rtc_to_rtmp on;
        keep_bframe off;
    }
    srt {
        enabled     on;
        srt_to_rtmp on;
    }
    play {
        gop_cache       on;
        queue_length    85;
        mw_msgs 0;
        mw_latency 1;
    }

    publish {
        mr off;
    }
}