SRS视频流服务器搭建

环境介绍

  这里仅支持了RTMP的推流协议,这也是SRS默认支持的协议,延迟和性能表现都比较好。本教程搭建所用的环境如下所示:
  操作系统:Ubuntu 20.04.4 LTS(虚拟机安装)
  SRS版本:3.0
  推流软件:OBS
  拉流软件:VLC播放器

准备工作

Ubuntu服务器安装

  按照常规的服务器安装方式进行安装即可,这里建议网络使用桥接模式,方便后期测试。服务器需要安装Git,需要安装build-essential包用来编译SRS源码。
  虚拟机安装的Ubuntu默认防火墙是关闭的,但是如果使用的云主机,需要开放对应的端口,SRS服务的默认端口号是1935

OBS安装

  正常安装OBS即可。

VLC播放器安装

  在VLC官网下载安装播放器。

编译部署过程

  部署过程参考SRS官方说明——RTMP部署实例

第一步:获取SRS源码

  使用git工具克隆到本地,目录可以自定义。建议使用稳定版本,可以去Gitee上的镜像仓库下载,选择相应的版本仓库地址,这里选择使用3.0版本。

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

第二步:编译SRS

  进入srs/trunk文件夹,编译SRS。

cd srs/trunk

  使用命令编译SRS。

./configure && make

第三步:编写SRS配置文件

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

# conf/rtmp.conf
listen              1935;
max_connections     1000;
vhost __defaultVhost__ {
}

第四步:启动SRS

  可以指定不同的配置文件来实现不同的应用场景,比如realtime.conf为实时场景可以实现更地的延迟。可以参考官方说明——RTMP分发

./objs/srs -c conf/rtmp.conf

推流与观看

推流

推流准备

  因为这里使用的虚拟机来配置的SRS服务。虚拟机选用了桥接模式,所以和当前的物理机在同一网段,可以直接使用私有ip来访问。事先请使用ping命令来测试推流的机器和提供SRS服务的服务器机器能够互通,且保证放行了SRS服务的端口。

OBS推流设置

  可以使用OBS作为推流软件,在设置中设置推流服务为自定义,参数设置如下。

服务器:rtmp://ip:1935/live
串流密钥:livestream

观看

  可以使用VLC播放器进行观看,使用播放器中的打开网络串流,输入地址即可播放,地址如下:

rtmp://ip:1935/live/livestream

  SRS官方wiki中提到VLC播放器会导致延迟增大,实际SRS的延迟1-3s,实时模式下延迟最低可以达到0.8秒,所以根据自己的使用情况进行选择。

效果演示

  以下会加载一个动图演示效果,其中左侧为OBS推流软件;右上为虚拟机中的SRS服务,启动后会自动在控制台打印日志;左下为VLC播放器,播放的推流画面,其中拖动VLC窗口晃动,会在不到一秒的时间内反应在VLC的画面中。

使用Docker搭建

安装Docker

  Docker的安装与使用戳这里

使用Docker启动SRS服务

  根据SRS官方提供的镜像和方法,使用以下命令启动SRS服务的Docker容器:

docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 \
    registry.cn-hangzhou.aliyuncs.com/ossrs/srs:4 ./objs/srs -c conf/realtime.conf

使用FFmpeg的Docker镜像推流到本机进行测试

  为了方便测试,可以使用OBS进行推流,或者使用FFmpeg的Docker镜像推流到本机进行测试,SRS官方也提供了一个基于ffmpeg的编码器用于推流测试。该容器能够循环推流一段视频,具体使用方法如下所示:

查看SRS容器的IP地址

  • 1.首先查看所有容器:
    docker container ls
  • 2.找到SRS容器的ID或者名字
  • 3.使用命令查看容器的详细信息
    docker container inspect <容器ID或者容器名称>

使用命令启动推流

  使用Docker命令启动推流容器,向SRS服务推流,参数包含了容器IP地址、端口号、服务名称和密钥。其中,默认端口号为1935。

docker run --rm -it registry.cn-hangzhou.aliyuncs.com/ossrs/srs:encoder ffmpeg -stream_loop -1 -re -i doc/source.flv \
  -c copy -f flv rtmp://容器IP:端口号/live/livestream

拉流测试

  使用拉流软件VLC或者Polplayer播放器进行拉流播放,对应的地址为:

rtmp://服务器IP/live/livestream

当珍惜每一片时光~