云点播 Android 上传 SDK

对于在 Android 平台上传视频的场景,云点播提供了 Android 上传 SDK。上传流程。

相关产品
云点播 产品页,含版本规格、价格与购买入口。
SDK 名称 云点播媒体上传 SDK
版本号 V1.3.1.0
SDK 介绍 为 App 的最终用户提供本地视频上传到云点播平台的场景
开发者 腾讯云计算(北京)有限责任公司
合规使用说明 云点播媒体上传 SDK 合规使用指南
个人信息处理规则 云点播媒体上传 SDK 个人信息保护规则
下载 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,可按照业务需要动态注册广播,示例如下:

@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() { @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 是

20、图片上传接口描述

初始化上传对象: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 是

21、错误码

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 签名过期。
赞 (0)
上一篇 4天前
下一篇 4天前