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

1. 包体一定要尽可能小

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

- 尽一切努力使用 Android/iOS 系统原生的 API,不怕难用,不怕踩坑

- 良好的模块划分,不同的功能生成不同的动态库,客户可选择性的拆卸和裁剪

- 所使用的第三方库,充分配置编译选项和功能裁剪,只打包必须的功能、单独抽离所需的模块

2. SDK 一定要开放

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

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

- 凡可配置的参数,一律提供配置,比如:摄像头参数、编解码参数、美颜参数、混音参数等等

- 凡可回调的数据,一律提供回调,比如:摄像头采集的视频帧、纹理 ID,麦克风采集的音频帧等等

- 凡运行过程中的状态,一律提供通知,比如:拍摄状态、转码进度、取消事件等等

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

3. 性能要好

虽然随着时间的推移,手机的性能越来越强大,但是 CPU 居高不下、发热厉害、内存消耗大、运行速度慢的 App 终究还是会失去很多宝贵的用户。

SDK 如何做到更好的性能呢 ?其实就一条:充分地利用 GPU,尽一切可能减少 CPU 消耗?

- 音视频编解码尽可能地使用硬编/硬解

- 视频/图像的处理,尽可能使用 OpenGL,包括:美颜、滤镜、水印、剪裁、旋转等等

- 尽可能更高效地编写 OpenGL 代码,使用一些提高性能的特性,包括:VBO, VAO, FBO, PBO 等等

- 动态管理 so,没有用到的不加载;动态管理内存,使用时再分配

- 合并处理流程,各种音视频特效和处理,依次记录状态,待保存的时候,再调用算法处理

4. UI 和 SDK 逻辑要彻底的分离

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

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

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

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

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

1. 获取视频中的连续图像在列表中进行展示

2. 绘制左右游标,以确定剪辑的起始和结束的时间点

3. 读取视频文件,丢弃时间区间以外的视频帧,保留剩余视频帧

属于 UI 的部分:

1. 用列表显示视频帧图像

2. 绘制左右游标,支持手势拖动

3. 根据视频的总时长和游标的位置,计算出起始和结束的时间点

属于 SDK 的部分:

1. 提供视频的时长

2. 提供视频帧总数

3. 提供解码后的每一帧视频数据

4. 提供剪辑函数,参数为:起始和结束的时间戳

5. 完成剪辑处理,输出剪辑后的视频文件

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

5. 稳定可靠,有更好的可支持性

优秀的 App 和 SDK,首先一点就是要稳定可靠,因为没有人会喜欢经常崩溃的程序。不过,没有人敢说自己的程序是完美的,不会有任何 BUG 的,但是,具备良好的可支持性的产品,往往更容易受到亲赖。

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

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

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

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

- 规范的日志格式,如:<SDK TAG>:<Module TAG>:<Class TAG>:<Message>,可以快速方便地过滤出各个模块的运行状态

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

6. 小结

总而言之,设计一款优秀并且口碑好的短视频 SDK,并不是简简单单堆积一些功能就够了,其背后还是要花费不少心血的。

如何设计一款优秀的短视频 SDK相关推荐

  1. 播放器/短视频 SDK 架构设计,点播服务 (Demo)

    在Android中,我们可以直接使用MediaRecord来进行录像,但是在很多适合MediaRecord并不能满足我们的需求,比如我们需要对录制的视频加水印或者其他处理后,所有的平台都按照同一的大小 ...

  2. 短视频APP开发依赖于短视频SDK的设计

    优秀的短视频APP开发,首先要选择一个优秀的短视频SDK,短视频SDK集短视频采集.上传.存储.分发.播放于一体,借助短视频SDK.上传加速.不限量存储.稳定快速的 CDN 及播放器 SDK,为用户提 ...

  3. 短视频SDK架构设计,短视频APP开发目标首选

    短视频 SDK 实践中主要做的一些事情,这其中最重要的就是短视频 SDK 的架构设计,包括架构设计理念.架构图.整体数据流程.模块架构设计等.今天小编就简单介绍一下短视频APP开发中,选择什么样的厂家 ...

  4. 游戏开发需要具备哪些技术_短视频 SDK 开发 (一) 开发一款短视频 SDK 需要具备哪些知识?...

    前言 2020 年要属什么最火,肯定是短视频和直播带货了.我自己基本上每天晚上睡觉之前都会刷一会儿 douyin 短视频,不得不承认 douyin 的推荐算法是真 nb ,推荐的都是我的最爱 ? .那 ...

  5. 2019年知乎已发布两款App:短视频“即影”和男生种草“CHAO”

    [TechWeb]2月13日消息,知乎在2019年前两个月里发布了两款App,一款是围绕短视频的"即影",另一款是尚在内测阶段的好物推荐平台"CHAO". &q ...

  6. 短视频 SDK 开发 (一) 开发一款短视频 SDK 需要具备哪些知识?

    前言 2020 年要属什么最火,肯定是短视频和直播带货了.我自己基本上每天晚上睡觉之前都会刷一会儿 douyin 短视频,不得不承认 douyin 的推荐算法是真 nb ,推荐的都是我的最爱 ???? ...

  7. Google首席软件工程师Joshua Bloch谈如何设计一款优秀的API【附PPT】

    要:API设计看似简单,其实里面的学问还不少,在整个设计流程中,一不小心就会陷入各种陷阱之中,给你带来后患无穷的危害.Joshua Bloch是Google的首席Java架构师,他在一篇PPT里向大家 ...

  8. Google首席软件工程师Joshua Bloch谈如何设计一款优秀的API【转载】

    Google首席软件工程师Joshua Bloch谈如何设计一款优秀的API 摘要:API设计看似简单,其实里面的学问还不少,在整个设计流程中,一不小心就会陷入各种陷阱之中,给你带来后患无穷的危害.J ...

  9. 短视频APP开发主要依赖于短视频SDK架构设计

    短视频 SDK 架构中主要做的一些事情,这其中最重要的就是短视频 SDK 的架构设计,包括架构设计理念.架构图.整体数据流程.模块架构设计等.今天小编就简单介绍一下短视频APP开发中,选择什么样的厂家 ...

最新文章

  1. arduino代码运行时间测试函数,代码性能运行时间测试方法
  2. QT5界面操作3: QPainter和paintEvent(self, event)的配合
  3. tar.gz 文件解压 (安装 netbean 时会用到)
  4. sdio接口_单片机基础 —— 使用SDMMC接口读写SD卡数据
  5. GO语言练习:第二个工程--模拟音乐播放器
  6. [译]如何成为一个优秀的前端工程师
  7. 什么是 SNMP 和 MIB
  8. 用计算机计算实际利率,教你计算信用卡分期真实利率,算完大吃一惊!
  9. 哈工大教授车万翔「自然语言处理中的伪数据」
  10. Vue面试中,经常会被问到的面试题
  11. Aspect基础使用方法
  12. ubuntu64 使用gcc -m32编译成32bit程序
  13. 第九届”大唐杯“全国大学生移动通信5G技术大赛省赛获奖名单公示
  14. 每天学点clickhouse
  15. Spring Boot缓存实战 默认Cache(ConcurrentMapCacheManager)
  16. 微凉大大,教你一步一步在linux中正确的安装Xcache加速php。
  17. 微软杀毒软件 MSE (Microsoft Security Essentials) 官方下载地址
  18. 开启微信悬浮窗权限有什么用_用这一个App,干掉其他所有App的...所有广告
  19. 项目源码基本目录设计
  20. FPGA纯verilog代码读写N25Q128A QSPI Flash 提供工程源码和技术支持

热门文章

  1. 浏览器低延时播放监控摄像头RTSP海康大华硬盘录像机NVR视频(EasyNVR播放FLV视频流)
  2. VC++6.0 报错error spawning cl.exe解决方法【推荐】
  3. 如何做好描述统计分析?
  4. 打标签的U盘,win10不认服务未开启
  5. uni-app 学习笔记 黑马优购商城
  6. 4H5样式控制CSS1-美化网页元素
  7. prim和kruskal
  8. 解一元一次方程计算机在线,解一元一次方程(一).doc
  9. 树莓派利用红外线实现CSI摄像头自动拍照
  10. KNIME 安装配置