更新时间:2023-02-01 18:26:06
com.cnc.cloudv.sdk.upload.CloudvUploadHandler
public String upload(String uploadFilePath, String userId, String secretKey, UploadObserver uploadObserver, UploadFileParam uploadFileParam)
参数名 | 类型 | 必填 | 描述 |
---|---|---|---|
uploadfilePath | string | 必填 | 要上传文件的完整路径。 |
userId | string | 必填 | 账号ID,可以联系客户支持来获取您的账号ID。 |
secretKey | string | 必填 | AccessKey Secret,您可以在安全设置 > 访问控制 > 用户信息管理 > AccessKey管理下查看您的密钥信息。 |
uploadObserver | UploadObserver | 非必填 | 实现UploadObserver接口的对象,用于接收上传开始、上传成功、上传失败、上传进度的回调通知。 如需要自定义,详情请查看上传进度通知。 |
uploadFileParam | UploadFileParam | 非必填 | 用于上传过程中的各类参数设置,具体如下描述。 |
uploadFileParam格式说明
参数名 | 类型 | 必填 | 描述 |
---|---|---|---|
categoryNameBeanList | list | 非必填 | 视频类别,可以同时设置父类别和子类别。例如,[{“childName”:“child-category1”,“parentName”:“parent-category1”},{“ childName”:“child-category2”,“parentName”:“parent-category2”}]。 |
transCodeCombineName | string | 非必填 | 转码组合模板名。 如果设值,上传视频成功后会自动进行转码。 |
waterMarkName | string | 非必填 | 水印名称。仅在有通过transCodeCombineName制定具体转码模版时,该参数才有效。如果transCodeCombineName有值,而waterMarkName没值,则代表转码不加水印。 |
domain | string | 非必填 | 播放域名。填写域名名称,不填或者填写的域名不存在则会使用点播视频的默认域名。 |
类型 | 描述 |
---|---|
string | 视频ID,视频信息唯一标识。 |
public static void main(String[] args) {
try {
CloudvUploadHandler cloudvUploadHandler = new CloudvUploadHandler();
String filePath = "F:\\test.mp4";
String userId = "xxxxxx";
String secretKey = "xxxxxxxxxxxxxxxxxxxx";
CategoryNameBean categoryNameBean = new CategoryNameBean();
categoryNameBean.setParentName("Parent Category");
categoryNameBean.setChildName("Child Category");
List<CategoryNameBean> categoryNameBeanList = new ArrayList<CategoryNameBean>();
categoryNameBeanList.add(categoryNameBean);
String transCodeCombineName = "Transcoding Template Name";
String waterMarkName = "Watermark";
String domain = "Your domain";
UploadFileParam uploadFileParam = new UploadFileParam();
uploadFileParam.setCategoryNameBeanList(categoryNameBeanList);
uploadFileParam.setTransCodeCombineName(transCodeCombineName);
uploadFileParam.setWaterMarkName(waterMarkName);
uploadFileParam.setDomain(domain);
String videoId = cloudvUploadHandler.upload(filePath, userId, secretKey, null, uploadFileParam);
} catch (Exception e) {
e.printStackTrace();
}
}
一般情况下,默认配置即可满足上传的速度与稳定性。在一些特殊情况,如果上传速度或稳定性无法满足您的要求,您可以调整相关的上传参数,上传参数配置设置后将全局生效。
配置项 | 描述 | 默认值 | 配置实例 |
---|---|---|---|
BLOCK_SIZE | 分片上传时块的大小。取值范围:4M-32M,且为4的倍数。 | 4MB | BaseBlockUtil.BLOCK_SIZE = 32 * BaseBlockUtil.MB |
CHUNK_SIZE | 分片上传时片的大小。取值范围:4M-32M,且为4的倍数。不能大于设置的块大小。适当增大片大小可能会提高上传速度。 | 4MB | BaseBlockUtil.CHUNK_SIZE = 4 * BaseBlockUtil.MB |
THREAD_NUN | 分片上传时的并发数,配置范围为1-10。如果配置为5,表示可并发上传5个分片。 | 5 | BaseBlockUtil.THREAD_NUN = 5 |
FILE_BUFFER_SIZE | 读取要上传的文件的缓冲区大小。适当增大设置可能会提高上传速度,但内存使用也将会变大。需要设置为4的倍数。 | 4KB | BaseBlockUtil.FILE_BUFFER_SIZE = 1024 * BaseBlockUtil.KB |
TRIED_TIMES | 上传失败时自动重试的次数。 | 3 | BaseBlockUtil.TRIED_TIMES = 5 |
public static void main(String[] args) {
try {
//设置块大小
BaseBlockUtil.BLOCK_SIZE = 32 * BaseBlockUtil.MB;
//设置片大小
BaseBlockUtil.CHUNK_SIZE = 4 * BaseBlockUtil.MB;
//设置片并发数
BaseBlockUtil.THREAD_NUN = 5;
//设置文件缓冲区大小
BaseBlockUtil.FILE_BUFFER_SIZE = 2 * BaseBlockUtil.MB;
//设置上传失败重试次数
BaseBlockUtil.TRIED_TIMES = 5;
CloudvUploadHandler cloudvUploadHandler = new CloudvUploadHandler();
String filePath = "D:\\test.mp4";
String userId = "xxxxxx";
String secretKey = "xxxxxxxxxxxxxxxxxxxx";
String videoId = cloudvUploadHandler.upload(filePath, userId, secretKey, null);
} catch (Exception e) {
e.printStackTrace();
}
}
您可以自定义实现消费上传进度通知,包括获取上传进度(开始上传、上传进度、上传成功、上传失败)。
public interface UploadObserver {
/**
* 在开始上传之前调用,回传id
* @param id
* @param filePath
*/
void onBegin(String id, String filePath);
/**
* 上传成功后调用
* @param result
*/
void onSuccess(UploadResult result);
/**
* 上传发生异常时调用
* @param ex
*/
void onFail(Exception ex);
/**
* 每次上传分片成功后回调
*
* @param uploaded 已上传的字节数
* @param total 总字节数
*/
void onProcess(long uploaded, long total);
}
UploadObserver的实现方法:
public class CustomUploadObserver implements UploadObserver {
private static final Logger LOGGER = LoggerFactory.getLogger(CustomUploadObserver.class);
private String videoId;
private String filePath;
@Override
public void onBegin(String videoId, String filePath) {
this.videoId = videoId;
this.filePath = filePath;
LOGGER.info("videoId:{}, filePath:{}, 开始上传", videoId, filePath);
}
@Override
public void onSuccess(UploadResult result) {
LOGGER.info("videoId:{}, filePath:{}, 上传成功", videoId, filePath);
}
@Override
public void onFail(Exception ex) {
String message = "videoId:" + videoId + "filePath:" + filePath + ",上传出错";
LOGGER.error("message:{}, error:", message, ex);
throw new RuntimeException(message, ex);
}
@Override
public void onProcess(long uploaded, long total) {
LOGGER.info("videoId:{},filePath:{}, 上传进度:{},", videoId, filePath, uploaded * 100 / total + "%");
}
}
调用方法:
public static void main(String[] args) {
try {
CloudvUploadHandler cloudvUploadHandler = new CloudvUploadHandler();
String filePath = "D:\\test.mp4";
String userId = "xxxxxx";
String secretKey = "xxxxxxxxxxxxxxxxxxxx";
CustomUploadObserver uploadObserver = new CustomUploadObserver();
String videoId = cloudvUploadHandler.upload(filePath, userId, secretKey, uploadObserver);
} catch (Exception e) {
e.printStackTrace();
}
}