七牛短视频解决方案
1、产品简介
七牛短视频解决方案是基于快速上传、转码、鉴黄、存储、分发等强大云端能力,集成拍摄、美颜、特效、滤镜、编辑、合成、本地压缩、上传、播放等客户端组件的一站式短视频解决方案。
2、产品架构
2.1 模块说明
- 短视频 SDK
负责采集数据、媒体内容的处理、媒体文件的剪辑拼接以及上传到云端。 - 播放器 SDK
负责拉取并播放视频文件。 - 业务服务器
客户集成七牛云的储存服务端 SDK 后,具备创建和获取上传地址和播放地址的能力。 - CDN 分发网络
负责流媒体的分发和查询。 - 数据处理服务
支持鉴黄、转码、服务端水印、落存储。
3、短视频 SDK
3.1 产品架构图
通过上述架构图可以看出,七牛的短视频 SDK 设计有两个重要的特点:
1.组件化设计,方便客户像乐高积木一样组织自己的短视频 SDK,比如加入美颜滤镜技术。
2.在数据流动的 pipeline 里面,每个节点支持丰富的数据和状态回调。用户可以根据这些回调结合自己的业务做出更好玩的产品。
3.2 特点简介
功能完善、性能优越
- 客户端功能丰富:采集、处理、编码、封包、上传每一个过程都有丰富的功能,方便开发者在各种场景下都可以用七牛 SDK 做出优质的产品。
- 包体小,效率高:包体大小和 视频合成性能是开发者最关心的指标,我们在这些方面做了精心的优化
设计灵活、生态丰富
- 客户端接口灵活简单,便于自定义开发:除了提供丰富视的频处理功能,我们还考虑到开发者对接口使用方式的千差万别。所以在设计接口的时就做充分的考虑,尽量满足开发者各种使用姿势。
- 让专业的人做专业的事,发展客户端生态:集成各种三方美颜、滤镜、面部特效、AR特效,满足不同场景下的各种客户需求。
3.3 核心功能列表以及说明
功能 | 说明 |
---|---|
实时美颜 | 提供七牛自带美颜方案,可以调节美颜的三个关键参数:美白、磨皮、粉嫩度 |
实时滤镜 | 提供七牛自带滤镜方案,可以选择几十款有趣的滤镜。 |
人脸特效 / 贴纸 | 该功能是面部识别技术的基础上发展而来。首先需要识别出人脸的关键点,然后根据面部特征来加上贴纸或者开启瘦脸、大眼的效果。 |
第三方美颜、滤镜接口 | 使用场景:客户有自研的美颜算法或者有更专业的美颜需求时,要求关闭默认美颜嵌入三方的美颜模块。 |
多段录制 | 使用场景:当用户需要拍摄多个场景的视频,并且需要把这些视频整合到一起。 |
回删视频 | 该功能主要是配合多段录制功能使用,在录制过程中有不满意或者错误的视频片段时可以用该功能删除。 |
客户端水印 | 可以为自己制作的短视频加上象印的 logo,以方便保证品牌露出 |
视频剪辑 | 客户在录制视频的时候会有冗余的片段,该功能可以满足客户删除冗余片段的需求。 |
关键帧预览 | 提供关键帧预览功能有助于用户能方便、精确的剪辑视频。 |
截取封面 | 用户可以通过该功能获取视频中的某些画面帧来作为短视频的封面。 |
音频混合 | 用户可以通过该功能在录制完短视频之后加入背景音乐,并且和视频原声进行混合。 |
截取音频片段 | 用户录制了一段视频后需要混入背景音乐,而音乐素材有较长的前奏用户希望直接混入高潮片段,这种场景下就需要截取音频片段功能。 |
画面剪裁 | 假设客户录制的内容源是 16:9 的,而希望上传 1:1 的方形视频,可以调用该功能来达到效果。 |
本地转码 | 客户从相册中导入一段视频,但是视频的尺寸非常大上传时间非常长。这时候可以启用被动转码功能,将视频转成小尺寸后再上传。 |
上传云端 | 默认集成了上传七牛云存储的上传 SDK,方便用户使用 |
断点续传 | 如果客户在上次文件时断网,不需要整个文件重新上传可以从断点继续上传。 |
3.4 基础功能列表
功能 |
---|
摄像头采集 |
麦克风采集 |
静音功能 |
闪光灯开关 |
自定义分辨率 |
自定义视频帧率 |
自定义视频码率 |
支持 1:1 方正录制 |
手动对焦 |
自动对焦 |
曝光调节 |
调节原声/背景声音量 |
H.264 硬编 |
ACC 硬编 |
输出 mp4 文件 |
armeabi armv7, arm64, x86 |
3.5 关键指标
3.5.1 集成后包体增量
- iOS: App 的增量 100KB 以内
- Android: 2.2 MB
3.5.2 短视频 SDK 性能测试报告 (均值)
- 分辨率:480P 预设码率:800Kbps 美颜滤镜:全开 录制时长:10s
- CPU 10%
- Memory 66 MB
- 合成效率:6s
- 分辨率:720P 预设码率:800Kbps 美颜滤镜:全开 录制时长:10s
- CPU 11%
- Memory 68 MB
- 合成效率:7s
- 分辨率:1080P 预设码率:800Kbps 美颜滤镜:全开 录制时长:10s
- CPU 12%
- Memory 90 MB
- 合成效率:10s
3.6 开发文档
3.6.1 短视频 SDK 开发文档
- iOS:https://developer.qiniu.com/pili/sdk/3733/short-video-ios-sdk
- Android:https://developer.qiniu.com/pili/sdk/3734/short-video-android-sdk
4、播放器 SDK
4.1 特点简介
功能丰富、包体轻盈
- 提供特色功能:H.265 软硬解支持,播放变速不变调,无卡顿滑屏切换、倍数播放、丰富的数据统计、边下边播、本地缓存。
- 包体轻盈、性能出色:基本不依赖于各种三方库,包体极致轻盈。且无论针对软硬解码,还是 H.264 还是 H.265 解码效果都由于其他播放器。
毫秒级首开、全平台支持 - 首开作为核心指标精心优化,正常网络环境下 100 ms 以内即可以开播。
- 七牛视频播放器是一款原创的媒体播放器。底层是用汇 编,C,C++开发的跨平台播放引擎。在平台层进行包装,并提供接口给客户使用。
4.2 核心功能列表以及说明
功能 | 说明 |
---|---|
支持倍数播放 | 0.1x,0.5x,1x,2x,最高可达 32 倍速度播放。 |
支持变速不变调功能 | 使用场景:直播时由于网络抖动可能导致大量的媒体数据积累在缓存当中,这时播放器开启追帧会导致音视频的加速播放。变速不变调功能会通过改变音频的频谱如:将几个帧的音频合成一个中间值作为一帧来播放,这样播放速度不用加快而用户听起来的音调也差不多。 |
毫秒级别首开 | 本播放器优化视频的解析速度, |
支持 DRM 数字版权保护 | 数字版权保护是指:七牛的服务端可以给短视频加密,而播放器需要支持对加密后的音视频文件进行对应的解密。 |
支持 H.265 播放 | H.265 编码的视频可以节省大量的传输带宽和存储空间,七牛播放器可以支持高效的 H.265 解码。 |
提供丰富的播放状态回调 | 播放器 SDK 会将视频播放过程中的状态实时回调给用户,比如首帧渲染、buffering 等相关状态。客户可以更加这些状态来调整应用的业务逻辑。 |
提供播放音视频数据回调 | 客户可以在播放的时候 |
提供播放数据统计接口 | 播放数据统计接口可以首开、卡顿、帧率、码率等 |
支持设置封面 | 可以支持给音视频内容加上封面 |
支持边下边播 | 该功能主要是指:在播放过程中会先预加载一些音视频内容,这样处理可以在网络条件好的情况下多缓存一些内容,在网络变差的情况下有更多的时间加载内容。 |
支持播放缓存 | 播放缓存主要是让用户不用每次打开同一个视频都要去网络上读取数据,可以帮用户节省时间和流量。 |
支持软硬解自动切换 | 七牛播放器同时支持软解码和硬解码,且在硬解码失败后可以动态的切换到软解码。这样即可以享受硬解的低性能开销,有课保证不受硬解失败的影响。 |
提供接口获取 | metadata 信息 该功能可以用来获取音视频相关信息也可以用来诊断某些流的问题,比如一些设备信息和网络信息都可以放在 metadata 里面。当该用户上传的流或者视频出问题的时候,可以精确的提出这些信息用于诊断问题。 |
4.3 基础功能列表
功能 |
---|
支持音量设置 |
支持后台播放 |
支持画面镜像翻转 |
支持画面旋转 |
支持设置画面预览模式 |
支持 DNS 解析优化 |
支持后台播放 |
支持带 IP 地址的播放 URL |
支持 HTTPS 协议 |
支持自动重连 |
支持 armeabi,armv7, arm64, x86 |
4.4 关键指标
4.4.1 集成后包体增量
iOS: 4MB
Android:2.3 MB
4.4.2 首屏秒开速度
网络正常的条件下 100ms 以内
4.4.3 性能测试(均值)
- 720P 软解
- CPU 12%
- Memory 60 MB
- 720P 硬解
- CPU 5.5%
- Memory 51 MB
- 1080P 软解
- CPU 18%
- Memory 74 MB
- 1080P 硬解
- CPU 6.3%
- Memory 52 MB
4.4 开发文档
- iOS:https://developer.qiniu.com/pili/sdk/1211/ios-playback-end-the-sdk
- Android:https://developer.qiniu.com/pili/sdk/1210/the-android-client-sdk
5、短视频落存储
5.1 基本结构
七牛云存储服务
七牛云存储服务是以键值对方式提供非结构化资源存储服务。向业务服务器提供资源管理服务,向客户端提供资源上传和下载服务。
业务服务器
业务服务器需要开发者自行管理和维护,并且至少提供如下几个基本功能:
生成各种安全凭证(参考安全机制),安全凭证的创建不能在客户端进行,否则会产生极大的安全风险。
使用关系型数据库(例如MySQL)管理用户帐号信息。最终用户信息的管理并非云存储服务的功能范畴。云存储服务只管理企业账号。
使用数据库管理资源元数据和资源之间的关联关系。
响应客户端的业务请求,执行业务流程并返回执行结果。
客户端
客户端通常同时是资源的生产方和消费方。客户端在展示内容时,通常需要先从业务服务器获取资源的元信息,并得到必要的下载凭证,然后使用下载凭证从七牛云存储服务获取待展示的资源内容,从而实现一个完整的内容展示过程。
5.2 业务流程
上传
客户端在上传资源到七牛云存储之前要先从业务服务器获取一个有效的上传凭证,因此需要先后和两个服务端打交道。
如果有设置回调,则上传完成时七牛云存储会自动发起回调到指定的业务服务器。
下载
公开资源不需要对应的下载凭证,客户端可以直接从七牛云存储下载对应资源。私有资源需要对应的下载凭证,因此必须先和业务服务器打交道。
按照实际的使用场景,客户端对于内容的展示非常类似一个动态网页的生成过程,因此无论该页面内容是公开还是私有,均需要从业务服务器获取展示该页面的动态布局信息。所以通常显示过程也是需要先后和业务服务器及七牛云存储服务打交道。
资源管理
为了防止安全漏洞,资源管理操作应该只在业务服务器端进行。如果允许客户端进行资源管理,即使将管理凭证的生成动作放到业务服务器端进行,仍然很容易被第三方截获请求全文,从而导致重放攻击的风险。
5.3 开发文档
API Reference https://developer.qiniu.com/kodo/api/1731/api-overview
产品手册 https://developer.qiniu.com/kodo/manual/1277/product-introduction
6、短视频数据处理
6.1 简介
七牛数据处理平台针对海量数据,提供零运维、高可用、高性能的数据处理服务,日处理数近百亿次。除了提供基础数据处理,还基于容器技术打造了易扩展、易部署、高自由度的自定义数据处理接入平台,与七牛数据处理服务无缝兼容使用。
官方数据处理服务
提供图片裁剪、缩放、格式转化、水印、原图保护和防盗链,以及音视频转码、切片和拼接等基础的数据处理服务,服务内容还在不断丰富中。
自定义数据处理平台
允许用户构建、上传自定义的私有数据处理服务,支持管道处理、持久化、预处理操作等所有特性。
第三方数据处理市场
作为一个开放的应用平台,欢迎各种图片、音视频、以及其他数据处理的第三方应用提供方接入,为七牛存储中的海量数据,提供增值的数据处理服务。
6.2 音视频相关处理服务
音视频数据处理:https://developer.qiniu.com/dora/manual/3685/directions-for-use-av
鉴黄鉴恐:https://developer.qiniu.com/dora/manual/1295/image-as-a-yellow-services-stage
7、短视频融合 CDN
7.1 简介
融合 CDN 是在传统 CDN 基础上实现的对数据网络加速进一步优化的融合管理服务。除了服务于音视频点播、文件、应用与 Web 加速,以及各类增值场景外,七牛融合 CDN 还通过全方位的 CDN 质量监控,以及智能易用的加速节点调度等功能,保障用户服务的连续性,提供稳定快速的网络访问质量。
无盲区
成熟的多 CDN 融合管控方案,精选主流 CDN 厂商优质节点,与七牛云自有高质量节点相结合,全面覆盖各地区各运营商网络,真正做到无盲区。
智能调度
基于七牛云自有 IP 库,结合全网宕机与性能监控研发的智能融合调度系统,支持 DNS、HTTPDNS、IP302 调度方式,能有效防止访问劫持,实现 100% 实时调度精准可控。
立体品控
基于权威 APM 厂商覆盖性能监控,七牛自研全网实时可用性监控,SDK 日志上报实时访问性能监控,打造七牛融合 CDN 立体品控体系。
降低回源
自建 BGP 网络中间源,消除跨运营商网络回源慢甚至不可达等问题,保护源站带宽不受边缘节点请求波动影响,节省回源成本。
##7.2 音视频相关处理服务
产品文档:https://developer.qiniu.com/fusion/manual/3824/product-overview-fusion
API Reference:https://developer.qiniu.com/fusion/api/1230/traffic-bandwidth