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返回结果如下图所示
在上图中中可以看到已经有一个容器运行了,接着我们需要进入容器安装nginx和rtmp模块,进入容器命令如下所示
docker exec -it srs bash
命令执行完成之后,返回信息如下图所示
在上图中从光标位置的左侧可以看到已经显示了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
命令执行之后,返回的信息如下图所示
从上图中可以看到已经执行成功,已经使用阿里云的软件源替代了默认的软件源;
2.3 更新软件源列表
接下来我们更新一下本地的软件源信息,执行命令如下所示
apt update
命令执行之后,返回的信息如下图所示
从上图中可以看到已经从阿里云中更新了软件源信息,更新速度也非常快,到此我们已经完成运行环境的基础准备。
三、服务搭建
在搭建SRS服务过程中,需要先解决依赖,然后安装SRS服务,安装完成之后需要配置服务
3.1 安装依赖
因为我们采用源码编译,在编译过程中会依赖一些其他软件,所以我们需要提前将这些软件编译好,安装依赖我们直接采用apt安装,如下命令所示
apt install -y git gcc g++ unzip make python
命令执行后,返回的信息如下图所示
在上图中我们可以看到上面的依赖已经安装完成,接着我们通过Git下载最新的srs源码
3.2 安装SRS
srs官方把源码托管在GitHub中,国内访问GitHub相对较慢,这里我通过码云复制了一个出来,下载srs执行命令如下所示
git clone https://gitee.com/songboy/srs.git && ls srs
命令执行后,返回的信息如下图所示
在上图中我们可以看到源码已经克隆完成,并展示了srs项目的目录结构,在项目中有一个trunk
的文件夹,源代码都在这个里面,我们通过cd命令进去并查看目录,执行命令如下所示
cd srs/trunk/ && ls
命令执行后,返回的信息如下图所示
在上图中我们可以看到configure
文件,这个文件是为了让一个程序能够在各种不同类型的机器上运行而设计的,在使用make编译源代码之前,configure会根据自己所依赖的库而在目标机器上进行匹配,我们执行如下命令便可以编译
./configure && make
命令执行完成后,返回的信息如下图所示
在上图中我们可以看到提示编译已经完成,并给出了一个启动命令的提示
3.3 启动服务
在启动命令中有一个配置文件,我们可以通过cat命令查看一下配置文件里面的具体内容,执行命令如下所示
cat conf/srs.conf
命令执行后,返回的信息如下图所示
在上图中我们可以看到监听的端口,以及日志文件存放位置等信息,这里我们就是要默认值即可,执行启动命令如下所示
./objs/srs -c conf/srs.conf
命令执行后,返回的信息如下图所示
在上图中我们可以看到日志文件的输出信息,此时程序以及在后台启动了。
四、服务验证
我们可以使用OBS进行一个推流测试;docker运行的容器就在我本地,因此这里我使用的推流地址如下
rtmp://127.0.0.1/live/tangqingsong
4.1 推流测试
启动OBS,然后打开设置,找到推流项;服务选择自定义,然后将上面的地址填写进去,如下图所示
填写完推流地址之后,我们点击确定按钮,然后回到OBS的主界面,点击开始推流按钮,就会开始向SRS推流,如下图所示
在上图中我们可以看到已经在推流当中了,下方显示占用CPU资源很高
4.2 拉流测试
接着我们再使用VLC播放器进行拉流测试,拉流地址和推流地址是一样的,拉流效果如下所示
在上图中我们可以看到VLC已经播放成功
作者:汤青松
日期:2019-12-13
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
学会这11个主要元知识概念,妈妈再也不用担心我的代码编写啦!
在小芯认识的程序员之中,大部分人都更注重实操实践,对于知识点的学习没有那么在意,虽然那些基础知识常常在编码中发挥不可取代的作用,但还是难以逃脱被人们看轻或忽视的命运。 当然现在也出了很多知识学习,指南指导类的文章或者课程,成为大家“投机取巧”、短时间掌握大量核心知识的“捷径”。 并不是说这种“捷径”不好。 在大多数情况下,有很多指南都是可以参考的,它们能够指导读者学习那些最热门的语言以及最热门的知识,从而使读者成为行业的佼佼者。 尽管这些指南可能有用,但它们仅引导读者获得表面价值。这些指南提供了浅层次的学习路线,如果想要往更深层次发展,还是需要自己去慢慢实践和探索。 因此,小芯今天帮大家整理了能“获得成为一个真正有效的开发人员所需的深度知识“。 但是这些生僻的编程“元”知识,仍需要读者自己去主动潜心钻研。 编程元知识是计算机科学专业毕业生必学的东西,而自学者经常会漏掉这些知识点。编程元知识是查看和编写代码的基础。 图片由Aphinya Dechalert拍摄-这些都是“元” 本文提供一份清单式的指南,好让读者在这些新鲜好奇的知识行囊里进行浏览和挑选。 综合指南(绝大部分与语言无关) 全...
- 下一篇
第三口docker的感觉——docker compose
我们为什么需要docker compose呢? 现在大行其道的微服务架构,是由多个service组成的,在web应用中数据库也是必不可少的,那么这些组件就成了我一个项目的标配,那么我们如果把这一组映射到docker世界里去呢?docker-compose就可以作为这一组的体现。总结起来docker compose可以给我们带来的好处是: 避免了我们手动创建多个 dockerfile,多个image,多个容器。减少了我们的工作量。 启动停止删除可以被一次处理。 什么是docker compose呢? 其实就是一个docker的批处理工具。通过yml文件定义多容器的docker应用。 通过一条命令可以通过yml定义创建启动管理同属于一个"group"的容器。 Docker-compose.yml: Services Networks Volumes Services: 一个Services就相当于一个container,这个container可以从docker hub获取或者是dockerfile进行构建 我们在service中可以指定network和volume。 我们之前是这样启动do...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS8编译安装MySQL8.0.19
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题