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

一、背景

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

二. 运行环境

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

2.1 docker容器

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

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 exec -it srs bash

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


image

在上图中从光标位置的左侧可以看到已经显示了root账户名称,说明已经进入容器成功;

2.2 国内加速源

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

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 更新软件源列表

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

apt update

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


image

从上图中可以看到已经从阿里云中更新了软件源信息,更新速度也非常快,到此我们已经完成运行环境的基础准备。

三、服务搭建

在搭建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

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

四、服务验证

我们可以使用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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容