SRS 流媒体服务器部署及设计思路和一些想法

发布时间 2023-07-25 18:40:21作者: Rolay

1、参考地址

SRS github地址:https://github.com/ossrs/srs
自带的信令github地址:https://github.com/ossrs/signaling#usage
中文文档:https://ossrs.net/lts/zh-cn/docs/v4/doc/introduction

2、环境部署

我是在centos上使用的源码编译模式,官方还提供了docker模式的,看文档中有介绍。

2.1 下载源代码

git clone  https://gitee.com/ossrs/srs.git

2.2 下载后手动编译

cd srs/trunk
./configure
make

这里需要说明一下,在手动编译过程中,可能会提示报错,看报错日志安装对应的依赖环境即可。

2.3 修改配置文件,我这里要测试webrct的功能,就在conf目录下找到srs.conf,编辑文件,把如图位置改为自己服务器的ip地址。

 官方提供了动态获取ip地址的方式,需要的话可以看文档。

2.4 启动服务,需要在trunk目录下执行

./objs/srs -c conf/srs.conf #使用srs配置文件启动

 ./etc/init.d/srs status #查看状态

 ./etc/init.d/srs stop #停止

启动后有如下输出:

 

2.5 检查启动状态,我这里直接关闭了服务器的防火墙,否则需要开放8080端口,如果需要改端口改配置文件即可。

浏览器输入:http://192.168.101.139:8080 访问控制台,如果能访问到则说明启动成功了。

 2.6 配置浏览器https支持,由于webrtc需要https,本地测试配置证书又很麻烦,需要修改下浏览器配置。

在谷歌浏览器地址栏输入:chrome://flags/#unsafely-treat-insecure-origin-as-secure

 启用功能,输入框中输入你对应的地址,多个用英文逗号隔开。在这里配置后。浏览器会在访问这个地址的时候,会以https的方式去访问http网站。

2.7 推拉流测试

 

 

浏览器测试后已经能正常的推拉流了

2.8 关于多人通话,多人通话需要用到信令和房间等概念,官方提供了一个信令服务器,是用go语言开发的,如果要使用,需要提前安装好go的环境。

在trunk目录下执行命令:

cd /3rdparty/signaling && make && ./objs/signaling

安装信令并启动服务。

访问地址:http://192.168.101.139:1989/demos/room.html?autostart=true&room=32f9e6c

就可以实现多人视频通话了。

3..0 关于多人视频通话的一些想法

使用上面的多人视频通话测试过后发现,其实相当于每个人都有一个对应的视频流,这样确实能实现通话。这就有个问题,想象有无限个客户端来通话,那每个客户端都要持有一个除自己以外的其他所有人的音视频流,并且要播放出来,设备会不会有性能问题?关于这个问题,其实就是Room to Live模式,官方给出的解决方案是先通过SRS把webrtc转成rtmp,再用ffmpeg把多个rtmp合并成一个rtmp,且不说中间经历过转换加合流,是否会增加延时,这样视频通话的及时性就得不到保证。而且我之前使用nginx+rtmp+ffmpeg

做过多音视频流的合并测试,效果不是很理想,音频合流的延迟达到了5s。当时测试我使用的虚拟服务器可能配置太差了。不知道这种方案是否在生产环境可行。希望有知道的大佬可以告知一下。