You need to enable JavaScript to run this app.
视频点播

视频点播

Copy page
Download PDF
历史文档
Android 素材上传 SDK(历史版本)
Copy page
Download PDF
Android 素材上传 SDK(历史版本)

适用版本

此文档仅适用于 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();

Last updated: 2023.10.27 16:27:03