ZEGO教程:如何快速搭建一个完整的Android直播平台

本文来自即构SDK用户whale的投稿,她是一位资深的Android开发工程师,向我们分享了基于即构SDK,快速搭建一个安卓直播平台的过程。

移动网络的传输速度越来越快,音视频应用产品兴起,有技术实力和流量优势的互联网从业者都不愿错过直播这个风口。作为一个Android开发者,如何快速搭建一个安卓直播平台,在这里想和大家分享我的个人经验。

我们知道,一个完整的直播平台至少要包含以下4个基础模块:

推流端:采集、前处理、编码、推流

服务端:转码、录制、截图

播放器:拉流、解码、后处理、渲染

IM系统

如果所有的模块都自己独立开发,工作量和成本会非常高,因此我们可以通过集成专业的直播音视频云SDK,来快速打造一个直播平台。通过各方面的评测对比,我选择了即构的SDK,以下是我基于即构SDK实现安卓直播平台的具体方法,大家可以参考下:

 

一、主播端要做什么工作

 

主播端即直播推流端,主要通过手机摄像头(或外接摄像头)采集视频数据、麦克风采集音频数据,经过一系列前处理、编码、封装,然后推流到音视频媒体云和CDN去分发。

ZEGO教程:如何快速搭建一个完整的Android直播平台_第1张图片

采集

我采用即构SDK的默认采集,通过手机摄像头和麦克风(或外接摄像头和麦克风)采集音视频数据。其中,视频采样数据一般为RGB或YUV格式、音频采样数据一般是PCM格式。

采集到的原始音视频体积比较大,需要经过压缩技术处理来提高传输效率。

 

前处理

在这个环节主要处理美颜、滤镜、加水印或者做人脸识别等效果。美颜功能几乎成了直播的标配功能。

在美颜处理方面,我采用开源的图像处理库GPUImage,它提供了丰富的美颜效果,同时可以支持iOS和Android,支持自己写算法实现最理想的效果。GPUImage内置了120多种常见滤镜效果,添加滤镜只需要简单调用几行代码就可以了。

 

编码

为了便于手机视频的推流、拉流以及存储,即构SDK提供H.264硬编方式,使用视频编码压缩技术来减少视频的体积。在音频方面,比较常用的是AAC编码格式,其它如MP3、WMA也是可选方案。

视频经过编码压缩大大提高了视频的存储和传输效率,当然,经过压缩后的视频在播放时必须进行解码。

 

推流

在推流之前还需要使用传输协议将音视频数据进行封装,变成流数据。常用的流传输协议有UDP、RTMP、HLS等。

使用即构SDK的UDP传输协议,延时基本在200ms左右,使用RTMP传输的延时通常在1~3秒,所以对于连麦互动这种对实时性要求非常高的场景,UDP协议就非常适合。

UDP协议走的是即构的实时音视频媒体云,相比CDN的价格会稍微高一点,所以在不参与连麦互动的观众场景中,观众最关心的是流畅问题,对延迟的感知低。因而我们可以转推到CDN,再去拉流,这样能有效降低成本,个人认为这种方式性价比最高。

 

二、服务端要做哪些处理

 

要想适配各终端和平台,服务端还需要对流进行转码,如支持RTMP、HLS、FLV等格式拉流,支持一路转多路适配不同网络和分辨率的终端设备。

 

转码

即构提供了实时转码技术,将用户推流码率较高(比如720P)实时转成较低清晰度(比如360P)的流以适应播放端的需求。

如果要自己搭建实时转码系统,这个成本是极高的,一台8核设备只能实时转10路流,一个规模中等的直播平台假设有1000路流,就需要100台设备,加上后期的运维成本,一般的公司是难以负担的。

 

鉴黄

目前市面上提供鉴黄服务的方案主要有两种,第一种是对视频进行截图,然后对图片进行鉴黄,返回鉴黄结果和分值,相关企业有阿里(绿网)、图普科技等。

第二种是和CDN结合,直接对直播流进行分析,识别结果分为色情、疑似色情、性感和正常,业务系统根据识别结果直接控制直播流,代表企业有Viscovery等。

即构提供的鉴黄服务是第一种,即构CDN提供视频截图,通过图普对截图进行鉴黄然后返回结果和分值。

 

三、观众端要做什么工作

ZEGO教程:如何快速搭建一个完整的Android直播平台_第2张图片

拉流

拉流实际是推流的逆过程。首先通过播放端获取码流,标准的拉流格式有RTMP、HLS、FLV等。

RTMP是Adobe的专利协议,开源软件和开源库都支持的比较好,如开源的librtmp库,播放端只要支持flashPlayer就能非常简单的播放RTMP直播,直播延迟一般在1–3秒。

HLS是苹果提出的基于HTTP的流媒体传输协议,HTML5可以直接打开播放,通过微信、QQ等软件分享出去,用户也可以直接观看直播,可以说移动直播app,HLS拉流协议是必须支持的,缺点是延迟通常大于10秒。

FLV(HTTP-FLV)协议是使用HTTP协议传输流媒体内容的一个协议,也不用担心被Adobe的专利绑架,直播延迟同样可以做到1–3秒。 

各拉流协议的差异:

ZEGO教程:如何快速搭建一个完整的Android直播平台_第3张图片

即构音视频SDK提供了以上三种拉流格式,大家可以根据自己的业务场景选择拉流协议。

 

解码和渲染

Android系统由于平台差异非常大,编解码要注意平台兼容和适配。即构SDK兼容5000+手机终端,在开发的过程中可以感觉到兼容性会比较好。

 

四、IM功能

 

IM是直播平台不可缺少的功能,即构SDK提供基于房间概念的聊天、广播、互动等IM功能,主要通过信令通道来实现。如果需要更复杂和自定义的IM功能,可通过即构SDK的开放接口对接第三方IM供应商来实现。

 

五、如何集成开发

 

基于自研音视频引擎,即构SDK能实现更灵活的调用和使用,对于业务需求有较多个性化设计的产品也能完美支持,实测性能数据表现更优异。通过即构SDK集成开发主要有以下五步:

1、在工程中导入SDK

2、初始化SDK

3、登录房间

4、调用推流接口

5、调用拉流接口

基于上面5个步骤操作,我们就能实现基础的直播功能了。即构SDK还提供多种高级的功能接口,帮助开发者更好的实现个性化业务设计。感兴趣的开发者可以进行更深入的了解,这里就不过多叙述了。

以上就是我在使用即构音视频云服务后总结的直播产品开发经验,希望对创业者和开发者们有所帮助。

 

你可能感兴趣的:(低延迟,实时音视频,开发平台,视频直播)