帮你快速理解、总结文档立即下载

Android 上传 SDK

最近更新时间:2026-01-14 14:48:32
我的收藏
对于在 Android 平台上传视频的场景,云点播提供了 Android 上传 SDK。上传流程请参见 客户端上传指引。
SDK 名称
云点播媒体上传 SDK
版本号
V1.3.1.0
SDK 介绍
为 App 的最终用户提供本地视频上传到云点播平台的场景
开发者
腾讯云计算(北京)有限责任公司
合规使用说明
个人信息处理规则
下载 SDK
1. 单击下载 Android 上传 Demo 及源码,将下载好的压缩包解压,可以看到 Demo 目录。
2. 上传源码在 Demo/ugcupload 目录下。

集成上传库和源码

1. 拷贝上传源码目录Demo/ugcupload,即 ugcupload module 到您的工程目录中,如需要,可手动修改一下 package 名。
2. 如需要手动集成,可参考Demo/ugcupload/build.gradle在您的工程中添加依赖:
implementation 'com.qcloud.cos:cos-android-nobeacon:5.9.46'
说明:
您也可以参考 手动集成 文档集成对应版本的依赖库。
3. 如需使用 quic 能力,需要将module ugcquic 复制到您的工程目录中,并依赖到ugcupload module,如果需要手动集成可集成如下依赖:
implementation 'com.qcloud.cos:quic:1.5.46'
4. 使用视频上传需要网络、存储等相关访问权限,可在AndroidManifest.xml中增加如下权限声明:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
5. 视频上传需要根据网络变化来刷新上传 IP,可按照业务需要动态注册广播,示例如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// your code......
registerNetReceiver();
}

private void registerNetReceiver() {
if (null == mNetWorkStateReceiver) {
mNetWorkStateReceiver = new TVCNetWorkStateReceiver();
IntentFilter intentFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(mNetWorkStateReceiver, intentFilter);
}
}

private void unRegisterNetReceiver() {
if (null != mNetWorkStateReceiver) {
unregisterReceiver(mNetWorkStateReceiver);
}
}

@Override
protected void onDestroy() {
super.onDestroy();
// your code......
unRegisterNetReceiver();
}

简单视频上传

初始化上传对象

TXUGCPublish mVideoPublish = new TXUGCPublish(this.getApplicationContext(), "independence_android")

设置上传对象回调

mVideoPublish.setListener(new TXUGCPublishTypeDef.ITXVideoPublishListener() {
@Override
public void onPublishProgress(long uploadBytes, long totalBytes) {
mProgress.setProgress((int) (100*uploadBytes/totalBytes));
}

@Override
public void onPublishComplete(TXUGCPublishTypeDef.TXPublishResult result) {
mResultMsg.setText(result.retCode + " Msg:" + (result.retCode == 0 ? result.videoURL : result.descMsg));
}
});

构造上传参数

TXUGCPublishTypeDef.TXPublishParam param = new TXUGCPublishTypeDef.TXPublishParam();

param.signature = "xxx";
param.videoPath = "xxx";
signature计算规则请参见 客户端上传签名。

调用上传

int publishCode = mVideoPublish.publishVideo(param);

简单图片上传

初始化上传对象

TXUGCPublish mVideoPublish = new TXUGCPublish(this.getApplicationContext(), "independence_android")

设置上传对象回调

mVideoPublish.setListener(new TXUGCPublishTypeDef.ITXMediaPublishListener() {
@Override
public void onMediaPublishProgress(long uploadBytes, long totalBytes) {
mProgress.setProgress((int) (100*uploadBytes/totalBytes));
}
@Override
public void onMediaPublishComplete(TXUGCPublishTypeDef.TXMediaPublishResult mediaResult) {
mResultMsg.setText(result.retCode + " Msg:" + (result.retCode == 0 ? result.videoURL : result.descMsg));
}
});

构造上传参数

TXUGCPublishTypeDef.TXMediaPublishParam param = new TXUGCPublishTypeDef.TXMediaPublishParam();

param.signature = "xxx";
param.mediaPath = "xxx";
signature计算规则请参见 客户端上传签名。

调用上传

int publishCode = mVideoPublish.publishMedia(param);
说明:
上传方法根据用户文件的长度,自动选择普通上传以及分片上传,用户不用关心分片上传的每个步骤,即可实现分片上传。
如需上传至指定应用下,请参见 应用体系 - 客户端上传。

高级功能

携带封面

在上传参数中带上封面路径即可。
TXUGCPublishTypeDef.TXPublishParam param = new TXUGCPublishTypeDef.TXPublishParam();
param.signature = "xxx";
param.videoPath = "xxx";
param.coverPath = "xxx";
signature计算规则请参见 客户端上传签名。

取消和恢复上传

取消上传,调用TXUGCPublish的cancleublish()接口。
mVideoPublish.canclePublish();
恢复上传,用相同的上传参数(视频路径和封面路径不变),再调用一次TXUGCPublish的publishVideo。

断点续传

在视频上传过程中,云点播支持断点续传,即当上传意外终止时,用户再次上传该文件,可以从中断处继续上传,减少重复上传时间。断点续传的有效时间是1天,即同一个视频上传被中断,那么1天内再次上传可以直接从断点处上传,超过1天默认会重新上传完整视频。
上传参数中的enableResume为断点续传开关,默认是开启的。

预上传

在实际上传过程中,很大部分的错误是由于网络连接失败或超时导致的,为优化此类问题,我们增加了预上传优化逻辑。预上传包含:HTTPDNS 解析、获取建议上传地域、探测最优上传地域。
建议您在 App 启动的时候调用TXUGCPublishOptCenter.getInstance().prepareUpload(signature),预上传模块会把<域名,IP>映射表和最优上传地域缓存在本地,如果此前动态注册了网络广播,订阅到网络切换时,清空缓存并自动刷新。
signature计算规则请参见 客户端上传签名。

开启 https 上传

将上传参数中 TXPublishParam 中的 enableHTTPS 置为 true 即可,默认 false。
TXUGCPublishTypeDef.TXPublishParam param = new TXUGCPublishTypeDef.TXPublishParam();
param.enableHttps = true;

关闭日志

关闭日志需要通过 TXUGCPublish 的setIsDebug方法进行操作,默认开启。开启的情况下,会打印 logcat 日志,同时也会将 log 保存到 app 私有目录下。
// false 关闭日志
mTXUGCPublish.setIsDebug(false);

视频上传接口描述

初始化上传对象:TXUGCPublish
参数名称
参数描述
类型
必填
context
application 上下文。
Context
是
customKey
用于区分不同的用户,建议使用 App 的账号 ID,方便后续定位问题。
String
否
设置点播 appId:TXUGCPublish.setAppId
参数名称
参数描述
类型
必填
appId
点播 appId。
int
是
上传视频:TXUGCPublish.publishVideo
参数名称
参数描述
类型
必填
param
上传参数。
TXUGCPublishTypeDef.TXPublishParam
是
上传参数:TXUGCPublishTypeDef.TXPublishParam
参数名称
参数描述
类型
必填
signature
String
是
videoPath
本地视频文件路径。
String
是
coverPath
本地封面文件路径,默认不带封面文件。
String
否
enableResume
是否启动断点续传,默认开启。
boolean
否
enableHttps
是否启动 HTTPS,默认关闭。
boolean
否
fileName
上传到腾讯云的视频文件名称,不填默认用本地文件名。
String
否
enablePreparePublish
是否开启预上传机制,默认开启。预上传机制可以大幅提升文件的上传质量
boolean
否
sliceSize
分片大小,支持最小为1M,最大10M,默认为上传文件大小除以10
long
否
concurrentCount
分片上传最大并发数量,默认为4个
int
否
trafficLimit
限速值设置范围为819200 ~ 838860800,即100KB/s ~ 100MB/s,如果超出该范围会返回400错误。不建议将该值设置太小,防止超时。-1 表示不限速
long
否
uploadResumeController
续点控制器,可自行实现续点键值的计算和保存,默认使用 md5 计算文件键值
IUploadResumeController
否
设置上传回调:TXUGCPublish.setListener
参数名称
参数描述
类型
必填
listener
上传进度和结果回调订阅。
TXUGCPublishTypeDef.ITXVideoPublishListener
是
进度回调:TXUGCPublishTypeDef.ITXVideoPublishListener.onPublishProgress
变量名称
变量描述
类型
uploadBytes
已上传的字节数。
long
totalBytes
总字节数。
long
结果回调:TXUGCPublishTypeDef.ITXVideoPublishListener.onPublishComplete
变量名称
变量描述
类型
result
上传结果。
TXUGCPublishTypeDef.TXPublishResult
上传结果:TXUGCPublishTypeDef.TXPublishResult
成员变量名称
变量说明
类型
retCode
结果码。
int
descMsg
上传失败的错误描述。
String
videoId
点播视频文件 ID。
String
videoURL
视频存储地址。
String
coverURL
封面存储地址。
String
预上传:TXUGCPublishOptCenter.prepareUpload
参数名称
参数描述
类型
必填
signature
String
是

图片上传接口描述

初始化上传对象:TXUGCPublish
参数名称
参数描述
类型
必填
context
application 上下文。
Context
是
customKey
用于区分不同的用户,建议使用 App 的账号 ID,方便后续定位问题。
String
否
设置点播 appId:TXUGCPublish.setAppId
参数名称
参数描述
类型
必填
appId
点播 appId。
int
是
上传图片:TXUGCPublish.publishMedia
参数名称
参数描述
类型
必填
param
上传参数。
TXUGCPublishTypeDef.TXMediaPublishParam
是
上传参数:TXUGCPublishTypeDef.TXMediaPublishParam
参数名称
参数描述
类型
必填
signature
String
是
mediaPath
本地图片文件路径。
String
是
enableResume
是否启动断点续传,默认开启。
boolean
否
enableHttps
是否启动 HTTPS,默认关闭。
boolean
否
fileName
上传到腾讯云的视频文件名称,不填默认用本地文件名。
String
否
enablePreparePublish
是否开启预上传机制,默认开启。预上传机制可以大幅提升文件的上传质量
boolean
否
sliceSize
分片大小,支持最小为1M,最大10M,默认为上传文件大小除以10
long
否
concurrentCount
分片上传最大并发数量,默认为4个
int
否
trafficLimit
限速值设置范围为819200 ~ 838860800,即100KB/s ~ 100MB/s,如果超出该范围会返回400错误。不建议将该值设置太小,防止超时。-1 表示不限速
long
否
uploadResumeController
续点控制器,可自行实现续点键值的计算和保存,默认使用MD5计算文件键值
IUploadResumeController
否
设置上传回调:TXUGCPublish.setListener
参数名称
参数描述
类型
必填
listener
上传进度和结果回调订阅。
TXUGCPublishTypeDef.ITXMediaPublishListener
是
进度回调:TXUGCPublishTypeDef.ITXMediaPublishListener.onPublishProgress
变量名称
变量描述
类型
uploadBytes
已上传的字节数。
long
totalBytes
总字节数。
long
结果回调:TXUGCPublishTypeDef.ITXMediaPublishListener.onPublishComplete
变量名称
变量描述
类型
result
上传结果。
TXUGCPublishTypeDef.TXPublishResult
上传结果:TXUGCPublishTypeDef.TXMediaPublishResult
成员变量名称
变量说明
类型
retCode
结果码。
int
descMsg
上传失败的错误描述。
String
mediaId
点播媒体文件 ID。
String
mediaURL
媒体资源存储地址。
String
预上传:TXUGCPublishOptCenter.prepareUpload
参数名称
参数描述
类型
必填
signature
String
是

错误码

SDK 通过TXUGCPublishTypeDef.ITXVideoPublishListener\\ITXMediaPublishListener接口来订阅视频上传相关的状态。因此,可以用TXUGCPublishTypeDef.TXPublishResult\\TXMediaPublishResult中的retCode来确认视频上传的情况。
状态码
在 TVCConstants 中所对应的常量
含义
0
NO_ERROR
上传成功。
1001
ERR_UGC_REQUEST_FAILED
请求上传失败,通常是客户端签名过期或者非法,需要 App 重新申请签名。
1002
ERR_UGC_PARSE_FAILED
请求信息解析失败。
1003
ERR_UPLOAD_VIDEO_FAILED
上传视频失败。
1004
ERR_UPLOAD_COVER_FAILED
上传封面失败。
1005
ERR_UGC_FINISH_REQUEST_FAILED
结束上传请求失败。
1006
ERR_UGC_FINISH_RESPONSE_FAILED
结束上传响应错误。
1007
ERR_CLIENT_BUSY
客户端正忙(对象无法处理更多请求)。
1008
ERR_FILE_NOEXIT
上传文件不存在。
1009
ERR_UGC_PUBLISHING
视频正在上传中。
1010
ERR_UGC_INVALID_PARAM
上传参数为空。
1012
ERR_UGC_INVALID_SIGNATURE
视频上传 signature 为空。
1013
ERR_UGC_INVALID_VIDOPATH
视频文件的路径为空。
1014
ERR_UGC_INVALID_VIDEO_FILE
当前路径下视频文件不存在。
1015
ERR_UGC_FILE_NAME
视频上传文件名太长(超过40)或含有特殊字符。
1016
ERR_UGC_INVALID_COVER_PATH
视频文件封面路径不对,文件不存在。
1017
ERR_USER_CANCEL
用户取消上传。
1020
ERR_UPLOAD_SIGN_EXPIRED
签名过期。