You need to enable JavaScript to run this app.
导航

Android 素材上传 SDK(历史版本)

最近更新时间2023.10.27 16:27:03

首次发布时间2021.08.11 11:03:16

适用版本

此文档仅适用于 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个步骤:

  • 创建视频上传对象TTMaterialUploaderTop
  • 获取鉴权authParam
  • TTMaterialUploaderTop实例设置上传数据源及其他配置
  1. 创建素材上传对象TTMaterialUploaderTop
import com.ss.ttuploader.TTMaterialUploaderTop;

TTMaterialUploaderTop mateUploaderTop;
try {
    mateUploaderTop = new TTMaterialUploaderTop();
} catch (Exception e) {
    e.printStackTrace();
    return null;
}

note:需要关注下TTMaterialUploaderTop实例的生命周期,如设置为局部变量时,会导致TTMaterialUploaderTop实例析构销毁时,无法继续进行素材上传操作。

  1. 获取鉴权authParam

此处获取的鉴权参数authParam,用于第三步进行上传的鉴权配置

ex:
JSONObject responseJson 如下:
{
    "result":{
        "AccessKeyID":"XXXXXX",
        "SecretAccessKey":"XXXXXX",
        "SessionToken":"XXXXXX",
        "ExpiredTime":"XXXXXX",
        "CurrentTime":"XXXXXX"
    }
}

String authParam = responseJson.getString("result");
  1. TTMaterialUploaderTop实例设置上传数据源及其他配置
参数类型释义
mSecretAccessKeyString服务端鉴权参数:临时sk
mAccessKeyIdString服务端鉴权参数:临时ak
mSessionTokenString服务端鉴权参数:临时token
mExpiredTimeString服务端鉴权参数:过期时间
mFilePathNameString文件路径
mSpaceString空间
mMateHostNameString上传域名
mFileTypeString上传的文件类型
mServerParameterString额外的要带上的上传参数
mRecordTypeint标识此时为素材上传
mCategoryString上传素材的类型
mTitleString标题
mTagsString标签,多个标签可用逗号隔开
mDescriptionString描述信息
mFormatString上传素材格式

说明: 【空间】相关说明请参考空间管理

素材上传,设置配置时,需要关注以下几点

  1. mRecordType 必须设置为2,标识此时为素材上传
  2. mFileType 与 mCategory 存在以下映射关系,素材上传时,会进行mFileType与mCategory的校验,使用时,需要注意相应的映射关系
FileType (string)Category (string)
mediavideo、audio
imageimage、dynamic_img
objectsubtitle、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实例进行上传

  1. 开始上传
mateUploaderTop.start();
  1. 暂停上传
mateUploaderTop.stop();
  • 释放TTMaterialUploaderTop实例
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();