首帧秒开+智能鉴黄+直播答题,阿里云直播系统背后技术大起底

发表时间:2018-02-28

摘要: 想要快速实现直播能力,并对原有业务不产生任何影响,依托如阿里云一样的直播平台,来搭建移动直播系统,将技术难题交给阿里云,把更多的精力放在核心业务的本身,是最为稳妥和高效的选择。本文介绍阿里云直播系统架构、核心能力、技术实现和接入流程。

点此查看原文: https://yq.aliyun.com/articles/394552?spm=a2c41.11181499.0.0

关注直播行业的人都知道, 2016年是移动直播的元年,那一年,网红被我们挂在嘴边,直播平台数量呈大规模增长。模式从最开始的秀场直播,转向UGC全民直播,内容从最开始的美女、色情,逐渐与各垂直领域进行探索与结合。最近,直播抓娃娃机和直播答题的接连风靡,也让我们看到了移动直播场景延伸和创新的可能性。

移动直播的应用场景

直播是内容高级的展示手段,移动直播和垂直领域结合,会碰撞出更好场景,为原有业务增值。

比如一些常见的场景应用:

直播+电商:更容易很促成销售,数据显示超过6成的观众会浏览商品,而购买率达到2成;

直播+教育:可以使远程教育更接近现场授课,并通过实时互动,能有效提升学习质量;

直播+金融:通过理财师分析大盘、实时资讯风向,可以实现从资讯到交易的全流程,促进理财产品的购买等等。

当然以上场景都是建立在稳定、完整、高性能、可扩展的直播系统之上。接下来,视频云产品经理弦望将为我们介绍阿里云直播系统解决方案和背后的核心技术能力。

直播系统解决方案

阿里云的直播技术架构,提供了从端到端的完整解决方案,可以助力用户快速搭建直播系统,实现直播功能。

下图中,左边是推流端,有Android、iOS的推流SDK,也可借助类OBS的推流工具和专业设备结合进行推流。直播流推上来后,会在直播中心进行实时处理,比如实时转码、截图、录制、水印、直播时移等,再通过CDN进行分发。播放端接收整个视频流的播放,可以支持10万以上路流输出、1000万以上观众同时在线。

(直播技术架构图)

我们可以看到,整个链路上都有SDK或者OpenAPI开放给用户使用,用户只需要基于SDK做一些接口的对接,就可以完成整个直播系统的开发。

技术能力介绍

下面我们看下整个直播系统都涉及到哪些具体环节,每个环节都是怎么实现的。

一、推流端

直播推流端即主播端,主要通过手机摄像头采集视频数据和麦克风采集音频数据,经过一系列前处理、编码、推流,直到CDN进行分发。

1、 高级美颜

前处理是对视频进行渲染,比如美颜、水印、贴图、混音、降噪等处理。其中直播平台必备的美颜功能,是通过算法去识别人脸的皮肤部分,对皮肤区域进行色值调整从而实现的。现在,阿里云以技术普惠大众的价值观将基于人脸识别的瘦脸、小脸、大眼、腮红等高级美颜功能完全免费开放。同时,通过标准化封装,推流SDK提供标准接口,可支持第三方美颜能力的接入,让用户基于自身业务做选择。

2、 实时混音

在推流阶段,阿里云还开放了时下热门的混音技术,它是将采集的人声和音乐声进行混合后输出,并支持降噪和耳返功能。整个技术流程是:将背景音乐解码成PCM音频数据,同时,将麦克风采集的PCM音频数据进行降噪处理,二者合成,在主播端直接播放PCM音频,在观众端则先进行音频编码再通过RTMP推送音频流并完成播放。

二、直播服务端处理

在推流完成后,直播服务端需要进行技术实现,包括实时转码,鉴黄,直播截图,直播录制,添加水印,时移观看,直播答题等,同时确保稳定、流畅和实时数据可见性。

1、 实时转码

实时转码是将一路流转成多路不同清晰度的流,在移动直播场景应用较少,但在PC端推上来的流一般是比较高清的,所以较为有效。阿里云提供的窄带高清技术,使用高配转码集群,高度复杂编码算法,在同等质量下提供更好的压缩率,节省20%-30%的流量带宽。

2、直播鉴黄

为了确保平台内容的合规,直播鉴黄是十分必要的一环。大型的直播平台通过人工鉴黄,成本高昂且不够精准。所以,选择人工智能技术鉴别黄色内容,可以减少审核人力,有效降低平台涉黄风险。

在直播系统中接入API后,人工智能技术可以对秒级截图的甄别,判定这个直播的色情程度,进行合理打分,也会给出建议处理方式,帮助平台实现内容管控。

3、 直播时移

直播时移是一种点播和直播想结合的能力,简单来说就是支持已经直播过的内容的实时回看。这个功能是结合播放器SDK,通过简单的几个接口调用就能实现。在网络电视、网络直播中,是十分常见的。

4、 直播答题

针对最近十分火热的直播答题,阿里云也推出了解决方案。在技术上是这么实现的:主持人发出答题信号,现场导播人员通过接入方的AppServer,调用阿里云的OpenAPI,在视频帧中插入SEI信息,播放器在解析SEI帧 并回调给APP,在播放端上进行展示。这其中比较关键的点是,SEI信息在CDN分发和转码等处理过程中,是不会被丢掉的。这也确保了所有用户端都能顺利完成推题。另外,整个方案通过同步服务器,进行同一传输通道同时传输,可实现高精度画题同步,保证用户体验。

通常,直播答题场景都是通过现场人员在改造之后的OBS端,实现SEI信息插入的操作,同时,阿里云直播答题解决方案也即将提供移动端出题的能力,满足主播直接出题的业务场景需求。

三、拉流端

拉流端的核心处理在播放器端的解码和渲染,在互动直播中还需集成聊天室、点赞和礼物系统等功能。

拉流端现在支持RTMP、HLS、HTTP-FLV三种协议,RTMP是Adobe的专利协议,开源软件和开源库都支持的比较好,延时一般在1-3秒。HLS是苹果提出的基于HTTP的流媒体传输协议,优先是跨平台性比较好,HTML5可以直接打开播放,移动端兼容性良好,但是缺点是延迟比较高。FLV(HTTP-FLV)协议是使用HTTP协议传输流媒体内容的一个协议,不用担心专利问题,直播延迟同样可以做到1–3秒。

这三种播放协议都是可以支持的,我们可以根据自己的场景来选择。比如说在端上播放可以使用FLV,如果将视频流分享出去就建议使用HLS。

核心技术

那么在整个阿里云直播系统中,都有哪些移动端的核心技术呢。弦望认为:动态码率、高级美颜、播放器首帧秒开三点非常重要。

一、 推流SDK——动态码率

动态码率技术实现原理是,首先在应用层配置时,设置一个最大的码率和最小的码率,圈定码率的浮动范围。然后通过实时上报当前码率,根据带宽的情况作出动态码率调整,在网络情况良好的时候提高视频清晰度,在网络情况不佳的时候则优先保证流畅度。这个技术可以让视频清晰度和卡顿做到一个平衡的状态。

弦望表示,目前视频云正在探索动态丢帧的策略,在未来,可能编码的帧率和分辨率也可以是动态调整的。

二、推流SDK——实时美颜

阿里云的实时美颜,其实是将美颜相关的算法,比如线性滤波、非线性滤波、PS大法的图像细节增强等等,做了融合与优化。最新的美颜算法通过多种滤镜的组合,已经达到了非常高的性能,总共耗时6毫秒。

通常视频在移动端推流是每秒15-20帧,每帧50毫秒的处理时间,6毫秒的处理时间其实是基本不会产生性能瓶颈的。

三、播放器——首帧秒开

在播放端,首帧秒开决定用户体验的关键性技术。其基本原理是,当用户在发起请求的点不是视频的关键帧,没办法直接渲染和播放的时候,读取已经在服务端缓存的最近一个GOP,在播放端读取到关键帧就可以直接展示,再通过PTS校正、丢帧、追帧等策略,去动态的处理视频流,降低延时。经过测试,秒开的时间在200毫秒-1秒之间。

接入流程

整个PC端直播的流程为:

首先,我们需要进行添加域名、绑定CNAME、配置鉴权等直播前筹备工作,然后使用第三方推流软件,或者OBS进行推流,最后获取播放地址,在web页面或者VLC上进行播放预览。

虽然背后的技术相对复杂,但是用户端的操作是十分简单方便的。

总结

想要快速实现直播能力,并对原有业务不产生任何影响,依托如阿里云一样的直播平台,来搭建移动直播系统,将技术难题交给阿里云,把更多的精力放在核心业务的本身,是最为稳妥和高效的选择。

为了方便用户在接入前进行体验,阿里云也提供了产品DEMO,扫码下载推流、播放器和短视频等客户端SDK,有任何的想法和建议,欢迎你在云栖社区原文下方进行留言和互动。

想要业务咨询的用户,也可扫码加入钉钉群,与阿里云技术专家和产品经理面对面交流。