阿里直播平台面临的技术挑战

http://www.infoq.com/cn/articles/alibaba-broadcast-platform-technology-challenges/
视频直播

对于直播平台来说,为了保障各种网络环境下能够流畅的观看视频,需要将高清的输入流转换出多路不同清晰度的视频流,以支持不同网络条件下视频清晰度的切换,而由于不同的端所支持的协议及封装格式并不完全相同,比如无线端的HTML5页面可以很好的支持HLS协议,但是对于RTMP这类协议基本无能为力,而PC端为了降低延时,需要采用RTMP这一类流媒体协议。因此,为了支持多终端(PC、Andriod、IOS、HTML5)观看,需要对输入流进行编码及封装格式的转换。转码完成之后,还需要对视频流进行分发,毕竟源站的负载能力有限,节点数有限,离大部分用户的物理距离远,对视频这一类十分占用带宽资源的场景来说,为了提高播放质量减少卡顿,需要尽量减少到用户的传输链路。因此,通常的做法就是将 视频流进行切片存储到分布式文件系统上,分发到CDN,或者是直接通过CDN进行流的二级转发,因为CDN离用户最近,这样才能保证直播内容对于用户的低延时,以及用户的最短路径访问。客户端对延时的要求,以及采用何种协议,决定了视频是否需要分片,分片的目的在于,通过HTTP协议,用户不需要下载整个视频,只需要下载几个分片,就可以播放,实际上直播与录播的技术是相通的,区别在于直播的流无法预测终结时间,而录播的视频流终止时间是已知的。对延时要求没那么高的场景来说,客户端可以采用HLS协议,毕竟IOS、Andriod、HTML5等无线端应用能够很好的兼容和支持,且常用的静态资源CDN可以不做相应改造,就能支持,但是HLS协议的一大天生缺陷就是延时较高,视频内容在切片、分发、客户端下载的过程中耗费了很长时间。对于时效性要求非常高的场景,就需要采用RTMP、RTSP一类的实时流媒体协议,来降低延时,并且,为了降低源站的压力,需要CDN边缘节点来做流的转发,那么,CDN就必须得支持相应的流媒体协议,也就是通常所说的 流媒体CDN

由于直播流由主播上传,如何控制违法违规内容特别是黄色内容,成了十分棘手的问题。令人欣慰的是,随着技术的发展,算法对于黄色图像的识别准确率已经很高,基本达到可以在生产环境应用的程度,因此我们也尝试在视频流分发之前,对视频帧进行提取,并且将图像交给算法进行识别,当超过预设的阈值时,可进行预警或者关停直播间。经过一段时间的实践,取得了一定的效果,降低了人力成本,但不可避免的是图像识别算法时间复杂度高,吞吐率较一般算法低。

消息/弹幕 如何降低消息系统的并发压力

WEB IM应用及弹幕近年来有越来越火的趋势,是营销与气氛活跃的一种非常重要的手段。对于同时在线人数庞大的实时聊天互动、实时直播弹幕这一类场景来说,在保障消息实时性的前提条件下,将会面临非常高的并发压力。举个例子来说,假设一个活跃的直播间有10w人同时在线,正在直播一场热门的游戏赛事,假设每秒钟每个人说一句话,将会产生10w条消息,也就是10w/s的消息上行QPS,而每条消息又需要广播给房间里面的每一个人,也就是说消息下行将成10w倍的放大,达到惊人的10w*10w=100亿/s的消息下行QPS,而这仅仅是一场直播的QPS,类似的直播可能有多场正在同时进行,对于消息通道来说,无疑将是一个巨大的挑战。因此,在系统设计的时候,首先要考虑的问题,就是如何降低消息通道的压力。


猜你喜欢

转载自coolsunchen.iteye.com/blog/2276616