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

快速开始

最近更新时间2023.10.31 11:49:16

首次发布时间2022.10.18 16:05:12

本文为您介绍如何用 Android 上传 SDK 以简单便捷的方式上传素材。

适用版本

此文档适用于 TTSDK 1.32.2 及以上的版本,其他版本请参考快速开始(历史版本)

前提条件

您已完成上传 SDK 的集成准备

日志调试

开发的过程中,建议打开 logcat 日志,便于调试,排查问题。

说明

Release 线上版本一定要关闭,目的是减少性能开销。

BDUploadLog.turnOn(LOG_DEBUG, 1);
BDUploadUtil.setEnableNativeLog(true);

初始化 SDK

初始化操作是轻量的,建议放到 Application#onCreate 中执行,保障初始化顺序。

Env.init(new Config.Builder()
        .setApplicationContext(context)
        .setAppID("your app id")
        .setAppName("your app English name")
        // 合法版本号应大于、等于 3 位,如:"1.3.2"
        .setAppVersion(BuildConfig.VERSION_NAME)
        .setAppChannel("channel name")
        .build());
  • 参数获取:请参考管理应用,在控制台创建应用后获取。
  • 详细的参数说明如下表所示。

参数

类型

说明

AppId

String

必填,App ID,从控制台应用管理获取。

AppName

String

必填,App 英文名,从控制台应用管理获取。

AppVersion

String

必填,App 版本号,使用 BuildConfig.VERSION_NAME,
合法版本号应包含大于、等于 2 个分隔符,如:"1.3.2"

AppChannel

String

必填,渠道号;您可自定义,如:小米应用商店 (xiaomi)、
华为应用市场 (huawei) 等。

创建实例

实现创建实例的代码示例如下所示。

BDMaterialUploader mUploader = new BDMaterialUploader();

设置上传的文件

设置上传的文件,支持 2 种方式,任选其一。

实现的代码示例如下所示。
mUploader.setPathName("/data/user/0/xxx/files/test.mp4"); 

设置鉴权

从接入方自己的 AppServer 获取鉴权参数设置给 SDK。鉴权参数说明详见客户端上传。实现的代码示例如下所示。

mUploader.setTopAccessKey("xxx");
mUploader.setTopSecretKey("xxx");
mUploader.setTopSessionToken("xxx");

设置空间

实现设置空间的代码示例如下所示。

mUploader.setSpaceName("xxx");

说明

空间相关说明请参考空间管理

设置云端存储路径

上传完成后,文件在云端的存储路径形式如下所示。
StoreUri = {{BucketName}}/{{FilePrefix}}{{FileTitle}}{{FileExtension}}
其中 BucketName 不需要接入方设置,其他几个参数说明如下表示。

参数

含义

是否必选

描述

FilePrefix

文件前缀

路径字符串,支持多级路径(如 path/to/foo/bar/)

FileTitle

文件标题

如果不手动设置,SDK 会自动生成 32 位字符串作为文件标题

FileExtension

文件后缀

最终完整路径中必须包含 FileExtension,否则会上传失败。

设置云端存储路径,支持 2 种 方式。您可根据自身需求,任选其一。

设置完整的 FileName,组成方式为 FileName = FilePrefix + FileTitle + FileExtension

注意

设置 FileName 时,必须带有后缀,如:.mp4、.mp3 等,否则会报错。

// 例 1,云端的存储路径:tos-pathxxx/volc/test.mp4
mUploader.setFileName("volc/test.mp4"); 
// 例 2,云端的存储路径:tos-pathxxx/test.mp4
mUploader.setFileName("test.mp4");

例如:tos-pathxxx/pathxxx/test.mp4,则对应关系如下所示。

参数(示例)

含义

描述

tos-pathxxx/

存储桶名称

接入方不用设置。

pathxxx/

文件前缀

可选。

test

文件标题

可选;如果不设置,SDK 会自动生成一个 32 位字符串作为文件名。

.mp4

文件后缀

必传;不传报错。

设置素材信息

设置素材信息接口的代码示例如下所示。

public void setFileType(String fileType)

public void setTitle(String title)

public void setTags(String tags)

public void setDescription(String description)

public void setCategory(String category)

public void setFormat(String format) 

详细的参数说明如下表所示。

参数

类型

描述

FileType

String

文件类型,必填。可选值为 media、image、object。

Title

String

标题。

Tags

String

多个标签可用逗号隔开。

Description

String

描述信息。

Category

String

素材分类。当上传类型为素材时,可以指定素材的分类信息,必填。可选值为 video、audio、image、dynamic_img、subtitle、font。分别对应:视频、音频、图片、动图、字幕、字体。

Format

String

格式。若传入 Format 的话,以您传入参数为准,否则以系统识别出的 Format 为准。若遇到特殊文件无法识别,Format 可能为空。

FileType 取值和 Category 对应关系

FileType 取值

数据类型

对应 Category 取值

media

String

video、audio

image

String

image、dynamic_img

object

String

subtitle、font

上传控制

上传控制支持的操作有开始上传、暂停上传和终止上传。

SDK 内部在执行此函数的时候,会新建线程,不会阻塞。实现开始上传的代码示例如下所示。
mUploader.start();

注意

上传完成后,请调用close(),否则会内存泄漏。

设置回调

回调的线程:在 A 线程创建 Uploader 实例,如果 A 线程存在 Looper,则在 A 线程回调;否则在主线程回调。

public void setListener(BDMaterialUploaderListener listener)

public interface BDMaterialUploaderListener {
    // 上传进度和上传状态的回调,详见下表 onNotify 回调说明
    void onNotify(int what, long parameter, BDVideoInfo info);
    
    // 关键日志回调,接入方可将回调信息上传到自己的服务器,可通过日志排查线上问题。
    // 需要通过 mUploader.setEnableLogCallBack(true) 开启才能生效。
    // 不使用空实现即可。
    void onLog(int what, int code, String info);
    
    // 上传出错重试时回调;由接入方检查网络状态,
    // 返回 1 sdk 认为有网,进行重试;
    // 返回 0 sdk 认为无网,不再进行重试
    // 如接入方不想检查网络状态,返回 1 即可,SDK 会在重试次数、超时时间内重试。
    int videoUploadCheckNetState(int errorCode, int tryCount);

    // 暂未使用
    String getStringFromExtern(int key);
}

onNotify 回调说明如下表所示。

消息类型 what

说明

对应 parameter 含义

对应 info 含义

MsgIsComplete

视频上传完成通知。调用 close() 来释放上传对象。

0,无意义

详见下方BDVideoInfo的参数说明

MsgIsFlushComplete

视频秒传完成通知。调用 close() 来释放上传对象。

0,无意义

详见下方BDVideoInfo的参数说明

MsgIsFail

视频上传失败通知。如果需重试,请调用 start() 重新上传;否则调用 close()来释放上传对象。

详情请参见上传 SDK 错误码

详见下方 BDVideoInfo 的参数说明

MsgIsUpdateProgress

视频上传进度更新。

上传进度。取值范围为[0,100]

无需关注

MessageIsDiskResumeInfoError

sdk 发现无法走断点续传时回调,同时 fallback 到普通上传;接入方最终会得到上传成功或失败的回调。

-1,无意义

无需关注

BDVideoInfo

参数

说明

mVideoId

视频 Vid

mCoverUri

封面Uri

mTosKey

TOS 存储 key

mErrorCode

错误码。详情请参见上传 SDK 错误码

mErrorMsg

错误信息

mVideoMediaInfo

媒资信息,例如:码率、格式、长度、宽高等,代码示例如下所示。

{"Bitrate":463419,"Duration":39.726999999999997,"FileType":"video","Format":"MP4","Height":360,"Md5":"53f62abe3c29d0654b3405af7***7060","Size":2301285,"StoreUri":"tos-vod-cn-v-309be6ba73***b04/cd404e7bef654554b638422***7c0c40","Width":640}

说明

媒资信息的详情请参见确认上传中的 SourceInfo 参数。

mCallbackArgs

透传服务端回调信息

mLog

为空,目前不使用。

mProgress

上传进度。取值范围为[0,100]

mEncryptionMeta

为空,目前不使用。