玩转直播系列之从 0 到 1 构建简单直播系统(1)

玩转直播系列之从 0 11482776445325.html">到 1 构建简单直播系统(1)

一、前言

随着5G时代的来,音视频行业也可能迎来一个行业的春天,直播则是新视频行业一直以来的一个重要的产品形态,从最初的秀场直播,游戏直播,到今年由于疫情,目前比较火的在线教育直播,带货直播等,各类新的直播形式则是越来越多的展示在大众面前。

作为技术开发的我们,今天我们一起简单的了解一下,如何快速搭建一套最简单的直播系统,简单地了解一下主流直播的架构模型。

二、推拉流模型

首先我们先看一张完整的直播推拉流的模型图,我们可以很清楚地看到直播宏观上的架构模型图。

玩转直播系列之从 0 到 1 构建简单直播系统(1)

2.1 直播三个主要模块

推流模块

推流模块主要分为音视频数据的采集,如果是秀场类直播,可以做美颜滤镜相关功能,用来提升直播的画面品质和用户体验,最后通过编码压缩,降低音视频数据的体积,最后通过流媒体传输协议将数据按照固定格式传递到RTMP服务器,这样整个推流端的工作就完成了。

RTMP服务端模块

传统意义上的RTMP服务器其实可能就只有转码的功能,将推流端传递过来的数据,转成flv等网络格式的数据文件,方便播放端的观看,不过目前云商都提供了一整套的解决方案,例如清晰度转码,内容健康检查,直播封面的生成,数据统计,录制回放等功能,这也是在RTMP服务器的基础上,进行的业务封装,这样才能提供一整套的解决方案。

播放端模块

播放端的逻辑就相对比较简单,简而言之就是获取拉流地址,进行音视频的播放,不过在实际开发的过程中,播放端的业务工作量和技术优化点都是最多的,如上图所示的首屏秒开,解码优化,切换直播间等功能,都是需要花费大量的精力,根据业务不断地去演进优化的。

三、搭建步骤

本入门直播简单教程主要分为如下几个模块:

搭建直播服务器;

使用OBS进行推流;

直播流如何观看;

直播间消息的实现。

3.1 搭建直播服务器

直播服务器实时地将推流端上传的视频流进行解析和编解码,以用于支持rtmp、hls或httpflv等直播协议的观看端进行观看。

玩转直播系列之从 0 到 1 构建简单直播系统(1)

当前市面上有很多开源的直播服务器解决方案,如 livego、srs 和 nginx-rtmp ,亦或者是目前比较主流的云解决方案,目前阿里云,七牛云,腾讯云等都提供了标准的成熟的解决方案,本篇文章旨在快速地搭建一个简单的直播,所以我们可以采用livego这个开放源代码的方式去搭建推拉流服务器,livego 使用纯 go 语言编写,性能高且跨平台,安装和使用非常简单,支持常用的传输协议、文件格式和编码格式,或者安装上文所示,直接在云商开播直播服务。

安装 livego 主要有三种方式:1)直接下载二进制可运行文件;2)从Docker启动;3)从源码编译。

docker run -p 1935:1935 -p 7001:7001 -p 7002:7002 -p 8090:8090 -d gwuhaolin/livego 复制代码

其中,各个端口的含义如下:

8090:HTTP 管理访问监听地址

1935:RTMP 服务监听地址

7001:HTTP-FLV 服务监听地址

7002:HLS 服务监听地址

3.2 使用OBS推流

OBS(Open Broadcaster Software)是一款开源免费的提供视频录制和直播功能的软件,去OBS官网下载对应平台的软件进行安装即可。

要想推流,首先要解决的是“推什么”的问题,也就是要明确流的来源。打开OBS,点击新建“来源”按钮,如下图中第1步所示,可以看到OBS支持的来源比较丰富,有媒体源、显示器采集、浏览器和窗口采集等等。此处用现有的mp4文件来进行循环推流,因此来源选择“媒体源”,名称用默认的就行,点击“确定”后,设置要播放的视频文件,然后点击“确定”即可。

玩转直播系列之从 0 到 1 构建简单直播系统(1)

然后,要解决的就是“往哪推”的问题,也就是需要有一个可用的推流地址才行。

前面我们已经搭建好了livego直播服务器,它提供了一个默认推流地址:rtmp://localhost:1935/live,一个标准的RTMP服务器的推流URL类似这种格式:rtmp://domain/AppName/StreamName,但是要想使用该推流地址,需要有授权的 channelkey 才行。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwdsgp.html