六、模块及流程说明
1、关键功能集成流程
1.1SDK鉴权
※APP调用ShortVideoTask.shortVideoAuth(Callback callback)方法
※在onInfo中获取到Authorization与x_amz_date,分别赋值给ak和amzDate
※将ak/amzDate通过setAuthInfo初始化到AuthInfoManager中
※通过checkAuth向视讯云请求鉴权
示例代码:
ShortVideoTask.shortVideoAuth(new Callback() {
@Override
public void onError(int i, String s) {
}
@Override
public void onInfo(int i, Object o) {
ShortVideoAuth shortVideoAuth = (ShortVideoAuth) o;
final String authInfo = shortVideoAuth.getData().getAuthorization();
final String date = shortVideoAuth.getData().getX_amz_date();
//初始化鉴权信息
AuthInfoManager.getInstance().setAuthInfo(getApplicationContext(),
authInfo, date);
//添加鉴权结果回调接口(不是必须)
AuthInfoManager.getInstance().addAuthResultListener(mCheckAuthResultListener);
//开始申请鉴权
AuthInfoManager.getInstance().checkAuth();
}
});
1.2录制
准备待编辑文件,提供录制和本地文件导入两种方式来生成待编辑文件
示例代码:录制文件,提供CNRecordKit来完成录制功能
※配置参数:使用ShortVideoConfigDialog示例了录制参数的配置,参考ShortVideoActivity的onRecordClick函数
※录制预览显示:调用CNRecordKit的startCameraPreview启动录制预览显示,参考RecordActiviyt的startCameraPreviewWithPermCheck()
※录制开始:调用CNRecordKit的startRecord(string)开始了录制,参考RecordAcitvity的startRecord()函数
※录制结束:调用CNRecordKit的stopRecord()停止录制,参考RecordAcitvity的stopRecord()函数
SDK内部当前没有控制录制时长,建议在3s~5分钟之间,Demo中控制的最短为5s
1.3编辑
输入编辑文件路径,启动EditActivity对第二步中生成的文件进行编辑,SDK提供CNEditKit类来完成编辑功能
示例代码:
※启动编辑:调用CNEditKit的函数startEditPreview(string)来启动编辑预览,参考EditActivity中startEditPreview()函数
※只提供mp4、3gpp、mov三种文件的编辑,该函数会对文件格式进行check,不符合会抛出IllegalArgumentException异常
※添加滤镜:只提供GPU滤镜的添加,参考EditAcitvity中initBeautyUI()函数,与推流库的滤镜设置方式基本相同
※添加水印:参考EditActivity中onWaterMarkLogoClick()函数,只提供图片水印的添加,与推流库的图片水印基本相同
1.4合成
编辑结束,开始文件合成
示例代码
※配置合成参数:使用ShortVideoConfigDialog示例了录制参数的配置,当前合成提供帧率、encodeType、videobitrate,后续会持续完善
※开始合成:调用CNEditKit的函数startCompose(string)来开始合成,参考EditActivity的onNextClick(函数),合成过程的信息通过OnInfoListener和OnErrorListener来提供,消息通知参考mOnErrorListener和mOnInfoListener
1.5上传
文件合成结束,开始上传文件
示例代码
※触发上传:接收到回调合成结束SHORTVIDEO_COMPOSE_FINISHED后,在回调接口中返回上传信息CNClientWrap.CNUploadInfo,即可触发上传,参考mOnInfoListener中相关处理
※上传鉴权:接收到回调SHORTVIDEO_GET_UPLOAD_AUTH后,文件上传回调参考EditAcitvity中,mPutObjectResponseHandler
注:如果您的APP使用视讯云存储或者使用其他家云存储提供的存储或者CDN服务,上传阶段置为null即可。
1.6播放
上传文件后预览播放
示例代码
※获取文件地址:上传文件时会返回播放地址;
※开始预览播放:文件上传完成后,使用上面的播放地址进行播放