最近更新时间: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);
初始化操作是轻量的,建议放到 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, |
AppChannel | String | 必填,渠道号;您可自定义,如:小米应用商店 (xiaomi)、 |
实现创建实例的代码示例如下所示。
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 时,必须带有后缀,如:.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 |
上传控制支持的操作有开始上传、暂停上传和终止上传。
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 | 视频上传完成通知。调用 | 0,无意义 | 详见下方 |
MsgIsFlushComplete | 视频秒传完成通知。调用 | 0,无意义 | 详见下方 |
MsgIsFail | 视频上传失败通知。如果需重试,请调用 | 详情请参见上传 SDK 错误码 | 详见下方 |
MsgIsUpdateProgress | 视频上传进度更新。 | 上传进度。取值范围为[0,100] | 无需关注 |
MessageIsDiskResumeInfoError | sdk 发现无法走断点续传时回调,同时 fallback 到普通上传;接入方最终会得到上传成功或失败的回调。 | -1,无意义 | 无需关注 |
参数 | 说明 |
---|---|
mVideoId | 视频 Vid |
mCoverUri | 封面Uri |
mTosKey | TOS 存储 key |
mErrorCode | 错误码。详情请参见上传 SDK 错误码 |
mErrorMsg | 错误信息 |
mVideoMediaInfo | 媒资信息,例如:码率、格式、长度、宽高等,代码示例如下所示。
说明 媒资信息的详情请参见确认上传中的 SourceInfo 参数。 |
mCallbackArgs | 透传服务端回调信息 |
mLog | 为空,目前不使用。 |
mProgress | 上传进度。取值范围为[0,100] |
mEncryptionMeta | 为空,目前不使用。 |