一、技术原理分析

在介绍直播技术之前,首先大家需要理解流媒体的概念。所谓流媒体是指采用流式传输的方式在 Internet 播放的媒体格式。流式传输方式是将视频和音频等多媒体文件经过特殊的压缩方式分成一个个压缩包,由服务器向客户端连续、实时传送。客户端通过解压软件对这些数据进行解压后,多媒体就会像发送前那样显示出来。

理解了流媒体,就不难直播原理了,因为直播也是一种流媒体。只不过相比视频、音乐网站这种传统的流媒体,直播流媒体的数据源是由客户端(主播)产生然后实时推送到服务器的,下面的图片显示了直播的大致流程:

网络视频直播平台技术架构 视频直播技术详解_服务器


首先直播端使用视频、音频采集软件,从我们的直播设备中采集音频、视频等数据,然后对这些数据进行编码并推送到服务器。流媒体服务器使用 CDN 网络分发数据,客户端使用各种设备里的播放器拉流、解码、播放。

直播端的数据采集、编码、推流,已经有很多开源软件实现了,其中 OBS 是最知名的,也是很多主播在使用的软件。

关于推流和拉流环节,大家需要知道几个常见的流媒体协议:

  • RTMP:Real Time Messaging Protocol,是 Adobe 设计开发,为了在 Flash 播放器和服务器之间传输音频、视频和数据。客户端必须支持 Flash 才能播放。
  • HLS: 是苹果公司实现的基于 HTTP 的流媒体传输协议。
  • HTTP FLV: 将 RTMP 封装在 HTTP 协议之上的,可以更好地穿透防火墙。

直播流推送到服务器后会进行转码、分发。转码就是将直播流转化成不同的协议格式,以便支持不同的客户端设备。而分发到 CDN 网络则是为了解决直播服务器的拥堵、响应慢等问题

CDN(Content Delivery Network)即内容分发网络,是一个策略性部署的整体系统,主要用来解决由于网络带宽小、用户访问量大、网点分布不均匀等导致用户访问网站速度慢的问题。光说概念可能不好理解,那么举个例子好了。我们知道,京东商城在全国主要城市都建有自己的仓库,这是它送货速度快的主要原因。想象一下,如果京东商城只有北京一个仓库会怎么样?首先全国的订单都会涌入这个仓库,势必造成有些订单处理不及时,响应缓慢。同时,对于距离北京远的地区送货速度也会变慢,更难以想象的是遇到双 11,6.18 这样热点日子。全国各地的仓库对于京东来说就是一个 CDN 网络。

二、云直播服务

现在很多云服务公司,像阿里云、七牛等都提供了直播云服务。也就是说这些公司已经在云端处理好了转码,内容分发等技术难点,我们只需要使用平台提供的接口就可以了。本次实验使用的是阿里云直播服务。

视频直播服务(ApsaraVideo Live)是基于领先的内容接入与分发网络和大规模分布式实时转码技术打造的音视频直播平台,提供便捷接入、高清流畅、低延迟、高并发的音视频直播服务(来自阿里云直播产品介绍)。

下面是使用阿里云直播的过程:

网络视频直播平台技术架构 视频直播技术详解_音视频_02

三、推流、拉流

因为使用阿里云的直播服务需要一个备案过的域名,并且要花费一些费用,让每个同学现在去注册域名再开通服务就不太现实。所以本次实验中,阿里云直播服务的使用前准备、配置及推流工作并不需要你动手完成,我们会介绍配置推流的方法,实验中我们主要实现直播页面、拉流并播放。课程结束后,对直播技术感兴趣的同学也可以自行去实践整个过程。

前期准备,阿里云已经提供了详细的 文档 。

推流我们使用的是 OBS 软件。

所谓「拉流」,就是从直播服务器的 CDN 中获取直播流数据,这些数据就是直播的画面和声音,所以我们才能观看直播。