2017 年,短视频成为了内容创业的新风口,各种短视频 App 如雨后春笋般先后上线。随着互联网内容消费升级,视频越来越像文字、图片一样,成为每一个 App 不可或缺的一部分。

为了能够更好地聚焦于业务,早日完成短视频 App 的上线,越来越多的公司倾向于选择一家靠谱的短视频 SDK 来起步,怎么定义靠谱?要关注哪些指标?仅功能满足就可以了吗? —— 显然不够,下面我们站在 App 开发者的角度,来看看什么样的短视频 SDK 会有着更好的口碑和满意度 ?在你技术选型前,我们一起看看下在这份自检清单。

1.包体是否足够小

App 的包体大小,对获取用户有着至关重要的作用,特别是在线下的推广活动中,包体太大,下载费时费流量,很多用户会失去耐心,从而直接导致 App 的推广效果大打折扣。

而 App 的包体大小,除了自身的代码量,也会受到第三方库的包体影响,因此,短视频 SDK 包体越小,对于减小 App 包体大小越有帮助,开发者才会越喜欢。

那么,如何做到尽可能的减小 SDK 的包体呢 ?

  • 尽一切努力使用 Android/iOS 系统原生的 API,不怕难用,不怕踩坑
  • 良好的模块划分,不同的功能生成不同的动态库,客户可选择性的拆卸和裁剪
  • 所使用的第三方库,充分配置编译选项和功能裁剪,只打包必须的功能、单独抽离所需的模块.

2.SDK 是否开放

使用第三方的 SDK,最怕的是像个黑盒,过于封闭,想配置的参数无法配置,需要的状态也没有回调,直接导致产品经理给出的 UI 和交互方案无法实现。因此,SDK 的开放性,越来越成为开发者选型的关键因素。

那么,SDK 如何做到尽可能的开放呢 ?

  • 凡可配置的参数,一律提供配置,比如:摄像头参数、编解码参数、美颜参数、混音参数等等
  • 凡可回调的数据,一律提供回调,比如:摄像头采集的视频帧、纹理 ID,麦克风采集的音频帧等等
  • 凡运行过程中的状态,一律提供通知,比如:拍摄状态、转码进度、取消事件等等

另外,还需要尽可能地跟 SDK 上下游厂商建立良好的合作关系,比如 美颜、滤镜、人脸贴纸特效、大眼瘦脸等供应商,让客户可以随时快速接入和替换任意一家厂商,从而加快产品迭代和上线的速度。

3.性能是否足够好

虽然手机的性能越来越强大,但 CPU 使用率居高不下、发热厉害、内存消耗大、运行速度慢的 App 非常影响用户体验,因此,无论是 App 本身,而是第三方 SDK,性能永远是值得关注的重点。

SDK 如何做到更好的性能呢 ?其实就一条:充分地利用 GPU,尽一切可能减少 CPU 消耗,对于短视频 SDK 的开发,具体有哪些值得关注的点呢 ?

  • 音视频编解码尽可能地使用硬编/硬解
  • 视频/图像的处理,尽可能使用
  • OpenGL,包括:美颜、滤镜、水印、剪裁、旋转等等
  • 尽可能更高效地编写 OpenGL 代码,使用一些提高效果的特性,包括:VBO, VAO, FBO, PBO 等等
  • 动态管理 so,没有用到的不加载;动态管理内存,使用时再分配
  • 合并处理流程,各种音视频特效和处理,依次记录状态,待保存的时候,再调用算法处理

4.UI 和 SDK 逻辑是否彻底分离

优秀的 SDK,一定要尽可能避免把 UI 的界面和逻辑包含进去,不然 SDK 的使用者,很难满足产品经理的 UI 和交互设计要求,做出差异化的效果。

那么,SDK 如何做到与 UI 逻辑彻底地分离呢 ?

需要充分分解每一个短视频的功能需求,搞清楚每一个需求的实现原理,哪部分是 UI 的,哪部分是核心的,前者写到 Demo 上,而后者则写入 SDK 里面。

就拿短视频剪辑这个功能点来举个例子,下图所示是短视频的一个热点功能,对短视频截取中间某一段片段。

仔细思考这个功能点,其实关键点在于:

  • 获取视频中的连续图像在列表中进行展示
  • 绘制左右游标,以确定剪辑的起始和结束的时间点
  • 读取视频文件,丢弃时间区间以外的视频帧,保留剩余视频帧

属于 UI 的部分:

  • 用列表显示视频帧图像
  • 绘制左右游标,支持手势拖动
  • 根据视频的总时长和游标的位置,计算出起始和结束的时间点

属于 SDK 的部分:

  • 提供视频的时长
  • 提供视频帧总数
  • 提供解码后的每一帧视频数据
  • 提供剪辑函数,参数为:起始和结束的时间戳
  • 完成剪辑处理,输出剪辑后的视频文件

这样分离好了之后,再去编写 SDK 的接口和 UI 的 Demo 代码,就非常清晰了。

5.是否有良好的可支持性

优秀的 App 和 SDK,首先一点就是要稳定可靠,不会动不动就奔溃。具备良好的可支持性的产品,往往更容易受到青睐。

什么是可支持性 ?

举个例子,就像家里买的某些品牌的洗衣机或者空调,在出故障的时候,液晶屏幕上会打出一些错误码,当你给售后打电话的时候,售后往往能够根据描述的信息以及错误代码很快地定位到问题或者给出临时的解决方案。

如何让短视频 SDK 具有更好的可支持性呢 ?

关键在于一套健全而规范的日志系统,可以有效提高技术支持和开发者排查问题的速度和效率,那么,设计这样一套完善的日志系统,有哪些关键点呢 ?

  • 支持配置 SDK 的输出日志级别,如:ERROR, WARN, INFO, DEBUG, VERBOSE

  • SDK 初始化的时候输出关键的排障信息,如:应用包名,SDK 版本,设备机型,系统 OS 版本,关键配置等

  • 规范的日志格式,如::::,可以快速方便地过滤出各个模块的运行状态

  • 健全的问题排查手册/文档,让每一个错误码都有文档可依,开发者可以完成简单初步的问题分析

总而言之,设计一款优秀并且口碑好的短视频 SDK,并不是简简单单堆积一些功能就够了,看上去功能丰富和实际开发过程中是否好用还有很大的差距。

短视频自研还是选择第三方?技术选型前必看的自检清单相关推荐

  1. 短视频的生成,不要在技术上想当然

    短视频的生成,不要在技术上想当然 walker.xu 最近经常有人来问短视频生成方面的技术问题,恰好自己也在思考准备实现一个. 所以给了一些建议,但是事后细想,自己可能有点技术上想当然了. 通过分析竟 ...

  2. 什么内容的短视频可以吸引粉丝?分享五种类型短视频,供你选择

    什么内容的短视频可以吸引粉丝?分享五种类型短视频,供你选择 短视频的制作其实并不难,主要难点还是在于短视频的内容选题.引流等.那么今天我们就一起来着重的了解一下看什么内容的短视频可以吸引粉丝,这里简单 ...

  3. 单细胞测序技术之研究必看8篇经典综述

    单细胞测序技术之研究必看8篇经典综述 单细胞生物学最近几年是非常热门的话题.在这一领域中,不得不提Single-cell sequencing单细胞测序技术.使不同细胞类型得以精细区分,使得科学家们在 ...

  4. 抖音短视频开通PC电脑上直播技术实现

    忽如一夜春风来,直播带货满地开.互联网的江湖,是游戏的,是广告的,是直播的,是短视频的,但是归根结底是卖货的--也就是电商啦. 2020年可以看出短视频带货是未来大方向的趋势,最新抖音直播带货非常的火 ...

  5. 为视频直播网站开发选择最佳技术

    在今天的数字时代,随着人们越来越多地倾向于观看在线视频,视频直播网站开发已经成为了一项非常有前途的技术.无论是为了提供娱乐.教育还是商业目的,视频直播网站开发都是一个非常重要的领域. 在视频直播网站开 ...

  6. 抖音短视频账号矩阵系统源码/技术开发搭建私有部署

    01 何为矩阵号? "矩阵号"的搭建就是通过创建多个账号,大量更新发布视频,为其产品或服务获得足够多的曝光,满足其销售.服务等成交的玩法. 申请流程: 注册官方开放平台账号---- ...

  7. 五个不用本人出镜拍摄的短视频领域,要选择适合自己的,抓紧收藏

    大家都知道做短视频自媒体能赚钱,所以越来越多的宝妈.大学生.职场白领都开始进入到这行业中来,通过短视频分享自己生活.展现自己.知识.技能的同时还能赚取一部分收益. 做短视频有的人可以日入过百.过千,有 ...

  8. 短视频社交|电影点播平台Springboot+vue+ElementUI前后端分离

    感谢您的关注,请收藏以免忘记,点赞以示鼓励,评论给以建议,爱你哟 项目编号:BS-PT-071 一,项目简介 本项目基于Springboot+vue开发实现了一个电影点播和短视频分享平台,名为爱奇艺影 ...

  9. 不知道短视频很火的配音怎么制作?只需要看这一篇就够了

    短视频里有很多爆火的视频都是文字加配音,配音旁白声有男声/女声还有童声,这种文字配音要怎么制作呢? 制作方法很简单,今天给大家分享3个文字转语音软件和配音方法: 方法1:苹果手机自带的"朗读 ...

最新文章

  1. 将ADS1.2的工程迁移到KEIL上-基于2440
  2. GAN(Generative Adversarial Nets)研究进展
  3. 我对CTO的理解 CTO要有技术魅力
  4. Android Studio OkHttp的使用
  5. linux 远程控制详细安装 -- VNC (转)
  6. Chapter7-7_Deep Learning for Coreference Resolution
  7. Maven + Nexus + SVN + Eclipse 配置步骤说明
  8. SQL将数字转换成千分号格式
  9. react实现浏览器自动刷新_react调用什么刷新页面
  10. 【氵贴慎点】matlab啊啊啊
  11. 【概率论与数理统计】1.4 条件概率
  12. 全新的跨平台app软件开发工具——Lae软件开发平台
  13. python 图片数据集批量打标签
  14. “Windows10 无法打开这个应用程序”解决方案
  15. Google表单初学者指南
  16. poi设置单元格背景颜色
  17. 最大化期望算法(EM)详解
  18. 如何kill掉Ubuntu的僵死进程
  19. bigemap如何设置等高线坐标系并输出
  20. csdn写博客时图片插入方法

热门文章

  1. 好朋友简简单单,好情谊清清爽爽,好缘份久久长长
  2. html+下拉箭头样式,HTML选择下拉箭头样式
  3. kubernetes之一步一个坑
  4. 飚王硬盘盒怎么样_ORICO M.2固态移动硬盘盒众测分享:移动存储也高速
  5. MySQL流程控制函数-if函数
  6. 搭建K8s集群(kubeadm方式)-操作系统初始化
  7. Redis中的Sentinel 验证
  8. 反射获取成员变量并使用【应用】
  9. (常用API)正则表达式邮箱地址验证
  10. 数据库-优化-MYSQL数据库设计原则