摘自:http://www.infoq.com/cn/news/2015/10/xiaokaxiu-tech-story

小咖秀是一款非常火爆的移动视频拍摄应用,据爱范儿消息,它三个月的下载量就超过了1500万。其CEO官韩坤表示,小咖秀只有两个后端工程师和一个运维人员,开发周期仅有两天,看来在这之前团队已经有了足够的技术积累。记得前不久,另外一个爆红的移动应用足记在突然来了100万用户之后就遇到了技术上的问题,这也是很多移动应用的短板。那小咖秀是如何做技术积累的?一个小团队是如何玩转如此大用户量的应用的?InfoQ记者采访了小咖秀的CTO汤力嘉。

InfoQ:能介绍下你们团队和产品目前的情况吗?

汤力嘉:炫一下科技成立于2011年,目前公司150人,一半是技术产品。公司旗下三款产品:秒拍、小咖秀、Vitamio多媒体框架。秒拍是微博官方的短视频拍摄应用,是最大的短视频分享平台;小咖秀是时下最火的对嘴型拍摄应用,刚推出即占据Apple Store总榜第一半月之久;Vitamio是多媒体一揽子解决方案,包括视频拍摄、美化、转码、播放等一系列SDK,全球有2万款应用在使用,覆盖用户超过5亿。

InfoQ: 小咖秀和秒拍都是视频类的应用,针对这类的应用,你们的架构是怎么样的?

汤力嘉:上传流程:应用端通过拍摄或导入等方式生成视频,经过特效加工美化,生成MP4文件。通过全局调度系统,确定就近的上传点。应用进行视频上传后,服务器会进行截图等操作。最后视频经过审核后,完成整个上传流程。

播放流程:用户打开应用或HTML 5页面上进行视频播放。根据不同的操作系统,选择合适的视频格式。通过全局调度系统,选择就近的质量最好的播放CDN进行播放。

InfoQ: 小咖秀和秒拍这样的应用最大的挑战是什么?为了应对这些挑战,你们做了怎么样的调整?

汤力嘉:在视频量爆发之后,我们凸显的问题是:如何快速甄选出优质视频,对优质内容进行最大可能的传播。因此我们加入很多触发规则以及监控体系,随时发现热点视频并快速消费。从产品层面上,我们也配合这些内容推出24小时热榜栏目,得到很多用户的喜爱。同时由于用户群体的多样化,不同用户消费和渴望看到的内容有很大的差别,为此我们也组建了数据挖掘团队,通过大数据分析,给不同用户推荐不一样的内容,完全根据用户的行为作推荐,通过个性化推荐后,视频播放量上升30%以上,这也是我们接下来持续优化的方向。

由于视频数量越来越多,内容的审核压力也越来越大,除了人工审核以外,我们也使用了多方面的技术和手段,进行一些半自动化的审核加速,例如对违规视频的分析和预审,能把高危视频优先审核;另外根据用户行为筛选高风险视频,以及应用机器学习进行反垃圾评论过滤。

InfoQ:足记在爆红之后,服务器曾一度垮掉,小咖秀有遇到这样的访问压力吗?

汤力嘉:视频分享讲究的是即时性,尤其在微博等社交平台上分享尤为突出,视频在刚分享时,就已是最热的时候。例如一个明星大V的视频分享到微博上,瞬间就会吸引他的粉丝打开观看,这时往往很考验系统对突发的海量请求做出及时响应。因此在系统的设计之初,我们就一直按着大流量突发请求的方式去做。

系统的设计都是可以随时横向扩展的,所有逻辑请求都会考虑两级的缓存进行分流,确保数据库的轻负载。逻辑服务上,我们使用可弹性伸缩的云平台,以应对突发的流量。视频服务上,我们接入了多家CDN厂商进行服务,并且有实时追踪系统,能对出现故障的节点进行快速的屏蔽,同时对应每一个请求,都会选择出最优的节点进行服务(包括性价比、速度和可用性)。

InfoQ:手机端录制的视频会比较大,特别是一些像素高的手机,小咖秀客户端有没有对视频进行压缩处理,请问使用到了哪些技术。服务器端存储的时候是如何进行优化的?

汤力嘉:我们有强大的视频处理团队,多年来一直进行视频处理优化和应用,手机端的拍摄模块,我们使用了Vitamio拍摄SDK(VCamera SDK)进行视频的拍摄和生成,视频大小会压缩到合适网络分享的程度,视频生成后,服务器端没有对视频进行二次处理,这样也加快了视频的准备过程,为视频快速传播祭奠基础。

在服务器端存储上,主要是需要考虑安全性,其次考虑视频存储的性能,尤其是视频读取的性能,便于视频的快速加载播放,所以目前的方案是在全国三地架设存储区,每一个视频都会同步三份,以确保视频的安全,同时便于就近快速访问。

InfoQ:视频特效这块,谈谈你们的解决方案?

汤力嘉:随着手机性能越来越好,手机对视频的处理逻辑已经越来越复杂了,我们的架构是把视频处理过程分成source、filter、render三个部分,source是各种输入源,可以是文件,可以是摄像头,可以是网络流等,用于源视频输入到处理框架上;filter是各种各样的不同特效,因此可以很方便的做扩展;render是处理完的视频如何输出,可以是输出成文件,可以输出到屏幕上等等。这三部分组件可以通过脚本的方式,更换不一样的处理逻辑,实现不同的特效。

InfoQ:视频与音频的拼接,特效的处理,你们的解决方案是怎么样的?

汤力嘉:在视频的基本编辑处理方面,iOS系统有对应的API,可以直接使用,对于Android来说,我们使用FFmpeg框架进行基础视频编辑处理。特效的处理,我们主要使用OpenGL进行各种效果的叠加。

(转)开发仅用两天三个人,谈谈小咖秀背后的技术故事相关推荐

  1. 嵌入式系统Linux内核开发工程师必须掌握的三十道题

    嵌入式系统Linux内核开发工程师必须掌握的三十道题 如果你能正确回答以下问题并理解相关知识点原理,那么你就可以算得上是基本合格的Linux内核开发工程师,试试看! 1) Linux中主要有哪几种内核 ...

  2. iOS 14代码泄露iPhone 12系列细节:有且仅有两款配备ToF 3D镜头

    受全球疫情蔓延的影响,苹果的年度旗舰iPhone 12系列很可能将延期到10月乃至更晚上市.虽然距现在还有半年多的时间,但这段时间以来已开始不断有关于全新的"iPhone 12"的 ...

  3. 微信小程序:开发之前要知道的三件事

    2019独角兽企业重金招聘Python工程师标准>>> 微信之父张小龙在年初的那次演讲中曾表示:"我自己是很多年的程序员,我觉得我们应该为开发的团队做一些事情". ...

  4. 【Win 10 应用开发】文件读写的三种方案

    本文老周就跟伙伴们探讨一下关于文件读写的方法.总得来说嘛,有三种方案可以用,而且每种方案都各有特色,也说不上哪种较好.反正你得记住老祖宗留给我们的大智慧--事无定法,灵活运用者为上. OK,咱们开始吧 ...

  5. 车辆入库java程序_java扫描入库及出库,基于谷歌类开发.仅提供完整代码 连接SQL使用,...

    java扫描入库及出库,基于谷歌类开发.仅提供完整代码 连接SQL使用,需要自行制作中心服务器,中心服务器代码在本人另一实例里面,请自行下载 [实例简介] 扫描入库及出库,基于谷歌类开发.仅提供完整代 ...

  6. ECCV 2020 | 清华提出基于循环关联的自监督行人再识别, 无标签ReID仅需两个摄像头!...

    作者:清华大学电子系三年级博士生 王重道 本文将分享来自清华大学的电子系在读博士生王重道等人在ECCV的工作.他们提出了一种简单有效的自监督行人再识别解决方案--CycAs,它的良好性能证明了针对任务 ...

  7. Kinect开发学习笔记之(三)Kinect开发环境配置

    Kinect开发学习笔记之(三)Kinect开发环境配置 zouxy09@qq.com http://blog.csdn.net/zouxy09 我的Kinect开发平台是: Win7 x86 + V ...

  8. 面向对象开发期末复习概述(三)

    面向对象开发期末复习概述(三) 第4章对象和类 & 第5章子类和继承&第6章 接口与实现 OOP是:Object Oriented Programming(面向对象编程) 类和对象的区 ...

  9. 微信开放平台开发第三方授权登陆(三):Android客户端

    微信开放平台开发系列文章: 微信开放平台开发第三方授权登陆(一):开发前期准备 微信开放平台开发第三方授权登陆(二):PC网页端 微信开放平台开发第三方授权登陆(三):Android客户端 微信开放平 ...

最新文章

  1. Windows Server 2012 R2 安装 OpenCV-Python,导入opencv报错: ImportError: DLL load failed.
  2. 揭秘Java网络爬虫程序原理
  3. vue 后台翻译_vue translate peoject实现在线翻译功能【新手必看】
  4. impala 连接mysql_impala系列: 基本命令和jdbc连接
  5. 糖尿病动物模型知识点整理
  6. java 注解入门 简书_Java基础-注解
  7. 如何区分数据科学家,数据工程师与数据分析师
  8. 如何在IIS添加MIME扩展类型
  9. PowerShell批量配置VM端点
  10. h2事务与mysql_H2数据库事务提交失败
  11. Matlab|Simulink打开mdl/slx等文件报错:lnvalid block diagram name supplied. Valid block diagram names ...
  12. TIFF图像文件格式分析
  13. 酒店客房管理系统JAVA-SSM-MYSQL
  14. 登录失败,用户名或密码错误
  15. HDLBits在线练习题之Exams/ece241 2014 q7b
  16. 〖Python接口自动化测试实战篇⑥〗- 接口抓包工具 Chrome 的使用
  17. 2021-01-22学习记录 || 通过二维数组初始化窗体并进行代码重构
  18. MathType怎样在字母上方加一横表示均值
  19. 编译原理学习笔记(一)
  20. (六) kityminder 协同编辑执行用例时,如果做到不相互干扰

热门文章

  1. 实验3_B_小学奥数题
  2. 有若干张一元、五元、十元面值的钞票,要支付十五元有多少种方法?
  3. 基于SSM开发宠物在线医疗系统
  4. Spring整合Drools
  5. 吃鸡2019年5月7日服务器维护,绝地求生更新:绝地求生5月7日更新内容 绝地求生5月7日更新维护公告...
  6. linux-- linux忘记密码(修改root密码)
  7. Ubuntu18.4重装系统
  8. Intel 8代酷睿发布时间曝光:i7 8月、i3明年1月
  9. java根据类名创建对象_java反射之根据全类名创建对象
  10. 最短路 思维转换 POJ 3159需要深刻理解题意的模板题