查看原文
其他

架构师实践日|AcFun 的视频架构演化实践

2016-04-12 七牛云

编者按

4月10日下午在北京举办的“架构师实践日“沙龙中,来自 AcFun 的技术总监窦威向大家做了题为“AcFun 的视频架构演化实践”的分享。AcFun 成立8年多来,视频架构发生了巨大的变化。本期窦威为你带来Acfun 的视频架构演化之路,解密弹幕视频实时叠加技术。以下是对他的演讲内容的整理。


视频的核心技术栈


AcFun 弹幕视频网(acfun.tv)是中国最早上线的弹幕视频网站,也是最具影响力的弹幕视频平台。“AcFun”原取意于“AnimeComic Fun”。自2007年6月6日成立以来,AcFun 历经几年努力,从最初单一的视频站发展为现在的综合性弹幕视频网站,目前已是国内弹幕视频行业的领军品牌。


AcFun 从 2007 年建站,至2015 年正式专业化运营,从起初的盗链站,到如今由自身平台支撑绝大部分视频内容,伴随着业务的成长,技术架构也随之迅速演进,需要兼顾成本与用户体验,我们在视频存储转码、防盗链、媒体资源管理等领域进行过诸多尝试和变革,也乐于和大家分享在这过程中的思考和抉择。


视频主要由两部分组成,视频生产和视频消费端,A 站视频上传和存储、转码、内容的审核监控对生产方非常重要。播放器、CDN、宽带和防盗链后面会给大家介绍。

 

视频生产


A 站上的内容绝大多数是 UGC 的内容,UP 主(上传视频的人,搬运工)上传视频的体验,直接会影响网站内容的数量和质量,如果上传体验太差,UP主不愿意上传视频了,那离闭站也不远了。


图1

A 站自2007年建构以来,在架构上发生了翻天覆地的变化。如图1所示,作为个人站点的时候,用户会主动上传到优酷、土豆这些平台上,以链接投稿的形式投在 A 站的网站上,然后再把弹幕做上去。A 站使用视频云平台,拥有了自己的账户,使用云平台的上传插件,UP 主直接上传到云平台上。但是并没有对视频进行备份,导致后来跟平台合作出现问题的时候,花了很大精力把视频源文件从平台上下载下来,导致很多视频丢失,到现在也没有找回来。希望大家重视一下视频的源文件。A 站现在开发了上传的服务,公司建立了自己的存储。刚开发这个功能时是很粗糙的,现在是上传到A站的服务器,接到用户上传时,分发到合作的视频平台上。A 站选择了多家的视频平台。以前遇到过一件事情,当一家服务有问题的时候,会导致网站有数个小时访问不了。所以,A 站选择了多家 CDN 厂商。


现在 A 站也遇到了很多问题,例如刚开始上传的服务做好之后,因为机房是双线的,对于海外的用户体验都不好,上传到一半就断掉了。上传一个大视频有几 G,需要两三个小时,上传到一半了还得重新传。根据这些情况 A 站陆续开发了断点续传和秒传的功能,先扫描一下是否有这个文件,如果有的话,就不需要用户再上传了。A 站还建立了多线机房,相应的带宽的成本也大大提高了。


视频消费方在 CDN 加速方面用得比较多,用户进行加速。但是 CDN 还有一个上传加速的功能,七牛有一种反向 CDN 加速的服务。这种服务的好处就是用户先上传到CDN 厂商,回调告诉我们,再从 CDN 厂商把视频拿过来,节省了用户时间。A 站和 CDN 厂商进行协调,可以用单线和双线的机房把视频文件拖到自己的存储上,这样降低了一些带宽的成本。


视频转码方面,实际上A站并没有自己的转码服务,而是和 CDN 厂商合作,用他们来进行转码。现在支持的视频格式有FLV、MP4,码率有标清480P、高清720P、超清1080P和原画。在视频转码方面有一些策略和针对A站的情况进行优化,比如说 A站有音乐区,这部分的用户更关注音质,对图片要求不是特别高,A 站会针对这一部分视频进行音质的保持和无损。大家对于舞蹈区的视频主要看萌妹子,如果是朱军画质那宅男们就要骂街了,当然要尽量保持超清原画质的视频。


曾经视频是没有切片的,一个视频不管多大,转完码后都是单一文件。现在通过调整转码方案,采用视频切片技术,这样有助于节约带宽,视频缓存的时候一段一段的缓存,不像之前全缓存到本地,有可能用户只看了一半就不看了,这样无疑浪费了带宽,无形中提高了公司的成本。而且切片转码能提高转码的速度。有利有弊,提高了播放器的开发成本,现在还存在一些问题。比如,到切换分片的时候,有几率产生回退几秒的情况。用户体验十分不好。



图2

因为 A 站内容以 UGC 为主,因此会有大量的政策风险,需要有一套完整的审核监控流程,举报机制来完善。如图2所示,这是一个简单的流程,用户上传视频之后,发现不符合的可以进行退稿,如果视频通过,用户看这个视频特别不舒服也会进行举报,举报到一定的次数之后,系统会自动的把稿件退掉,UP 主可以申诉。


视频消费


视频消费端方面,A 站所有的播放内核都是第三方提供的,现在主要是 Flash、链接投稿和视频方合作的一些东西,以及客户端的一些东西。所有的播放器内核都是别人提供的,A 站只需要把自己的弹幕做好就可以了,可以发一些表情和文字。


讲到消费,大多数视频网站都很头疼,因为 CDN、带宽占公司很大一部分开销。A站选择 CDN 厂商的时候,会考虑服务稳定性、价格和服务质量。现在 A 站在 CDN 服务商选择上用了多服务商,因为以前发生过服务商中断服务之后,导致网页不能用的情况。现在如果某家服务商服务中断,我们可以切换到其他的服务商,不会造成其他的影响。


AcFun 的选择


带宽的价格和 CDN 价格很高,所以A站在播放端想加入 P2P 技术,这样可以节省很多带宽,用户之间进行数据的传播。其他的网站上防盗链都有很大的一个技术团队支撑,A 站是刚起步的阶段,现在介绍几种防盗链的措施。


首先是在接口层做一些防范,然后在播放的时候,播放器会拿播放地址,防止他们抓取播放地址,就会用一些简单的措施,比如说去判断一下请求来源,判断 http 请求的 refer 还有 UA。还有一种是和 CDN 厂商联合做防盗链的一些措施,比如说播放地址的时效性,20分钟、30分钟等等,有效的防止盗链的情况。


关于 AcFun 下一段的路程还是很长的,A 站要尽快提高技术水平。A 站的定位并不是简单的视频网站,现在想往综合性网站上发展,不会投入太多的成本做所有事情,A 站积极寻求与第三方合作。比如说推送、图片、统计服务都是和第三方进行合作的,会寻求市面上最好的服务支撑网站的功能。






「七牛架构师实践日」——这里只谈架构


七牛架构师实践日是由七牛云发起的线下技术沙龙活动,联合业内资深技术大牛以及各大巨头公司和创业品牌的优秀架构师,致力于为业内开发者、架构师和决策者提供最前沿、最有深度的技术交流平台,帮助大家知悉技术动态,学习经验成果。


七牛架构师实践日第六期【在线视频技术最佳实践】另外两位演讲嘉宾的精彩分享也将陆续发布。架构师实践日第七期【微服务架构与Docker技术最佳实践】将于5月7日与大家在成都见面,活动火热报名中,点击下方“阅读原文”了解更多信息,期待你的参与。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存