视频的核心技术栈

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

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

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

视频生产

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

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

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

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

的时候,有几率产生回退几秒的情况。用户体验十分不好。

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

视频消费

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

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

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

 原文地址:https://mp.weixin.qq.com/s?__biz=MjM5NzAwNDI4Mg==&mid=2652190112&idx=2&sn=cc04b68076fe8a81ec1055bc14f67a3b&scene=21#wechat_redirect

AcFun 的视频架构演化实践——阅读心得的更多相关文章

  1. Airbnb架构要点分享——阅读心得

    目前,Airbnb已经使用了大约5000个AWS EC2实例,其中大约1500个实例用于部署其应用程序中面向Web的部分,其余的3500个实例用于各种分析和机器学习算法.而且,随着Airbnb的发展, ...

  2. ArchSummit分享 | 高德地图App架构演化与实践

    讲师介绍 郝仁杰,高德地图无线开发专家.在7月13日落幕的2019年ArchSummit峰会上就高德地图近几年的App架构演化和实践进行了分享. 背景概述 高德是国内领先的数字地图内容.导航和位置服务 ...

  3. 转: Android 后台任务型App多进程架构演化

    评注:android 后台分进程保活方式的实践 Android 后台任务型App多进程架构演化 字数1621 阅读2790 评论8 喜欢35 什么是后台任务型app 类似音乐.录音机,需要用户长时间在 ...

  4. 七牛云赵之健:多维度融合赋能视频 AI 的实践

    6 月 30 日下午,赵之健在七牛架构师实践日第二十九期进行了<多维度融合赋能视频 AI 的实践>为题的实战分享. 
 作者简介: 
  赵之健,七牛人工智能实验室资深算法工程师, 七 ...

  5. 基于AWS的云服务架构最佳实践

    ZZ from: http://blog.csdn.net/wireless_com/article/details/43305701 近年来,对于打造高度可扩展的应用程序,软件架构师们挖掘了若干相关 ...

  6. 达达O2O后台架构演进实践:从0到4000高并发请求背后的努力

    1.引言   达达创立于2014年5月,业务覆盖全国37个城市,拥有130万注册众包配送员,日均配送百万单,是全国领先的最后三公里物流配送平台. 达达的业务模式与滴滴以及Uber很相似,以众包的方式利 ...

  7. 一套高可用、易伸缩、高并发的IM群聊架构方案设计实践

    本文原题为“一套高可用群聊消息系统实现”,由作者“于雨氏”授权整理和发布,内容有些许改动,作者博客地址:alexstocks.github.io.应作者要求,如需转载,请联系作者获得授权. 一.引言 ...

  8. QPS从0到4000请求每秒,谈达达后台架构演化之路(转载)

    https://blog.csdn.net/czbing308722240/article/details/52350219 QPS从0到4000请求每秒,谈达达后台架构演化之路   达达是全国领先的 ...

  9. App架构师实践指南五之性能优化二

    App架构师实践指南五之性能优化二 2018年07月30日 13:08:44 nicolelili1 阅读数:214   从UI和CPU方面来说App流畅体验优化,核心为流畅度/卡顿性能优化. 1.基 ...

随机推荐

  1. ES6--JavaScript扩展知识点(let、const、解构)

    一,ES2015(ES6)新增了两个声明变量的关键字:let.const let:只在代码块内{}有效,不可重复声明,不会提前初始化 1.只在代码块内有效 { let a = 1; var b = 2 ...

  2. 自定义centos

    目录 自定义centos 1. 为什么要自定义centos 2. 自定义centos步骤 自定义centos 1. 为什么要自定义centos 在使用官网的 centos镜像,只有200m,很小,但是 ...

  3. vue.js 初步学习

    跟着b站上的视频来学 首先什么是vue.js? 跟着b站上视频来学:(o゚v゚)ノ <!DOCTYPE html> <html lang="en"> < ...

  4. 检测jquery是否正确引入

    if(typeof(jQuery)=="undefined"){ alert("jQuery is not imported"); }else{ alert(& ...

  5. 补充:HTML标签和CSS

    角标标签: 上角标:sup 下角标:sub <!DOCTYPE html> <html> <head> <meta charset="UTF-8&q ...

  6. ubuntu python3虚拟环境

    mkvirtualenv flow_chart -p /usr/bin/python3.6 #  命令    环境名    -p   python所在路径 pip install -r request ...

  7. Windows安全应急响应(一)

    入侵排查思路 检查账号安全 1.查看服务器是否有弱口令,远程管理端口是否对公网开放 2.查看服务器是否存在可以账号.新增账号 3.查看服务器是否存在隐藏账号.克隆账号检查方法:i.打开注册表,查看管理 ...

  8. bcb ole拖拽功能的实现

    最近项目中用到了OLE 拖拽功能 和BCB 一个Form的Drag 不同的是,只有实现了OLE 拖拽才能,从其他程序拖拽数据到Form 下面的代码实现了,同HTML网页拖拽到Form时,Form获得H ...

  9. vue3.0+typeScript项目

    https://segmentfault.com/a/1190000018720570#articleHeader15 https://segmentfault.com/a/1190000016423 ...

  10. 关于EMF中从schema到ecore转变中的默认处理问题

    以前的工作,建模基本都是通过ecore tool直接画ecore的模型图来完成,最近要从schema创建ecore文件,本来以为是非常简单的一件事情,使用向导创建genmodel,然后从xsd文件导入 ...