srs的安装部署、集群、以及降低延迟的一些方法

srs
SRS简单安装
环境 centos7.4

首先:安装工具 git  make  
        yum  install -y  git   make 
        
 安装之后 ,下载官网镜像,git clone https://github.com/ossrs/srs
 
        #cd srs/trunk                  到此目录
        #./configure && make     编译安装
        #./objs/srs -c conf/srs.conf    启动srs进程
        #pkill  srs     关闭进程

降低延迟的一些简单方法

将以下内容保存为文件,譬如conf/realtime.conf,服务器启动时指定该配置文件(srs的conf文件夹有该文件)。
#conf/realtime.conf
listen 1935;
max_connections 1000;
vhost defaultVhost {
gop_cache off;
queue_length 10;
min_latency on;
mr {
enabled off;
}
mw_latency 100;
tcp_nodelay on;
}
第四步,启动SRS。详细参考LowLatency
./objs/srs -c conf/realtime.conf第五步,启动推流编码器。详细参考LowLatency
使用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

集群的两种方式
一:多机器集群分布
源:192.168.0.221 , 192.168.0.222

边缘:192.168.0.223 ,192.168.0.224

源 配置文件conf/srs.conf中:
vhost defaultVhost {
gop_cache off; //off低延时,on立即播放延时高
queue_length 10; //队列长度
}

边缘 配置文件conf/srs.conf中vhost设置如下:
vhost defaultVhost {
mode remote; //延伸模式
origin 192.168.1.41:1935 192.168.1.42:1935; //源地址端口 两台实现高可用
gop_cache off;
queue_length 10;
}
二、效果验证
两台源down掉其中一台
前提环境:
(1) 推流到0.224
(2) 21,23,24均可正常获取视频流

操作1:在1.41上pkill srs
操作后环境1:
卡屏几秒钟后22、23、24均获取到视频流
结论1:srs实现高可用,即断掉1.41源服务器后视频流会自动转到1.42源服务器;
结论2:减小网速影响、服务器性能配置影响后,高可用延迟在可接受范围内

操作2:在1.41上pkill srs并且在1.43 iptables上禁止1.44传数据
操作后环境2: 卡屏几秒钟后21、23、24均获取到视频流
结论2:边缘之间不传送视频流,边缘从源获取视频流

操作 3:在1.41、1.42上pkill srs
操作后环境3: 4台均无视频
结论3: 1.44尽管自己获取视频流,但是离了源也无法播放,所以边缘依赖源而存在

操作4:在1.41上pkill srs并且在1.44 iptables上禁止1.42传数据
操作后环境4: 1.42、1.43、1.44均无法获取到视频流
结论 4: 源和边缘之间通过tcp链接,所以断一方相当于双向断开,1.42未获取到视频流也就无法传送给1.43了,余下所证同结论3
总结:remote模式下,边缘完全依赖于源,边缘无法独立,只有当源正常且可以和边缘互通情况下可正常使用。
操作5:推流到1.44后查看1.44的连接为推流端ip———>1.44——>1.42
1.41的连接为:1.44——>1.42
1.43无连接
当客户端播放1.43视频流后1.43的连接为:1.42——>1.43

边缘服务器不会主动连接视频流,当客户端播放某个边缘服务器上的视频流是它才会主动到源服务器寻找视频流来播放

二:单机器,多进程集群
将以下内容保存为文件,譬如conf/origin.cluster.serverA.conf,服务器启动时指定该配置文件(srs的conf文件夹有该文件)

conf/origin.cluster.serverA.conf

listen 19350;
max_connections 1000;
daemon off;
srs_log_tank console;
pid ./objs/origin.cluster.serverA.pid;
http_api {
enabled on;
listen 9090;
}
vhost defaultVhost {
cluster {
mode local;
origin_cluster on;
coworkers 127.0.0.1:9091;
}
}
将以下内容保存为文件,譬如conf/origin.cluster.serverB.conf,服务器启动时指定该配置文件(srs的conf文件夹有该文件)。

conf/origin.cluster.serverB.conf

listen 19351;
max_connections 1000;
daemon off;
srs_log_tank console;
pid ./objs/origin.cluster.serverB.pid;
http_api {
enabled on;
listen 9091;
}
vhost defaultVhost {
cluster {
mode local;
origin_cluster on;
coworkers 127.0.0.1:9090;
}
}

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

conf/origin.cluster.edge.conf

listen 1935;
max_connections 1000;
pid objs/edge.pid;
daemon off;
srs_log_tank console;
vhost defaultVhost {
cluster {
mode remote;
origin 127.0.0.1:19351 127.0.0.1:19350;
}
}

启动srs :
./objs/srs -c conf/origin.cluster.serverA.conf &
./objs/srs -c conf/origin.cluster.serverB.conf &
./objs/srs -c conf/origin.cluster.edge.conf &

for((;;)); do  ./objs/ffmpeg/bin/ffmpeg -re -i ./doc/source.200kbps.768x320.flv  -vcodec copy -acodec copy 

-f flv -y rtmp://192.1680.222:19350/live/livestream; sleep 1; done

你可能感兴趣的:(srs的安装部署、集群、以及降低延迟的一些方法)