知识卡片

视频处理的客户端服务端分工原则

普通读书笔记卡

内容

面对[[短视频数据相比文本的三大架构差异]]中”处理需求大、资源开销高”这个特点,美拍把视频处理明确分成客户端和服务端两块,分工原则是”尽量往客户端靠”。客户端处理:利用现有手机的处理性能来减少服务器压力,主要负责视频效果叠加、人脸识别、各种美颜美化算法(美拍有专门的实验室团队做这类效果算法优化),以及必要的转码和水印处理;这个策略也会遇到低端机型处理效率不足的问题,但因为用特别低端机型上传美拍本身是少数场景,问题不算明显;客户端的视频编解码方式分软编码和硬编码——软编码兼容性好、编码效果更好,但能耗高且速度慢;硬编码借助显卡等硬件,能耗低、速度快,但兼容性和效果差一些(尤其在低配机型上),所以美拍目前采用两者结合的方式,根据具体场景选用。服务端处理:主要做视频审核、转码,以及抽帧生成截图这类工作,目前用ffmpeg处理;服务端处理天然资源消耗高、需要更多机器,所以美拍会把服务端做的视频处理操作尽量控制在合理范围内;同时因为美拍这类场景经常遇到热点事件带来的突变峰值,转码服务集群本身需要具备可弹性伸缩和异步化消峰的机制,才能适应这种突增请求的场景。这条”客户端优先、服务端兜底”的分工原则背后的经济逻辑是:客户端处理利用的是用户设备本身闲置的算力,边际成本几乎为零;服务端处理则要为每一次处理买单(机器、带宽),所以只有客户端做不了、或者出于审核安全等原因必须在服务端做的工作,才留给服务端承担,这样能最大程度把处理压力分摊到海量的用户设备上,而不是全部集中到有限的服务器资源上。

参考来源

- 位置:《高可用架构(第1卷)》第1章《高可用架构案例精选》"1.6 亿级短视频社交美拍架构实战"节,"1.6.3 短视频所面临的架构问题"(源文件:_epub-src/OEBPS/Text/Chapter1_6_4.xhtml) - 结论依据:原文说明"首先是客户端处理。视频处理尽量往客户端靠,利用现有强大的手机处理性能来减少服务器压力……其次是服务端的处理……因为资源消耗比较高,所以需要的机器数会更多,所以在服务端做的视频处理操作,会尽量控制在一个合理的范围",直接支撑本卡片结论。 - 原始内容:视频处理尽量往客户端靠,利用现有强大的手机处理性能来减少服务器压力……服务端本身需要考虑的一些点,就是因为资源消耗比较高,所以需要的机器数会更多……转码服务集群本身需要具备可弹性伸缩和异步化消峰机制。