腾讯云云点播Android 上传 SDK_音视频解决方案_同尘科技

云点播 2年前 (2023-11-28) 浏览 117

对于在 Android 平台上传视频的场景,云点播提供了 Android 上传 SDK。上传流程请参见 客户端上传指引。

SDK 名称 云点播 Android 上传 SDK
版本号 V1.1.18.0
SDK 介绍 为 App 的最终用户提供本地视频上传到云点播平台的场景
开发者 腾讯云计算(北京)有限责任公司
合规使用说明 云点播媒体上传 SDK 合规使用指南
个人信息处理规则 云点播媒体上传 SDK 隐私保护协议
下载 SDK 1. 单击下载 Android 上传 Demo 及源码,将下载好的压缩包解压,可以看到 Demo 目录。2. 上传源码在 Demo/app/src/main/java/com/tencent/ugcupload/demo/videoupload 目录下。

集成上传库和源码

1. 拷贝上传源码目录Demo/app/src/main/java/com/tencent/ugcupload/demo/videoupload到您的工程目录中,需要手动修改一下 package 名。2. 参考Demo/app/build.gradle在您的工程中添加依赖:

implementation 'com.qcloud.cos:cos-android-nobeacon:5.9.17'implementation 'com.qcloud.cos:quic:1.5.42'

说明:您也可以参考 手动集成 文档集成对应版本的依赖库。3. 使用视频上传需要网络、存储等相关访问权限,可在AndroidManifest.xml中增加如下权限声明:


4. 视频上传需要根据网络变化来刷新上传 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计算规则请参见 客户端上传签名。

取消和恢复上传

取消上传,调用TXUGCPublishcancleublish()接口。

mVideoPublish.canclePublish();

恢复上传,用相同的上传参数(视频路径和封面路径不变),再调用一次TXUGCPublishpublishVideo

断点续传

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

预上传

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



对音视频的解决方案有疑惑?想了解解决方案收费? 联系解决方案专家

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠

阿里云解决方案也看看?: 点击对比阿里云的解决方案

- 0人点赞 -

发表点评 (0条)

not found

暂无评论,你要说点什么吗?