SDK 名称 | 云点播 Android 上传 SDK |
版本号 | V1.1.23.0 |
SDK 介绍 | 为 App 的最终用户提供本地视频上传到云点播平台的场景 |
开发者 | 腾讯云计算(北京)有限责任公司 |
下载 SDK | 1. 单击下载 Android 上传 Demo 及源码,将下载好的压缩包解压,可以看到 Demo 目录。 2. 上传源码在 Demo/app/src/main/java/com/tencent/ugcupload/demo/videoupload 目录下。 |
Demo/app/src/main/java/com/tencent/ugcupload/demo/videoupload
到您的工程目录中,需要手动修改一下 package 名。Demo/app/build.gradle
在您的工程中添加依赖:implementation 'com.qcloud.cos:cos-android-nobeacon:5.9.25'implementation 'com.qcloud.cos:quic:1.5.43'
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"/>
@Overrideprotected 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);}}@Overrideprotected void onDestroy() {super.onDestroy();// your code......unRegisterNetReceiver();}
TXUGCPublish mVideoPublish = new TXUGCPublish(this.getApplicationContext(), "independence_android")
mVideoPublish.setListener(new TXUGCPublishTypeDef.ITXVideoPublishListener() {@Overridepublic void onPublishProgress(long uploadBytes, long totalBytes) {mProgress.setProgress((int) (100*uploadBytes/totalBytes));}@Overridepublic 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";
int publishCode = mVideoPublish.publishVideo(param);
TXUGCPublish mVideoPublish = new TXUGCPublish(this.getApplicationContext(), "independence_android")
mVideoPublish.setListener(new TXUGCPublishTypeDef.ITXMediaPublishListener() {@Overridepublic void onMediaPublishProgress(long uploadBytes, long totalBytes) {mProgress.setProgress((int) (100*uploadBytes/totalBytes));}@Overridepublic 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";
int publishCode = mVideoPublish.publishMedia(param);
TXUGCPublishTypeDef.TXPublishParam param = new TXUGCPublishTypeDef.TXPublishParam();param.signature = "xxx";param.videoPath = "xxx";param.coverPath = "xxx";
TXUGCPublish
的cancleublish()
接口。mVideoPublish.canclePublish();
TXUGCPublish
的publishVideo
。enableResume
为断点续传开关,默认是开启的。TXUGCPublishOptCenter.getInstance().prepareUpload(signature)
,预上传模块会把<域名,IP>
映射表和最优上传地域缓存在本地。如果此前动态注册了网络广播,订阅到网络切换时,清空缓存并自动刷新。TXUGCPublishTypeDef.TXPublishParam param = new TXUGCPublishTypeDef.TXPublishParam();param.enableHttps = true;
setIsDebug
方法进行操作,默认开启。开启的情况下,会打印 logcat 日志,同时也会将 log 保存到 app 私有目录下。// false 关闭日志mTXUGCPublish.setIsDebug(false);
TXUGCPublish
参数名称 | 参数描述 | 类型 | 必填 |
context | application 上下文。 | Context | 是 |
customKey | 用于区分不同的用户,建议使用 App 的账号 ID,方便后续定位问题。 | String | 否 |
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 | 否 |
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 | 是 |
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 | 签名过期。 |
本页内容是否解决了您的问题?