AcFun 的视频架构演化实践——阅读心得
视频的核心技术栈
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 的视频架构演化实践——阅读心得的更多相关文章
- Airbnb架构要点分享——阅读心得
目前,Airbnb已经使用了大约5000个AWS EC2实例,其中大约1500个实例用于部署其应用程序中面向Web的部分,其余的3500个实例用于各种分析和机器学习算法.而且,随着Airbnb的发展, ...
- ArchSummit分享 | 高德地图App架构演化与实践
讲师介绍 郝仁杰,高德地图无线开发专家.在7月13日落幕的2019年ArchSummit峰会上就高德地图近几年的App架构演化和实践进行了分享. 背景概述 高德是国内领先的数字地图内容.导航和位置服务 ...
- 转: Android 后台任务型App多进程架构演化
评注:android 后台分进程保活方式的实践 Android 后台任务型App多进程架构演化 字数1621 阅读2790 评论8 喜欢35 什么是后台任务型app 类似音乐.录音机,需要用户长时间在 ...
- 七牛云赵之健:多维度融合赋能视频 AI 的实践
6 月 30 日下午,赵之健在七牛架构师实践日第二十九期进行了<多维度融合赋能视频 AI 的实践>为题的实战分享. 作者简介: 赵之健,七牛人工智能实验室资深算法工程师, 七 ...
- 基于AWS的云服务架构最佳实践
ZZ from: http://blog.csdn.net/wireless_com/article/details/43305701 近年来,对于打造高度可扩展的应用程序,软件架构师们挖掘了若干相关 ...
- 达达O2O后台架构演进实践:从0到4000高并发请求背后的努力
1.引言 达达创立于2014年5月,业务覆盖全国37个城市,拥有130万注册众包配送员,日均配送百万单,是全国领先的最后三公里物流配送平台. 达达的业务模式与滴滴以及Uber很相似,以众包的方式利 ...
- 一套高可用、易伸缩、高并发的IM群聊架构方案设计实践
本文原题为“一套高可用群聊消息系统实现”,由作者“于雨氏”授权整理和发布,内容有些许改动,作者博客地址:alexstocks.github.io.应作者要求,如需转载,请联系作者获得授权. 一.引言 ...
- QPS从0到4000请求每秒,谈达达后台架构演化之路(转载)
https://blog.csdn.net/czbing308722240/article/details/52350219 QPS从0到4000请求每秒,谈达达后台架构演化之路 达达是全国领先的 ...
- App架构师实践指南五之性能优化二
App架构师实践指南五之性能优化二 2018年07月30日 13:08:44 nicolelili1 阅读数:214 从UI和CPU方面来说App流畅体验优化,核心为流畅度/卡顿性能优化. 1.基 ...
随机推荐
- 三:后台的登录注册接口(moon项目,前面有一,二)
** 项目一共有 16 个页面,是一个电商网销项目,自己在网上的某网上找的一个要做的网站的设计图: 页面主要包括: 登录页 -- 注册页 -- 首页 -- 产品列表页 -- 产品详情页 -- 会员中 ...
- es6中Array.from()
Array.from()方法就是将一个类数组对象或者可遍历对象转换成一个真正的数组. 那么什么是类数组对象呢?所谓类数组对象,最基本的要求就是具有length属性的对象. 1.将类数组对象转换为真正数 ...
- Java 面向对象(七)多态
一.多态概述(Polymorphism) 1.引入 多态是继封装.继承之后,面向对象的第三大特性. 通过不同的事物,体现出来的不同的形态.多态,描述的就是这样的状态.如跑的动作,每个动物的跑的动作就是 ...
- graph Laplacian 拉普拉斯矩阵
转自:https://www.kechuang.org/t/84022?page=0&highlight=859356,感谢分享! 在机器学习.多维信号处理等领域,凡涉及到图论的地方,相信小伙 ...
- 阿里高级架构师教你如何使用Spring Cloud Ribbon重试请求
在微服务调用中,一些微服务圈可能调用失败,通过再次调用以达到系统稳定性效果,本文展示如何使用Ribbon和Spring Retry进行请求再次重试调用. 在Spring Cloud中,使用load b ...
- ajax _flask
同步访问 当客户端向服务器发送请求时,服务器在处理过程中,浏览器只能等等,效率偏低 异步访问: 当客户端向服务器发送请求时,服务器在处理过程中,客户端可以做其他的操作,不需要一直等待,效率偏高 AJA ...
- Image Processing and Analysis_15_Image Registration: A Method for Registration of 3-D shapes——1992
此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...
- 2.Vue调试工具vue-devtools的安装步骤和使用
1.安装步骤: 打开谷歌浏览器设置 -->扩展程序 -->勾选开发者模式 --->加载已解压的扩展程序 --->选择“chrome扩展”文件夹即可:
- 解决Centos /boot过小无法更新内核
Centos7默认安装时,/boot目录设置只有150M左右,这样编译几个版本的内核/boot空间就不够用了.报错大致如下: Disk Requirements: At least 3MB more ...
- jmeter非GUI的运行命令
jmeter 的参数 参数说明: -h 帮助 -> 打印出有用的信息并退出 -n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter -t 测试文件 -> 要运行的 JM ...