RTMP流分发方案
SRS(Simple Realtime Server)是一个简单、高效、稳定的流媒体服务器,支持RTMP、HLS、FLV等多种流媒体协议。在SRS中,流地址的转换主要涉及RTMP和RTC(WebRTC)流之间的互相转换,以及与其他流媒体协议的转换
SRS文档地址: https://ossrs.net/lts/zh-cn/docs/v5/doc/getting-started
SRS-Github地址: https://github.com/ossrs/srs
SRS-Gitee地址: https://gitee.com/ossrs/srs
基于SRS的Edge模式实现流分发:
- 下载SRS-CentOS7-x86_64-6.0-d5.zip(其他版本可以在仓库里下载发行版,也可下载源码自行编译):
wget https://gitee.com/ossrs/srs/releases/download/v6.0-d5/SRS-CentOS7-x86_64-6.0-d5.zip
- 解压后安装:
unzip SRS-CentOS7-x86_64-6.0-d5.zip
cd SRS-CentOS7-x86_64-6.0-d5
chmod +x ./INSTALL
./INSTALL
执行INSTALL命令时可能会提示需要: yum install -y redhat-lsb ; 执行对应安装命令后重新执行即可;
- 配置SRS:
cd /usr/local/srs
vi conf/edge2.conf
配置文件edge2.conf示例:
# the config for srs origin-edge cluster
# @see https://ossrs.net/lts/zh-cn/docs/v4/doc/edge
# @see full.conf for detail config.
listen 11935;
max_connections 1000;
pid objs/edge2.pid;
daemon off;
srs_log_tank console;
vhost __defaultVhost__ {
cluster {
mode remote;
origin 10.0.1.101:1935;
}
}
- 启动SRS(可以启动不同配置的多个服务,主要端口占用):
./objs/srs -c ./conf/edge2.conf
- 测试播放:
确认启动成功后,
在播放器(vlc)中输入播放地址(srs服务器IP:10.0.1.201): rtmp://10.0.1.201:11935/live/test01
如播放失败:
- 确保原始的流地址: rtmp://10.0.1.101:1935/live/test01 流正常,
在srs运行日志中观察是否有 SocketTimeout - 确认srs服务器防火墙端口: 11935 是否开放;
SRS(Simple Realtime Server)流媒体服务器支持多种集群模式,其中Forward模式和Edge模式是两种常见的集群部署方式。下面将分别介绍这两种模式的特点、应用场景及配置方式。
Forward模式
一、特点Forward模式主要用于将Master节点获得的直播流广播(转发)给所有的Slave节点。在这种模式下,Master节点是中心节点,负责接收推流并转发给Slave节点;Slave节点是边缘节点,接收来自Master节点的流。
Forward模式适合搭建小型集群,因为它会无差别地将流转发给所有Slave节点,可能导致带宽浪费,尤其是在某些Slave节点上无人观看时。
二、应用场景当需要实现简单的流分发或热备功能时,Forward模式是一个不错的选择。例如,当编码器由于带宽限制只能推送一路流到RTMP服务器时,可以使用SRS的Forward功能将流转发给其他RTMP备用服务器,实现主备容错集群。
三、配置方式Forward模式的配置主要涉及Master节点和Slave节点的配置文件设置。在Master节点的配置文件中,需要启用forward功能,并指定转发目的地(Slave节点的地址和端口)。在Slave节点的配置文件中,则需要设置监听端口和其他相关参数。
Edge模式
一、特点Edge模式主要解决几条流有大量播放请求的场景,例如一个流有上万人观看。在这种模式下,Edge节点作为边缘直播缓存服务器,能够缓存并分发来自源站(Origin)的流。
Edge模式相比Forward模式更加节省带宽,因为它只在有拉流请求时才从源站拉取数据,并且多个客户端连接到同一个Edge节点时,只有一路回源连接。
二、应用场景Edge模式适用于CDN/VDN等大规模流媒体分发场景,能够显著提高流媒体服务的并发处理能力和稳定性。同时,它也支持故障自动切换和容错处理,确保用户观看体验不受影响。
三、配置方式Edge模式的配置相对复杂,需要分别配置源站(Origin)和Edge节点。在源站的配置文件中,需要设置监听端口和其他基础参数。在Edge节点的配置文件中,则需要设置远程模式(remote mode)和源站地址(origin address),以便从源站拉取数据。此外,还需要根据实际需求配置Edge节点的缓存策略、并发连接数等参数。
综上所述,SRS的Forward模式和Edge模式各有特点和应用场景。在选择部署模式时,需要根据实际需求和场景进行综合考虑和选择。同时,也需要根据SRS的官方文档和社区资源进行相应的配置和调试工作。