此文档仅适用于 1.32.2.2 之前的版本。如果您使用的是 1.32.2.2 或之后的版本,请查看素材上传。
ttuploader 是 Android 端使用的通用上传 SDK。已支持素材上传功能。
素材上传对应的监听类为TTMaterialUploaderListenerTop。
上报信息的结构体为TTMateInfoTop
质量统计类为UploadEventManager
本模块介绍如何使用上传SDK以最快捷的方式进行素材上传。请在参考视频上传完成集成准备后,再进行该步骤。Android视频上传SDK
您可直接通过下述Demo,快速实现素材上传
详细划分为3个步骤,也在本章节对3个步骤进行了解释与说明
素材上传Demo
import com.ss.ttuploader.TTMaterialUploaderConfigTop; import com.ss.ttuploader.TTMaterialUploaderTop; import com.ss.ttuploader.TTMateInfoTop; import com.ss.ttuploader.TTMaterialUploaderListenerTop; Context mContext = this.getApplicationContext(); // 下面填写的参数仅供释义,请填写您自己的参数 Map<String,Object> appinfoMap = new HashMap<>(); appinfoMap.put("appname", "your app name"); appinfoMap.put("appid", 123); // your app id appinfoMap.put("appchannel", "xiaomi_appstore"); // 设为test_channel不会展示日志 appinfoMap.put("region", "china"); appinfoMap.put("appversion", BuildConfig.VERSION_NAME); //初始化上传SDK配置 TTMaterialUploaderTop.setAppInfo(mContext,appConfig); //初始化上传配置,建议早配置 //mateUploaderTop注意不要声明为局部变量进行使用,避免因为TTMaterialUploaderTop实例 //生命周期的问题影响素材上传 TTMaterialUploaderTop mateUploaderTop; try { mateUploaderTop = new TTMaterialUploaderTop(); } catch (Exception e) { e.printStackTrace(); return null; } TTMaterialUploaderConfigTop config = new TTMaterialUploaderConfigTop(); JSONObject sts = null; try { sts = new JSONObject(authParam); //authParam为鉴权串,为服务端后台的签名sdk生成。向服务端请求获取。 config.mSecretAccessKey = (String)sts.get("SecretAccessKey"); config.mAccessKeyId = (String)sts.get("AccessKeyID"); config.mSessionToken = (String)sts.get("SessionToken"); config.mExpiredTime = (String)sts.get("ExpiredTime"); } catch (JSONException e) { e.printStackTrace(); } config.mFilePathName = "/mnt/sdcard/test.mp4";//视频文件路径 config.mSpace = "store";//即空间名称,此参数说明请参考下方文档 config.mMateHostName = "vod.volcengineapi.com"; config.mFileType = "media"; config.mServerParameter = "key1=value1&key2=value2&";//希望透传的参数 config.mRecordType = 2;//标识上传类型为素材上传,必传 config.mCategory = "video"; config.mTitle = "testMateUpload"; config.mTags = "testMateTag,testMateTagOne"; config.mDescription = "testMateDescription"; config.mFormat = "XXXXXX"; mateUploaderTop.setUploadConfig(config);//配置素材上传参数策略 //注册回调 mateUploaderTop.setListener(new TTMaterialUploaderListenerTop() { @Override public void onNotify(int what, long parameter, TTMateInfoTop info) { if (what == MsgIsComplete) { //视频上传完成 } else if(what == MsgIsUpdateProgress){ //视频上传进度,parameter表示最新进度位置 } else if(what == MsgIsFail) { //视频上传失败 } } @Override public void onLog(int what, int code, String info) { //预留上报,可暂时忽略该函数的实现 } });
使用上传SDK完成素材上传,需要以下3个步骤:
import com.ss.ttuploader.TTMaterialUploaderTop; TTMaterialUploaderTop mateUploaderTop; try { mateUploaderTop = new TTMaterialUploaderTop(); } catch (Exception e) { e.printStackTrace(); return null; }
note:需要关注下TTMaterialUploaderTop实例的生命周期,如设置为局部变量时,会导致TTMaterialUploaderTop实例析构销毁时,无法继续进行素材上传操作。
此处获取的鉴权参数authParam,用于第三步进行上传的鉴权配置
ex: JSONObject responseJson 如下: { "result":{ "AccessKeyID":"XXXXXX", "SecretAccessKey":"XXXXXX", "SessionToken":"XXXXXX", "ExpiredTime":"XXXXXX", "CurrentTime":"XXXXXX" } } String authParam = responseJson.getString("result");
参数 | 类型 | 释义 |
---|---|---|
mSecretAccessKey | String | 服务端鉴权参数:临时sk |
mAccessKeyId | String | 服务端鉴权参数:临时ak |
mSessionToken | String | 服务端鉴权参数:临时token |
mExpiredTime | String | 服务端鉴权参数:过期时间 |
mFilePathName | String | 文件路径 |
mSpace | String | 空间 |
mMateHostName | String | 上传域名 |
mFileType | String | 上传的文件类型 |
mServerParameter | String | 额外的要带上的上传参数 |
mRecordType | int | 标识此时为素材上传 |
mCategory | String | 上传素材的类型 |
mTitle | String | 标题 |
mTags | String | 标签,多个标签可用逗号隔开 |
mDescription | String | 描述信息 |
mFormat | String | 上传素材格式 |
说明: 【空间】相关说明请参考空间管理。
素材上传,设置配置时,需要关注以下几点
FileType (string) | Category (string) |
---|---|
media | video、audio |
image | image、dynamic_img |
object | subtitle、font |
import com.ss.ttuploader.TTMaterialUploaderConfigTop; TTMaterialUploaderConfigTop config = new TTMaterialUploaderConfigTop(); JSONObject sts = null; try { sts = new JSONObject(authParam); //authParam为鉴权串,为服务端后台的签名sdk生成。向服务端请求获取。 config.mSecretAccessKey = (String)sts.get("SecretAccessKey"); config.mAccessKeyId = (String)sts.get("AccessKeyID"); config.mSessionToken = (String)sts.get("SessionToken"); config.mExpiredTime = (String)sts.get("ExpiredTime"); } catch (JSONException e) { e.printStackTrace(); } config.mFilePathName = "/mnt/sdcard/test.mp4";//视频文件路径 config.mSpace = "store";//即空间名称,此参数说明请参考下方文档 config.mMateHostName = "vod.volcengineapi.com"; config.mFileType = "media"; config.mServerParameter = "key1=value1&key2=value2&";//希望透传的参数 config.mRecordType = 2;//标识上传类型为素材上传,必传 config.mCategory = "video"; config.mTitle = "testMateUpload"; config.mTags = "testMateTag,testMateTagOne"; config.mDescription = "testMateDescription"; config.mFormat = "XXXXXX"; mateUploaderTop.setUploadConfig(config);//配置素材上传参数策略
在快速开始
章节中,我们完成TTMaterialUploaderTop实例的创建,本章节介绍如何使用TTMaterialUploaderTop实例进行上传
mateUploaderTop.start();
mateUploaderTop.stop();
mateUploaderTop.close();
note:在上传完成、上传失败或者其他任何时候需要释放上传对象的时候,一定要调用其- (void)close,不然会引起crash或者内存泄漏。
对应的监听类为TTMaterialUploaderListenerTop
//注册回调 mateUploaderTop.setListener(new TTMaterialUploaderListenerTop() { @Override public void onNotify(int what, long parameter, TTMateInfoTop info) { if (what == MsgIsComplete) { //视频上传完成 } else if(what == MsgIsUpdateProgress){ //视频上传进度,parameter表示最新进度位置 } else if(what == MsgIsFail) { //视频上传失败 } } @Override public void onLog(int what, int code, String info) { //预留上报,可暂时忽略该函数的实现 } });
note:
当对应事件发生时,可获取该事件下的相应事件信息,如下表所示
事件 | 说明 |
---|---|
MsgIsComplete (视频上传完成) | 获取素材上传的相关信息,如mid、希望透传的参数callbackArgs、素材的元信息callbackArgs, 信息封装在TTMateInfoTop中,TTMateInfoTop结构如下表所示 |
MsgIsUpdateProgress (视频上传进度) | onNotify函数参数 parameter 表示进度 TTMateInfoTop结构中的mProgress同样表示进度 |
MsgIsFail (视频上传失败) | 获取上传失败时的错误码,封装在TTMateInfoTop中的mErrcode TTMateInfoTop结构如下表所示 |
TTMateInfoTop结构
无法复制加载中的内容
其中sourceInfo包含的源视频元信息:
成员变量 | 含义 |
---|---|
StoreUri | >存储资源的uri |
callbackArgs | 希望透传的参数 |
Md5 | Md5 |
Width | 视频/图片的宽 |
Height | 视频/图片的高 |
Size | 视频/图片文件大小 |
Format | 素材格式(视频格式,图片格式,object类型的素材不返回format) |
Duration | 时长 |
Bitrate | 码率 |
FileType | 文件类型 |
当您遇到素材上传的问题时,可以通过质量埋点上报的方式,提供相应日志,推进问题快速处理
目前可在素材上传完成( MsgIsComplete )、素材上传失败( MsgIsFail )、这两个时机进行质量埋点上报(建议客户针对具体场景和问题,在相应时机下提供埋点日志)
JSONArray jsonArray= UploadEventManager.instance.popAllMateEvents();