写点什么

开发仅用两天三个人,谈谈小咖秀背后的技术故事

  • 2015-10-18
  • 本文字数:2056 字

    阅读完需:约 7 分钟

小咖秀是一款非常火爆的移动视频拍摄应用,据爱范儿消息,它三个月的下载量就超过了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 进行各种效果的叠加。

2015-10-18 02:0312147
用户头像

发布了 219 篇内容, 共 138.7 次阅读, 收获喜欢 191 次。

关注

评论

发布
暂无评论
发现更多内容

王者荣耀商城异地多活架构设计

swallowluo

架构实战营 #架构实战营 「架构实战营」

营销MM让我讲MySQL日志顺序读写及数据文件随机读写原理

华为云开发者联盟

MySQL 磁盘 数据读写 日志顺序读写 数据文件随机读写

金3银4面试前,把自己弄成卷王!

小傅哥

面试 小傅哥 金三银四 项目学习

Mybatis常用注解中的SQL注入

编程江湖

鸿蒙轻内核源码分析:文件系统FatFS

华为云开发者联盟

鸿蒙 Fat 文件系统 鸿蒙轻内核 FatFS

[JAVA冷知识]为什么动态加载不适合数组?如何动态加载一个数组?

山河已无恙

Java 2月月更

知名云计算厂商云宏加入龙蜥社区,共同打造信息安全坚实“地基”

OpenAnolis小助手

云计算 Linux 开源 社群运营

DDD[0]·序

陆乘风

领域驱动设计 领域驱动设计DDD 领域驱动设计思想

HarmonyOS canvas绘制“飞机大战”小游戏,真香!

HarmonyOS开发者

HarmonyOS

经验分享 | TDengine在智能船舶领域的实践手册

TDengine

数据库 大数据 tdengine 物联网 时序数据库

第1章:初识数据库与MySQL----数据库基本概念

乌龟哥哥

MySQL 2月月更

火遍网络的KPI异常检测到底什么梗?

乌龟哥哥

2月月更

Nacos服务注册与发现的2种实现方法!

王磊

nacos SpringCloud Alibaba

你使用的是数据结构还是对象?

蜜糖的代码注释

Java 后端开发 2月月更

蚂蚁大规模 Kubernetes 集群无损升级实践指南【探索篇】

SOFAStack

云原生 etcd #Kubernetes# #k8s SIGMA

新年开工新气象|OceanBase 祝大家开工大吉!

OceanBase 数据库

开源 OceanBase 社区版 开工大吉

在线IEEE浮点二进制计算器工具

入门小站

工具

try{}catch居然可以隐藏?让我们用函数式接口来实现吧

山河已无恙

Java 2月月更

浅谈数仓建设及数据治理 | 社区征文

五分钟学大数据

数仓 新春征文

教你从零搭建Web漏洞靶场OWASP Benchmark

华为云开发者联盟

渗透测试 漏洞 安全测试 漏洞靶场

第八节:SpringBoot指定配置文件配置三

入门小站

Java

也谈向上管理

wood

向上管理 300天创作

混合云模式下,如何定义一款好的 API 网关

API7.ai 技术团队

流量控制 api 网关 微服务治理 Apache APISIX

云原生时代,软件交付有何不同 | 研发效能提升36计

阿里云云效

阿里云 云原生 持续交付 云平台 研发

golang 面试总结

yuexin_tech

golang 面试

Go 语言入门很简单:技巧和窍门(Tips and Tricks)

宇宙之一粟

Go 语言 2月月更

关于大数据计算框架Flink内存管理的原理与实现总结 | 社区征文

张浩_house

大数据 flink 新春征文

JVM进阶(十二):JAVA 可视化分析工具

No Silver Bullet

JVM 监控工具 2月月更

vivo直播应用技术实践与探索

vivo互联网技术

RTMP 直播技术

JVM进阶(十三):阶段学习回顾

No Silver Bullet

JVM 2月月更 回顾

Nodejs内置模块path与fs模块简单使用

编程江湖

nodejs

开发仅用两天三个人,谈谈小咖秀背后的技术故事_移动_小盖_InfoQ精选文章