docker中使用源码方式搭建SRS流媒体服务

1、背景

搭建流媒体服务的方式通常会采用nginx+rtmp和srs服务两种,前者是nginx加上插件所用,然后者是专门为了为了流媒体而生,在这一节中咱们将从头搭建srs流媒体服务python

二. 运行环境

为了此服务后期部署到生产环境中,笔者采用docker方式来搭建此服务,docker目前属于基础性软件了,在本文中就再也不细述如何安装,你们能够去www.docker.com下载安装包安装便可;通常正式的生产环境中咱们一般使用Linux系统做为服务器,因此我本文中一样使用了Linux系统,不过我选择了我比较喜欢的Ubuntu系统来搭建,其余Linux系统搭建流程基本一致。nginx

2.1 docker容器

咱们首先须要运行一个Ubuntu的容器,在运行容器以前,咱们须要想好运行容器的一些参数,好比说咱们须要搭建rtmp服务,rtmp默认端口是1935,这个时候咱们就须要将此端口映射出去;再好比说安装nginx后须要进行验证Nginx是否安装完成,须要开放一个http端口,那么一样须要映射出去,但为了防止和宿主机的80端口产生冲突,这里咱们使用8081端口替代80端口;最后服务搭建完成了,还须要播放视频,所以须要将视频文件拷贝到容器中,这时候须要挂载一个目录将视频文件放到容器中去,所以docker容器运行命令以下所示git

docker run  --name srs -v /Users/song/files:/root/files -d -i  -p 1935:1935  ubuntu:18.04 && docker ps

命令很执行完成以后,docker返回结果以下图所示 image 在上图中中能够看到已经有一个容器运行了,接着咱们须要进入容器安装nginx和rtmp模块,进入容器命令以下所示docker

docker exec -it srs bash

命令执行完成以后,返回信息以下图所示 image 在上图中从光标位置的左侧能够看到已经显示了root帐户名称,说明已经进入容器成功;ubuntu

2.2 国内加速源

docker的Ubuntu镜像apt软件源默认使用官方域名,这个域名在国内访问很是慢,为了后续安装速度可以更快,咱们将apt的软件源更换成阿里云源的地址,执行命令以下所示bash

echo 'deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
' > /etc/apt/sources.list  && cat /etc/apt/sources.list

命令执行以后,返回的信息以下图所示 image 从上图中能够看到已经执行成功,已经使用阿里云的软件源替代了默认的软件源;服务器

2.3 更新软件源列表

接下来咱们更新一下本地的软件源信息,执行命令以下所示ionic

apt update

命令执行以后,返回的信息以下图所示 image测试

从上图中能够看到已经从阿里云中更新了软件源信息,更新速度也很是快,到此咱们已经完成运行环境的基础准备。阿里云

3、服务搭建

在搭建SRS服务过程当中,须要先解决依赖,而后安装SRS服务,安装完成以后须要配置服务

3.1 安装依赖

由于咱们采用源码编译,在编译过程当中会依赖一些其余软件,因此咱们须要提早将这些软件编译好,安装依赖咱们直接采用apt安装,以下命令所示

apt install -y git gcc g++ unzip make  python

命令执行后,返回的信息以下图所示

image

在上图中咱们能够看到上面的依赖已经安装完成,接着咱们经过Git下载最新的srs源码

3.2 安装SRS

srs官方把源码托管在GitHub中,国内访问GitHub相对较慢,这里我经过码云复制了一个出来,下载srs执行命令以下所示

git clone https://gitee.com/songboy/srs.git && ls srs

命令执行后,返回的信息以下图所示 image

在上图中咱们能够看到源码已经克隆完成,并展现了srs项目的目录结构,在项目中有一个trunk的文件夹,源代码都在这个里面,咱们经过cd命令进去并查看目录,执行命令以下所示

cd srs/trunk/ && ls

命令执行后,返回的信息以下图所示

image

在上图中咱们能够看到configure文件,这个文件是为了让一个程序可以在各类不一样类型的机器上运行而设计的,在使用make编译源代码以前,configure会根据本身所依赖的库而在目标机器上进行匹配,咱们执行以下命令即可以编译

./configure && make

命令执行完成后,返回的信息以下图所示

image

在上图中咱们能够看到提示编译已经完成,并给出了一个启动命令的提示

3.3 启动服务

在启动命令中有一个配置文件,咱们能够经过cat命令查看一下配置文件里面的具体内容,执行命令以下所示

cat conf/srs.conf

命令执行后,返回的信息以下图所示

image

在上图中咱们能够看到监听的端口,以及日志文件存放位置等信息,这里咱们就是要默认值便可,执行启动命令以下所示

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

命令执行后,返回的信息以下图所示

image

在上图中咱们能够看到日志文件的输出信息,此时程序以及在后台启动了。

4、服务验证

咱们可使用OBS进行一个推流测试;docker运行的容器就在我本地,所以这里我使用的推流地址以下

rtmp://127.0.0.1/live/tangqingsong

4.1 推流测试

启动OBS,而后打开设置,找到推流项;服务选择自定义,而后将上面的地址填写进去,以下图所示

image

填写完推流地址以后,咱们点击肯定按钮,而后回到OBS的主界面,点击开始推流按钮,就会开始向SRS推流,以下图所示

image

在上图中咱们能够看到已经在推流当中了,下方显示占用CPU资源很高

4.2 拉流测试

接着咱们再使用VLC播放器进行拉流测试,拉流地址和推流地址是同样的,拉流效果以下所示 image

在上图中咱们能够看到VLC已经播放成功


做者:汤青松

日期:2019-12-13

相关文章
相关标签/搜索