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

快速开始

最近更新时间2023.11.08 14:51:30

首次发布时间2022.10.17 21:06:08

本文为您介绍如何用 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) 等。

创建实例

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

BDVideoUploader mUploader = new BDVideoUploader();

设置上传的文件

设置上传的文件,支持 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

文件后缀

必传;不传报错。

设置分类

上传视频支持设置分类 ID,可在控制台系统设置 > 分类管理中查看或通过媒资分类OpenAPI 查询,素材不支持分类,示例代码如下:

public void setClassificationId(long classificationId)

上传控制

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

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

注意

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

设置回调

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

public void setListener(BDVideoUploaderListener listener)

public interface BDVideoUploaderListener {
    // 上传进度和上传状态的回调,详见下表 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 含义
MsgIsComplete0视频上传完成通知。调用 close() 来释放上传对象。0,无意义详见下方BDVideoInfo的参数说明
MsgIsFlushComplete50视频秒传完成通知。调用 close() 来释放上传对象。0,无意义详见下方BDVideoInfo的参数说明
MsgIsFail2视频上传失败通知。如果需重试,请调用 start() 重新上传;否则调用 close()来释放上传对象。详情请参见上传 SDK 错误码详见下方 BDVideoInfo 的参数说明
MsgIsUpdateProgress1视频上传进度更新。上传进度。取值范围为[0,100]无需关注
MessageIsDiskResumeInfoError120sdk 发现无法走断点续传时回调,同时 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

为空,目前不使用。