一, 背景
搭建流媒体服务的方式一般会采用 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 已经播放成功
来源: http://www.bubuko.com/infodetail-3329967.html