You need to enable JavaScript to run this app.
文档中心
视频点播

视频点播

复制全文
下载 pdf
历史文档
Android 素材上传 SDK(历史版本)
复制全文
下载 pdf
Android 素材上传 SDK(历史版本)

适用版本

此文档仅适用于 1.32.2.2 之前的版本。如果您使用的是 1.32.2.2 或之后的版本,请查看素材上传。

简介

ttuploader 是 Android 端使用的通用上传 SDK。已支持素材上传功能。
素材上传对应的监听类为TTMaterialUploaderListenerTop。
上报信息的结构体为TTMateInfoTop
质量统计类为UploadEventManager

快速开始

本模块介绍如何使用上传SDK以最快捷的方式进行素材上传。请在参考视频上传完成集成准备后,再进行该步骤。Android视频上传SDK
您可直接通过下述Demo,快速实现素材上传
详细划分为3个步骤,也在本章节对3个步骤进行了解释与说明

请在持有上传任务的类中声明成员变量,并在上传期间保持该对象的生命周期:

private TTMaterialUploaderTop mateUploaderTop;

以下初始化和上传操作在该类的方法中执行,不要再次声明同名局部变量。

素材上传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,appinfoMap); //初始化上传配置,建议早配置

// 使用类成员变量 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;

// 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实例设置上传数据源及其他配置

参数

类型

释义

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

上传素材格式

说明: 【空间】相关说明请参考空间管理。
素材上传,设置配置时,需要关注以下几点

  1. mRecordType 必须设置为2,标识此时为素材上传
  2. mFileType 与 mCategory 存在以下映射关系,素材上传时,会进行mFileType与mCategory的校验,使用时,需要注意相应的映射关系

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实例进行上传

  1. 开始上传
mateUploaderTop.start();
  1. 暂停上传
mateUploaderTop.stop();
  • 释放TTMaterialUploaderTop实例
mateUploaderTop.close();

note:上传完成、上传失败或其他需要释放上传对象的情况下,均应调用 mateUploaderTop.close() 释放实例,避免发生崩溃或内存泄漏。

  • 素材上传信息获取

对应的监听类为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
(视频上传完成)

获取素材上传的相关信息,包括素材 ID mMaterialId、透传参数 mCallbackArgs 和素材元信息 mSourceInfo。
信息封装在TTMateInfoTop中,TTMateInfoTop结构如下表所示

MsgIsUpdateProgress
(视频上传进度)

onNotify函数参数 parameter 表示进度
TTMateInfoTop结构中的mProgress同样表示进度

MsgIsFail
(视频上传失败)

获取上传失败时的错误码,封装在TTMateInfoTop中的mErrcode
TTMateInfoTop结构如下表所示

TTMateInfoTop 结构

字段类型说明
mMaterialIdString素材 ID,在上传完成回调中获取。
mSourceInfoString素材源文件元信息,在上传完成回调中获取。
mProgresslong上传进度,在上传进度回调中读取。
mErrcodelong上传错误码,在上传失败回调中读取。
mCallbackArgsString透传的回调参数,在上传完成回调中获取。

其中,mSourceInfo 包含的源文件元信息如下:

成员变量

含义

StoreUri

存储资源的uri

callbackArgs

希望透传的参数

Md5

Md5

Width

视频/图片的宽

Height

视频/图片的高

Size

视频/图片文件大小

Format

素材格式(视频格式,图片格式,object类型的素材不返回format)

Duration

时长

Bitrate

码率

FileType

文件类型

  • 质量埋点获取

当您遇到素材上传的问题时,可以通过质量埋点上报的方式,提供相应日志,推进问题快速处理
目前可在素材上传完成( MsgIsComplete )、素材上传失败( MsgIsFail )、这两个时机进行质量埋点上报(建议客户针对具体场景和问题,在相应时机下提供埋点日志)

JSONArray jsonArray= UploadEventManager.instance.popAllMateEvents();

最近更新时间:2026.09.17 17:43:28
这个页面对您有帮助吗?
有用
有用
无用
无用