视频云王海华:关于移动短视频技术选型的那些事
摘要:在短视频时代,让自己的产品提供短视频能力,并拥有良好的用户拍摄和观看体验,让短视频真正能够帮助业务发展是每个产品都应该考虑的问题。如何让自己的应用能够快速拥有短视频的能力,让短视频在你的应用里能够拥有更好的用户体验呢?今天我们从完整的技术链路上来梳理一下搭建一个完整的短视频的服务我们需要考虑哪些技术相关的问题。
在短视频时代,让自己的产品提供短视频能力,并拥有良好的用户拍摄和观看体验,让短视频真正能够帮助业务发展是每个产品都应该考虑的问题。如何让自己的应用能够快速拥有短视频的能力,让短视频在你的应用里能够拥有更好的用户体验呢?今天我们从完整的技术链路上来梳理一下搭建一个完整的短视频的服务我们需要考虑哪些技术相关的问题。首先我们来看一张图:
上图展示了一个移动短视频的一个生命周期,在整个生命周期中包含了以下几个关键的步骤:移动端适配拍摄+编辑,视频文件的上传,视频文件处理(存储,转码,视频理解),视频分发(CDN加速),短视频的播放。
那么下面我们分开来讲讲每个阶段在短视频场景里需要考虑的一些问题。
一、如何选择一个短视频SDK
为什么讲如何选择一个SDK而不是开发一个SDK?因为从零开始开发一个短视频SDK对开发工程师音视频专业能力有较高的要求,而今天在市面上可以找到很多非常成熟的短视频SDK,所以不建议自研。但是面对众多的SDK我们该如何选择呢?我们可以从以下几个方面去评价一个SDK的优劣:
1. 功能的丰富度
现在市场上提供的短视频SDK上看像快手,抖音等主要功能基本已经对齐,各家都会提供一些各自特色的功能,比如阿里云提供实时动态帖子,照片视频混合导入等。这块大家可以根据自己的产品进行选择;
2. 性能表现
说到移动端的性能大家通常会从CPU占用,内存占用,功耗等方面来做出自己的评估,但是对于短视频SDK的特殊场景是用户快速完成一个短视频拍摄和编辑,我们需要充分利用手机的性能包括CPU,GPU等硬件资源来完成 最终视频的合成,所以往往在真正合成的时候CPU占用往往会比较高。 我们来衡量一个短视频SDK的性能通常重点关注两个问题:第一谁能拍摄出更大分辨率,更高帧率的视频,第二导入合成一个相同分辨率,相同时长,相同帧率的视频谁花的时间更短?这里就涉及到短视频的解码性能,渲染性能,编码性能和整体多媒体框架调度性能谁更优秀;
3. 视频质量
拍摄出一个清晰的,流畅的,文件大小又足够小的视频是作为一个SDK或者一个产品需要去追求的。
4. 整体稳定性
移动的环境异常复杂特别在安卓平台,SDK能在各个平台,各种手机上的稳定运行是稳定性的一个重要指标,一般都会从Crash率来评价一个SDK的稳定性。现在市场上很少有SDK公布自己的Crash率,用户可以从SDK的所对接的APP上做一个评估。
5. 扩展性
是否有足够丰富的API提供,能够完成一些个性化的功能开发。
6. 包大小
整个应用安装包的大小直接影响用户下载,更新,安装时间和用户手机存储空间,进而也影响了应用程序的推广成本,所以引入的第三方SDK的包大小也是需要非常关注的。
现在有些SDK为了一味追求包大小直接在短视频SDK中完全使用了硬编硬解,从而抛弃了ffmpeg等第三方包来减少包大小,我认为是不可取的,首先硬编硬解存在非常多的适配问题会引起用户直接无法使用短视频功能,另外在某些机型上硬编硬解的能力不一定比CPU的能力强,所以还是需要根据机型适配合理选择编解码器。
7. 价格
现在市场上一般对短视频SDK都会有自己的一些定价策略,主要有以下几种:跟云端绑定普通功能免费试用,高级功能收取一定的费用几十万不等。另外如果在云端有较大的消费可以拿到一定的折扣。
经过以上这几个维度的比较,我相信能够很快确定一个合适的短视频SDK的。
接下来我们看看在短视频的场景里面云端服务我们如何选择?在选择的时候我们需要重点关注哪些问题?
二、云端服务选择
1. 存储
容量和处理能力弹性扩展,安全可靠是作为一个存储服务必须要具备的能力,所以选择一个可靠的云存储服务是首选的。
阿里云OSS:海量、安全、低成本、高可靠的云存储服务,提供99.999999999%的数据可靠性,使用 RESTful API可以在互联网任何位置存储和访问,容量和处理能力弹性扩展,多种存储类型供选择全面优化 存储成本。
2. 媒体处理
从客户端产生的视频为了让视频更加清晰加上手机端的处理能力毕竟有限,往往这个我们称之为原片的视频文件相对比较大,当我们把文件上传到我们云端提供众多用户进行观看的的时候我们需要关注一下几个问题:
1.如何减低整体带宽流量成本;
2.环境复杂的移动端产生的视频在播放的时候是否存在一些兼容性的问题?
3.在复杂移动网络下如何提升用户的观看流畅度体验,降低卡顿率?
4.如何降低终端用户流量成本?
5.......
所有的这些问题使得我们都需要在云端对视频做一次统一的处理保证视频格式的统一从而提升播放的兼容性,同时需要在保证清晰度不下降的情况下尽量压缩文件大小。
小贴士:一般视频处理(转码)需要一定的耗时,根据视频时长从几秒钟到几分钟不等,而在短视频场景里面往往需要快速消费,在这种场景里面通常做法可以采用异步处理的方式来做,先让用户观看原片,等待转码完成后再把各种清晰度的视频下发给观众。
在阿里云点播放服务中只需要几个简单的配置就可以完成以上所有的能力,除了这些能力以外,点播服务是集强大的媒资管理能力,视频编辑能力,详细的数据统计能力,分发加速于一体的一站式音视频点播解决方案。
三、播放器
视频的最终的消费就是需要有一个优秀的播放器,选择一个播放器的时候除了关注CPU占用,内存占用,功耗,以及一些传统播放的能力以外在短视频场景里面会有自己比较特殊的几个需求,主要有以下几点:
像抖音这种沉浸是的播放体验中离不开播放器的快速启播的能力(秒开);
短视频往往都会有较多的循环播放的需求,需要考虑首尾循环是否无缝和为了节省流量播放器有缓存的能力;
播放行为数据是一个对视频产品非常重要的,播放器是否提供行为数据埋点,上报,云端分析,最终报表展示也是至关重要的;
小贴士:播放器有著名的开源的播放器ijkplayer,但是各种优化和功能的开发需要有专业开发资源。另外各大云厂家也都提供了各自播放器。建议是端和云能够配套使用,这样才能够发挥出各自的优势达到更好的播 放体验;
解决上了以上的几个技术问题以后,基本能够完成整个短视频产品的开发了。
四、视频AI
很多短视频场景都是UGC的业务场景,用户可以任意拍摄和上传自己的短视频到平台上。而在国内的大背景下视 频涉黄,涉政,涉恐,广告,重复视频的审核,为了做好视频管理和推荐的基础就是需要对视频内容进行多维度的 理解和打标,这些问题是不得不考虑的问题,在产品前期视频量较少的情况下可以有人工进行审核和视频运营人员 进行打标。随着产品的发展海量的短视频场景中通过纯人工完成这两项工作几乎是不可能的。所以视频AI是一个不得不考虑的一个问题。