当前位置: 首页 > 文档资料 > SRS Wiki 中文文档 >

SRS-HTTP-FLV集群部署实例

优质
小牛编辑
134浏览
2023-12-01

SRS支持HTTP FLV直播流集群分发,详细参考HTTP FLV

SRS的HTTP FLV边缘只能使用单进程,如何做到多进程呢?可以使用HTTP反向代理,SRS提供了go-sharp,支持根据SRS边缘的负载均衡以及心跳检测。参考:go-sharp

本例子部署了三个SRS,侦听不同的端口(实际可以部署到不同的机器,侦听同一个端口),一个作为Origin源站,两个作为Edge边缘。推RTMP流到源站或者边缘后,可以通过任何Edge观看,和RTMP的效果一样,集群的延迟在0.8-3秒。

假设服务器的IP是:192.168.1.170

第一步,获取SRS。详细参考GIT获取代码

git clone https://github.com/ossrs/srs
cd srs/trunk

或者使用git更新已有代码:

git pull

第二步,编译SRS。详细参考Build

./configure && make

第三步,编写SRS源站配置文件。详细参考HTTP FLV

将以下内容保存为文件,譬如conf/http.flv.live.conf,服务器启动时指定该配置文件(srs的conf文件夹有该文件)。

# conf/http.flv.live.conf
listen              1935;
max_connections     1000;
http_server {
    enabled         on;
    listen          8080;
    dir             ./objs/nginx/html;
}
vhost __defaultVhost__ {
    http_remux {
        enabled     on;
        mount       [vhost]/[app]/[stream].flv;
        hstrs       on;
    }
}

第四步,编写SRS边缘配置文件。详细参考HTTP FLV

将以下内容保存为文件,譬如conf/http.flv.live.edge1.confconf/http.flv.live.edge2.conf,服务器启动时指定该配置文件(srs的conf文件夹有该文件)。

# conf/http.flv.live.edge1.conf
listen              19351;
max_connections     1000;
pid                 objs/srs.flv.19351.pid;
srs_log_file        objs/srs.flv.19351.log;
http_server {
    enabled         on;
    listen          8081;
    dir             ./objs/nginx/html;
}
vhost __defaultVhost__ {
    mode remote;
    origin 127.0.0.1;
    http_remux {
        enabled     on;
        mount       [vhost]/[app]/[stream].flv;
        hstrs       on;
    }
}

第五步,启动SRS。详细参考HTTP FLV

./objs/srs -c conf/http.flv.live.conf &
./objs/srs -c conf/http.flv.live.edge1.conf &
./objs/srs -c conf/http.flv.live.edg2.conf &

第六步,启动推流编码器。详细参考HTTP FLV

使用FFMPEG命令推流:

    for((;;)); do \
        ./objs/ffmpeg/bin/ffmpeg -re -i ./doc/source.200kbps.768x320.flv \
        -vcodec copy -acodec copy \
        -f flv -y rtmp://192.168.1.170/live/livestream; \
        sleep 1; \
    done

或使用支持FMLE推流:

FMS URL: rtmp://192.168.1.170/live
Stream: livestream

源站,生成的流地址为:

  • RTMP流地址为:rtmp://192.168.1.170/live/livestream
  • HTTP FLV: http://192.168.1.170:8080/live/livestream.flv

边缘1,生成的流地址为:

  • RTMP流地址为:rtmp://192.168.1.170:19351/live/livestream
  • HTTP FLV: http://192.168.1.170:8081/live/livestream.flv

边缘2,生成的流地址为:

  • RTMP流地址为:rtmp://192.168.1.170:19352/live/livestream
  • HTTP FLV: http://192.168.1.170:8082/live/livestream.flv

第七步,观看RTMP流。详细参考HTTP FLV

源站RTMP流地址为:rtmp://192.168.1.170/live/livestream,可以使用VLC观看,或者使用在线SRS播放器播放:srs-player

边缘1的RTMP流地址为:rtmp://192.168.1.170:19351/live/livestream,可以使用VLC观看,或者使用在线SRS播放器播放:srs-player-19351

边缘2的RTMP流地址为:rtmp://192.168.1.170:19352/live/livestream,可以使用VLC观看,或者使用在线SRS播放器播放:srs-player-19352

备注:请将所有实例的IP地址192.168.1.170都换成部署的服务器IP地址。

第八步,观看HTTP流。详细参考HTTP FLV

源站HTTP FLV流地址为: http://192.168.1.170:8080/live/livestream.flv,可以使用VLC观看,或者使用在线SRS播放器播放:jwplayer-flv

边缘1的HTTP FLV流地址为: http://192.168.1.170:8081/live/livestream.flv,可以使用VLC观看,或者使用在线SRS播放器播放:jwplayer-flv-8081

边缘2的HTTP FLV流地址为: http://192.168.1.170:8082/live/livestream.flv,可以使用VLC观看,或者使用在线SRS播放器播放:jwplayer-flv-8081

备注:请将所有实例的IP地址192.168.1.170都换成部署的服务器IP地址。