通过阅读本文,您可以了解短视频上传的方式和基本流程。
操作步骤
- 请求STS。更多信息,请参见使用STS方式上传。说明 短视频上传只支持STS方式上传,要想通过上传地址和凭证方式进行短视频上传请使用
VODUploadClient
分别上传封面图片和视频。 - 初始化上传实例。
- 声明
VODSVideoUploadClient
属性,不能是局部变量。//初始化短视频上传对象 VODSVideoUploadClient vodsVideoUploadClient = new VODSVideoUploadClientImpl(this.getApplicationContext()); vodsVideoUploadClient.init();
- 构建上传参数。
//构建上传参数 //参数请确保存在,如不存在SDK内部将会直接将错误throw Exception //文件路径保证存在之外因为Android 6.0之后需要动态获取权限,请开发者自行实现获取"文件读写权限" VodHttpClientConfig vodHttpClientConfig = new VodHttpClientConfig.Builder() .setMaxRetryCount(2)//重试次数 .setConnectionTimeout(15 * 1000)//连接超时 .setSocketTimeout(15 * 1000)//socket超时 .build(); //构建短视频VideoInfo,常见的描述、标题、详情都可以设置 SvideoInfo svideoInfo = new SvideoInfo(); svideoInfo.setTitle(new File(videoPath).getName());//标题 svideoInfo.setDesc("");//文件详情 svideoInfo.setCateId(1);//分类ID //构建点播上传参数(重要) VodSessionCreateInfo vodSessionCreateInfo =new VodSessionCreateInfo.Builder() .setImagePath(imagePath)//图片地址 .setVideoPath(videoPath)//视频地址 .setAccessKeyId(accessKeyId)//临时accessKeyId .setAccessKeySecret(accessKeySecret)//临时accessKeySecret .setSecurityToken(securityToken)//securityToken .setExpriedTime(expriedTime)//STStoken过期时间 .setRequestID(requestID)//requestID,开发者可以传将获取STS返回的requestID设置也可以不设 .setIsTranscode(true)//是否转码,如开启转码请AppSever务必监听服务端转码成功的通知 .setSvideoInfo(svideoInfo)//短视频信息 .setVodHttpClientConfig(vodHttpClientConfig)//网络参数 .build();
- 声明
- 回调设置。
启动上传前需要设置上传回调,需要实现
VODSVideoUploadCallback
回调:vodsVideoUploadClient.uploadWithVideoAndImg(vodSessionCreateInfo, new VODSVideoUploadCallback() { @Override public void onUploadSucceed(String videoId, String imageUrl) { //上传成功返回视频ID和图片URL Log.d(TAG,"onUploadSucceed"+ "videoId:"+ videoId + "imageUrl" + imageUrl); } @Override public void onUploadFailed(String code, String message) { //上传失败返回错误码和message,错误码有详细的错误信息请开发者仔细阅读 Log.d(TAG,"onUploadFailed" + "code" + code + "message" + message); } @Override public void onUploadProgress(long uploadedSize, long totalSize) { //上传的进度回调,非UI线程 Log.d(TAG,"onUploadProgress" + uploadedSize * 100 / totalSize); progress = uploadedSize * 100 / totalSize; handler.sendEmptyMessage(0); } @Override public void onSTSTokenExpried() { Log.d(TAG,"onSTSTokenExpried"); //STS token过期之后刷新STStoken,如正在上传将会断点续传 vodsVideoUploadClient.refreshSTSToken(accessKeyId,accessKeySecret,securityToken,expriedTime); } @Override public void onUploadRetry(String code, String message) { //上传重试的提醒 Log.d(TAG,"onUploadRetry" + "code" + code + "message" + message); } @Override public void onUploadRetryResume() { //上传重试成功的回调,告知用户重试成功 Log.d(TAG,"onUploadRetryResume"); } });
- 启动上传。
上传控制方法如下所示:
- 暂停上传。
//需要保证跟resume成对出现 vodsVideoUploadClient.pause();
- 恢复上传。
//需要保证跟pause成对出现 vodsVideoUploadClient.resume();
- 取消上传。
//取消上传之后,上传流程结束,不能再调用resume恢复 vodsVideoUploadClient.cancel();
- 暂停上传。
- 回调处理。
- 上传进度
每上传一个分片,会触发
onUploadProgress
回调,回调参数包括已上传文件大小uploadedSize
和总文件大小totalSize
。 - 上传成功
上传成功时,会触发
onUploadSucceed
回调。回调包含上传结果的videoId
和imageUrl
属性。 - 上传失败
上传失败时,会触发
onUploadFailed
回调。在该回调方法中,可以通过code
和message
查看具体原因,并在页面上提示。更多错误码信息,请参见错误码表和OSS错误码。 - 凭证过期处理
STS过期,会触发
uploadTokenExpired
回调。在该回调方法中,可以向AppServer重新请求新的STS凭证,并调用以下方法继续上传。refreshSTSToken(accessKeyId,accessKeySecret,securityToken,expriedTime);
- 超时处理
上传超时,会触发
uploadRetry
回调并自动重试。在该回调方法中,可以在页面上给予提示或者调用cancel
方法停止上传。此外,可以设置maxRetryCount
属性,指定最大重试次数。超时重试可以继续上传时,会触发uploadRetryResume
回调并恢复上传。
- 上传进度
在文档使用中是否遇到以下问题
更多建议
匿名提交