Skip to content
zanxiaofei edited this page Feb 9, 2018 · 43 revisions

金山云短视频编辑SDK主页

1. 集成说明

  • 短视频相关jar&so(必选)
    jar

libksysv.jar
libksyplayer.jar
libksystat.jar
ksylive.jar

so

libksyapm.so
libksylive.so

以上,均可通过jcenter依赖:

    compile 'com.ksyun.media:libksysv-java:2.2.0'
    compile 'com.ksyun.media:libksysv-arm64:2.2.0'
    compile 'com.ksyun.media:libksysv-armv7a:2.2.0'
    compile 'com.ksyun.media:libksysv-x86:2.2.0'
  • KS3上传相关SDK(可选,Demo中集成了KS3上传的相关功能,如果使用需要添加相关依赖)

通过jcenter方式依赖ks3的关联jar

dependencies {
    compile 'com.android.volley:volley:1.0.0'
    compile 'com.ksyun.ks3:ks3androidsdk:1.4.1'
}
  • 录制动态贴纸相关库(可选)
    demo中只集成了金山云魔方的动态贴纸,详细集成请移步AR贴纸

libkmcfilter.jar
sensearsdk-release.aar
通过center依赖

dependencies {
    compile 'com.ksyun.mc:libkmcfilter_sensetime:1.0.7'
    compile 'com.ksyun.mc:SenseTimeAR:1.0.4'
}
  • 编辑动态贴纸相关库(可选)
    SDK提供编辑合成的动态贴纸功能,若使用该功能,需要compile依赖fresco的相关库,若不使用只需要provided的方式依赖即可 通过center依赖
dependencies {
    //动态贴纸依赖库,若不使用,使用provided依赖
    compile 'com.facebook.fresco:fresco:1.4.0'
    compile 'com.facebook.fresco:animated-gif:1.4.0'
    compile 'com.facebook.fresco:animated-webp:1.4.0'
}
  • 涂鸦相关依赖(可选)
    Demo中演示了如何使用画笔来完成录制和编辑时的涂鸦功能,演示使用了第三方开源库PaintView,若也想使用该库,则需要添加依赖,您也可以自己编写paint或者使用其它的开源库 dependencies { compile 'com.lht:paintview:1.17' }

2. 架构说明

图片名称

3. 关键类说明  

图片名称

4. 模块及流程说明  

4.1 关键功能集成流程:

4.1.1 SDK鉴权

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

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

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

4.1.2 录制

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

  • 示例代码: 录制文件,提供KSYRecordKit来完成录制功能
  • 配置录制参数:使用ShortVideoConfigDialog示例了录制参数的配置,参考ShortVideoActivity的onRecordClick函数
  • 录制预览显示:调用KSYRecordKit的startCameraPreview启动录制预览显示,参考RecordActiviyt的startCameraPreviewWithPermCheck()
  • 录制开始:调用KSYRecordKit的startRecord(string)开始了录制,参考RecordAcitvity的startRecord()函数
  • 录制结束:调用KSYRecordKit的stopRecord()停止录制,参考RecordAcitvity的stopRecord()函数

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

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

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

4.1.3 编辑

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

  • 示例代码:
  • 启动编辑:调用KSYEditKit的函数startEditPreview(string)来启动编辑预览,参考EditActivity中startEditPreview()函数

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

  • 添加滤镜:只提供GPU滤镜的添加,参考EditAcitvity中initBeautyUI()函数,与推流库的滤镜设置方式基本相同,参考内置美颜自定义GPU滤镜
  • 添加水印:参考EditActivity中onWaterMarkLogoClick()函数,只提供图片水印的添加,与推流库的图片水印基本相同,参考水印
  • 流程说明:参考4.2 中模块3:短视频预览编辑合成中的1~3步骤

4.1.4 合成

编辑结束,开始文件合成

  • 示例代码:
  • 配置合成参数:使用ShortVideoConfigDialog示例了录制参数的配置,当前合成提供帧率、encodeType、videobitrate,后续会持续完善
  • 开始合成:调用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步骤

4.1.5 上传

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

  • 示例代码:
  • 触发上传:接收到回调合成结束SHORTVIDEO_COMPOSE_FINISHED后,在回调接口中返回上传信息KS3ClientWrap.KS3UploadInfo,即可触发上传,参考mOnInfoListener中相关处理
  • 上传鉴权:接收到回调SHORTVIDEO_GET_KS3AUTH后,需要向AppServer请求KS3鉴权Token,Token获取代码参考KS3TokenTask,在回调中返回Token信息,KS3Client会检查token是否正确,正确继续开始文件上传,错误,文件上传失败,文件上传回调参考EditAcitvity中,mPutObjectResponseHandler  

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

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

4.1.6 播放

上传后文件预览播放

  • 示例代码
  • 获取文件地址:当接收到PutObjectResponseHandler的回调onTaskSuccess后,说明上传成功,可以开始获取上传后的文件播放地址,Demo中提供HttpRequestTask类来示例http请求,地址获取参考ComposeAlertDialog中的uploadFinished()函数
  • 开始预览播放:文件获取成功后,可以使用播放器对其进行播放,Demo中示例参考ComposeAlertDialog中的startPreview()

此部分不涉及与SDK交互  

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

4.2 模块及流程图

不要被以下流程吓到哦,仔细阅读,对您集成有事半功倍的作用 图片名称  

5. 功能点详细说明

Clone this wiki locally