1. 包体是否足够小
- 良好的模块划分,不同的功能生成不同的动态库,客户可选择性的拆卸和裁剪
- 使用的第三方库,充分配置编译选项和功能裁剪,只打包必须的功能、单独抽离所需的模块.
- 尽一切努力使用 Android/iOS 系统原生的 API,不怕难用,不怕踩坑
2. SDK 是否开放
- 凡可回调的数据,一律提供回调,比如:摄像头采集的视频帧、纹理 ID,麦克风采集的音频帧等等
- 凡运行过程中的状态,一律提供通知,比如:拍摄状态、转码进度、取消事件等等
- 凡可配置的参数,一律提供配置,比如:摄像头参数、编解码参数、美颜参数、混音参数等等
- 需要尽可能地跟 SDK 上下游厂商建立良好的合作关系,集成多个第三方美颜、滤镜、AR 贴纸厂商。比如 美颜、滤镜、人脸贴纸特效、大眼瘦脸等供应商,让客户可以随时快速接入和替换任意一家厂商,从而加快产品迭代和上线的速度。
3. 性能是否足够好
- 音视频编解码尽可能地使用硬编/硬解
- 视频/图像的处理,尽可能使用 OpenGL,包括:美颜、滤镜、水印、剪裁、旋转等等
- 尽可能更高效地编写 OpenGL 代码,使用一些提高效果的特性,包括:VBO, VAO, FBO, PBO 等等
- 动态管理 so,没有用到的不加载;动态管理内存,使用时再分配
- 合并处理流程,各种音视频特效和处理,依次记录状态,待保存的时候,再调用算法处理
4. UI 和 SDK 逻辑是否彻底分离
优秀的 SDK,一定要尽可能避免把 UI 的界面和逻辑包含进去,不然 SDK 的使用者,很难满足产品经理的 UI 和交互设计要求,做出差异化的效果。
5. 是否有良好的可支持性
关键在于一套健全而规范的日志系统,可以有效提高技术支持和开发者排查问题的速度和效率。
- 支持配置 SDK 的输出日志级别,如:ERROR, WARN, INFO, DEBUG, VERBOSE
- SDK 初始化的时候输出关键的排障信息,如:应用包名,SDK 版本,设备机型,系统 OS 版本,关键配置等
- 规范的日志格式,如::::,可以快速方便地过滤出各个模块的运行状态
- 健全的问题排查手册/文档,让每一个错误码都有文档可依,开发者可以完成简单初步的问题分析
做短视频app开发,服务器的选择很重要
- 网络带宽是“重点”=决定能否接受同一时间大量访问 + 影响传输速率 + 影响流畅度和清晰度(传输时间长短影响用户体验)
- 存储空间的大小 =短视频的存储,对上传和下载都有很严格的要求。
- 安全保障很重要 =避免存储的用户信息泄漏
- 数据中心 =拥有良好的带宽环境 + 拥有非常强的网络防御能力
我们假设短视频的码率是100K,在同时在线100人时,带宽就需要10M,如果是视频服务器,那在线人数至少在300—800,随着平台的不断发展,后期所需的带宽会越来越高,这就要求短视频开发者们与三方服务商共同商讨出一个合适的解决方案了。