文档中心

Android短视频SDK使用指南

1.名词解释

视频录制:采集摄像头及麦克风音视频数据,通过编码合成最终生成一个本地的mp4文件

视频预览编辑:对指定视频播放的同时添加滤镜、水印并时时显示添加后的效果

视频合成:对指定视频加入滤镜、水印等特效并输出mp4文件

KS3:金山云服务

SDK鉴权:取得SDK的使用权

2.功能介绍

短视频SDK基于金山Android融合库SDK 短视频SDK支持功能:

短视频录制(支持美颜滤镜、麦克风&配乐控制,麦克风&配乐音量控制、前置镜像、动态贴纸、水印)

短视频文件导入,支持mp4/3gp/mov

录制或导入视频预览编辑

录制断点续拍

录制时支持定时拍摄

支持横屏录制

编辑合成添加滤镜

编辑合成添加水印

编辑合成添加背景音乐

编辑合成视频时长裁剪

编辑文件合成,支持H.264、H.265、GIF编码

合成文件上传KS3

上传后文件预览播放

录制添加动态贴纸

编辑添加静态贴纸

支持片头/片尾

美颜、特效

编辑添加字幕

录制编辑变声变调

MV主题

涂鸦

3.运行环境

最低支持版本为Android 4.4 (API level 19)

支持的cpu架构:armv7, arm64, x86

4.关于费用

KSYMediaEditorKit短视频SDK是一款免费SDK,录制、编辑和播放功能都免费提供,可以用于商业集成和使用。

License说明请见wiki

4.1 鉴权

短视频SDK涉及两个鉴权,区别如下:

  • SDK鉴权免费,是必需的
  • KS3(金山云存储服务)鉴权涉及费用,可以选择不用
SDK鉴权

使用KSYMediaEditorKit短视频编辑SDK前需要注册金山云帐号,SDK需要使用开发者帐号鉴权。请在此注册开发者帐号。

SDK鉴权本身不需要付费。

为了开始开发用于SDK鉴权所需要的鉴权串,提供了服务器端鉴权需要的代码:

  • 服务器鉴权代码--JAVA版本

https://github.com/ksvc/KSYMediaEditorKit_iOS/tree/master/server/java/auth

  • 服务器鉴权代码--GO版本

https://github.com/ksvc/KSYMediaEditorKit_iOS/tree/master/server/python/auth

KS3鉴权

使用KSYMediaEditorKit短视频编辑SDK将合成的短视频上传至KS3(金山云存储服务)存储时,需要满足KS3的鉴权要求。

如果您的APP不使用金山云的对象存储服务或者使用其他家云存储提供的存储或者CDN服务,上传阶段置null即可。

如果使用金山云对象存储需要开通商务帐号(涉及付费业务),请直接联系金山云商务。

4.2 付费

KSYMediaEditorKit可以免费使用。涉及付费的包括:

  • 动态贴纸(可以不集成,如果需要集成需要向第三方供应商付费)
  • 云存储(可以不集成)
  • 点播CDN(可以不集成)

涉及的云存储和CDN,具体费用请参考金山云官网

5.集成说明

  • 视频相关jar(必选)

libksysv.jar 可通过jcenter依赖:compile 'com.ksyun.media:libksysv-java:0.8.3'

dependencies {
    compile 'com.ksyun.media:libksylive-java:2.4.0'
    compile 'com.ksyun.media:libksylive-arm64:2.4.0'
    compile 'com.ksyun.media:libksylive-armv7a:2.4.0'
    compile 'com.ksyun.media:libksylive-x86:2.4.0'
}
  • KS3上传SDK(必须,可以不用ks3的功能,但是SDK内部集成了ks3的上传逻辑,所以必须依赖ks3关联jar)

通过jcenter方式依赖ks3的关联jar volley及org.apache.http.Header依赖(同步获取ks3的token时使用)

dependencies {
    compile 'com.android.volley:volley:1.0.0'
    compile 'com.ksyun.ks3:ks3androidsdk:1.4.1'
}
  • 动态贴纸相关库(可选)

demo中只集成了金山云魔方的动态贴纸,详细集成请移步AR贴纸

6.架构说明

短视频

7.关键类说明

短视频

8.关键功能集成流程

8.1 SDK鉴权

鉴权需要向AppServer获取鉴权信息,并通过SDK的AuthInfoManager的checkAuth接口来完成。

  • 示例代码:参考ShortVideoActivity的onAuthClick函数
  • 流程说明:参考4.2中模块 1:SDK鉴权
  • wiki:SDK鉴权

鉴权在合成前必须完成,否则影响合成

8.2 录制

准备待编辑文件,提供录制和本地文件导入两种方式来生成待编辑文件

  • 示例代码: 录制文件,提供KSYRecordKit来完成录制功能

    1) 配置录制参数:使用ShortVideoConfigDialog示例了录制参数的配置,参考ShortVideoActivity的onRecordClick函数 2) 录制预览显示:调用KSYRecordKit的startCameraPreview启动录制预览显示,参考RecordActiviyt的startCameraPreviewWithPermCheck() 3) 录制开始:调用KSYRecordKit的startRecord(string)开始了录制,参考RecordAcitvity的startRecord()函数 4) 录制结束:调用KSYRecordKit的stopRecord()停止录制,参考RecordAcitvity的stopRecord()函数

SDK内部当前没有限制录制时长,建议在3秒~5分钟之间,Demo中最短为5s

文件导入,Demo中提供了文件导入的示例代码,参考FileImportActivity(此部分不涉及与SDK交互)

  • 流程说明:参考4.2 中模块2:短视频录制和导入
8.3 编辑

输入编辑文件路径,启动EditActivity对第二步中生成的文件进行编辑,SDK提供KSYEditKit类来完成编辑功能

  • 示例代码:

1) 启动编辑:调用KSYEditKit的函数startEditPreview(string)来启动编辑预览,参考EditActivity中startEditPreview()函数

只提供mp4、3gpp、mov三种文件的编辑,该函数会对文件格式进行check,不符合会抛出IllegalArgumentException异常

2) 添加滤镜:只提供GPU滤镜的添加,参考EditAcitvity中initBeautyUI()函数,与推流库的滤镜设置方式基本相同,参考内置美颜自定义GPU滤镜

3) 添加水印:参考EditActivity中onWaterMarkLogoClick()函数,只提供图片水印的添加,与推流库的图片水印基本相同,参考水印

  • 流程说明:参考4.2 中模块3:短视频预览编辑合成中的1~3步骤
8.4 合成

编辑结束,开始文件合成

  • 示例代码:

    1) 配置合成参数:使用ShortVideoConfigDialog示例了录制参数的配置,当前合成提供帧率、encodeType、videobitrate,后续会持续完善

    2) 开始合成:调用KSYEditKit的函数startCompose(string)来开始合成,参考EditActivity的onNextClick(函数),合成过程的信息通过OnInfoListener和OnErrorListener来提供,消息通知参考mOnErrorListener和mOnInfoListener,具体说明,请移步状态和错误回调

startCompose中会触发SDK鉴权检查,鉴权失败返回SHORTVIDEO_ERROR_SDK_AUTHFAILED消息,合成无法继续 调用KSYEditKit的getProgress()可以获取到合成进度,App需要自己启动Time来更新进度显示,参考ComposeAlertDialog中的composeStarted()函数

  • 流程说明:参考4.2 中模块3:短视频预览编辑合成中的4~8步骤
8.5 上传

文件合成结束,开始上传文件

  • 示例代码:

    1) 触发上传:接收到回调合成结束SHORTVIDEO_COMPOSE_FINISHED后,在回调接口中返回上传信息KS3ClientWrap.KS3UploadInfo,即可触发上传,参考mOnInfoListener中相关处理

    2) 上传鉴权:接收到回调SHORTVIDEO_GET_KS3AUTH后,需要向AppServer请求KS3鉴权Token,Token获取代码参考KS3TokenTask,在回调中返回Token信息,KS3Client会检查token是否正确,正确继续开始文件上传,错误,文件上传失败,文件上传回调参考EditAcitvity中,mPutObjectResponseHandler

通过PutObjectResponseHandler的回调onTaskProgress(double progress)可以获取到上传进度

  • 流程说明:参考4.2 中模块4:短视频上传
8.6 播放

上传后文件预览播放

  • 示例代码

1) 获取文件地址:当接收到PutObjectResponseHandler的回调onTaskSuccess后,说明上传成功,可以开始获取上传后的文件播放地址,Demo中提供HttpRequestTask类来示例http请求,地址获取参考ComposeAlertDialog中的uploadFinished()函数

2) 开始预览播放:文件获取成功后,可以使用播放器对其进行播放,Demo中示例参考ComposeAlertDialog中的startPreview()

此部分不涉及与SDK交互

  • 流程说明:参考4.2 中模块5:上传后文件预览播放

功能点详细说明

SDK鉴权(TODO)

状态和错误回调

KS3Client