2013年美团外卖成立 , 至今一直迅猛发展 。随着外卖业务量级与日俱增 , 单一的文字和图片已无法满足商家的需求 , 商家迫切需要更丰富的商品描述手段吸引用户 , 增加流量 , 进而提高下单转化率和下单量 。商品视频的引入 , 在一定程度上可以提升商品信息描述丰富度 , 以更加直观的方式为商家引流 , 增加收益 。为此 , 商家端引入了视频功能 , 进行了一系列视频功能开发 , 核心功能包含视频处理(混音 , 滤镜 , 加水印 , 动画等)、视频拍摄、合成等 , 最终效果图如下所示:

文章插图

文章插图
自视频功能上线后 , 每周视频样本量及使用视频的商家量大幅增加 , 视频录制成功率达99.533% , 视频处理成功率98.818% , 音频处理成功率99.959% , Crash率稳定在0.1‰ , 稳定性高且可用性强 。目前 , 视频功能已在蜜蜂App、闪购业务和商家业务上使用 。
对于视频链路的开发 , 我们经历了方案选型、架构设计及优化、业务实践、功能测试、监控运维、更新维护等各个环节 , 核心环节如下图所示 。在开发过程中 , 遇到了各种技术问题和挑战 , 下文会针对遇到的问题、挑战 , 及其解决方案进行重点阐述 。

文章插图
方案选型
在方案选型时 , 重点对核心流程和视频格式进行选型 。我们以功能覆盖度、稳定性及效率、可定制性、成本及开源性做为核心指标 , 从而衡量方案的高可用性和可行性 。
1. 核心流程选型
视频开发涉及的核心流程包括播放、录制、合成、裁剪、后期处理(编解码、滤镜、混音、动画、水印)等 。结合商家端业务场景 , 我们有针对性的进行方案调研 。重点调研了业界现有方案 , 如阿里的云视频点播方案、腾讯云视频点播方案、大众点评App的UGC方案 , 及其它的一些第三方开源方案等 , 并进行了整体匹配度的对比 , 如下图所示:

文章插图
阿里和腾讯的云视频点播方案比较成熟 , 集成度高 , 且能力丰富 , 稳定性及效率也很高 。但两者成本较高 , 需要收费 , 且SDK大小均在15M以上 , 对于我们的业务场景来说有些过于臃肿 , 定制性较弱 , 无法迅速的支持我们做定制性扩展 。
当时的大众点评App UGC方案 , 基础能力是满足的 , 但因业务场景差异:
- 比如外卖的视频拍摄功能要求在竖屏下保证16:9的视频宽高比 , 这就需要对原有的采集区域进行截取 , 视频段落的裁剪支持不够等 , 业务场景的差异导致了实现方案存在巨大的差异 , 故放弃了大众点评App UGC方案 。其他的一些开源方案(比如Grafika等) , 也无法满足要求 , 这里不再一一赘述 。
通过技术调研和分析 , 吸取各开源项目的优点 , 并参考大众点评App UGC、google CTS方案 , 对核心流程做了最终的方案选型 , 打造一个适合我们业务场景的方案 , 如下表所示:

文章插图
2. 视频格式选型

文章插图
- 采用H.264的视频协议:H.264的标准成熟稳定 , 普及率高 。其最大的优势是具有很高的数据压缩比率 , 在同等图像质量的条件下 , H.264的压缩比是MPEG-2的2倍以上 , 是MPEG-4的1.5~2倍 。
- 采用AAC的音频协议:AAC是一种专为声音数据设计的文件压缩格式 。它采用了全新的算法进行编码 , 是新一代的音频有损压缩技术 , 具有更加高效 , 更具有“性价比”的特点 。
推荐阅读
- Android NDK-深入理解JNI
- Android如何使用注解进行代码检查
- 抖音 Android 性能优化系列:启动优化之理论和工具篇
- Android缩放手势的检测
- 自动识别 Android 不合理的内存分配
- Android面试题集锦之 Service
- 怎样搭高质量的Android项目框架,框架的结构具体描述?
- 谷歌Android 12L的适配机型,看得我们有点懵
- 浅谈Android类加载器
- Android 12推出正式版!这次的升级到底值不值得更新呢?
