Upload Service

1、上传本地视频

描述

1、快捷上传多种格式的媒体文件。
2、支持上传时的各种设置,如文件标题、描述、标签、上传目录、是否开启课件优化处理等。
3、采用分片并发上传的方式,支持断点续传,续传请查看当前文档下一个方法。
4、PolyvUploadClient.uploadVideo()方法三个参数分别为 分片上传本地视频请求实体、上传回调、是否打印日志
接口地址(仅做说明使用):https://api.polyv.net/

调用约束

1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看

单元测试

	@Test
	public void testUploadVideoPart() {
        VodUploadVideoRequest vodUploadVideoRequest = new VodUploadVideoRequest();
        Boolean vodUploadVideoResponse;
        String videoFile = getClass().getResource("/file/polyv.mp4").getPath();
        //构建视频上传客户端,可传入分片大小(默认为1MB,大小限定为100KB~5GB),分片文件夹路径(默认为checkpoint_location),上传线程数(默认为5个),此对象全局唯一
        PolyvUploadClient client = new PolyvUploadClient(1024 * 1024, "checkpoint_location", 5);
        vodUploadVideoRequest.setFile(new File(videoFile))
                .setTitle("保利威宣传视频")
                .setDescribe("保利威是全球领先的企业直播服务商,隶属于广州易方信息科技股份有限公司,致力于通过可集成、可定制的视频直播技术,为企业搭建自主私域直播系统,并提供直播全流程运营与现场执行服务。")
                .setTag("宣传视频")
                //.setCategoryId("1622165542751")
                .setScreenCap(0)
                .setKeepSource(0)
                .setState("junitTest");
        vodUploadVideoResponse = client.buildOSSService(vodUploadVideoRequest).upload(new UploadCallBack() {
            @Override
            public void start(String videoPoolId) {
                log.debug("开始分片上传视频,videoId:{}", videoPoolId);
            }
            @Override
            public void process(String videoPoolId, long hasUploadBytes, long totalFileBytes) {
                log.debug("分片上传成功,videoId:{},已上传分片大小:{},总视频大小{}", videoPoolId, hasUploadBytes, totalFileBytes);
            }
            @Override
            public void complete(String videoPoolId) {
                log.debug("所有分片上传成功,videoId:{}", videoPoolId);
            }
            @Override
            public void success(String videoPoolId) {
                log.debug("所有分片上传成功并处理完成,请等待后台审核,videoId:{}", videoPoolId);
            }
            @Override
            public void error(String videoPoolId, UploadErrorMsg errorMsg) {
                log.error("上传视频失败,videoId:{},错误信息:{}", videoPoolId, errorMsg);
            }
        }, false);
    }

单元测试说明

1、请求正确,返回Boolean对象,B端依据此对象处理业务逻辑;

2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.VodxxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]

3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]

请求入参描述

返回对象描述

上传成功返回true,上传失败返回false,回调error方法返回视频id,可以调用“断点续传本地视频”进行续传视频。


2、断点续传本地视频

描述

断点续传未上传成功的本地视频文件
PolyvUploadClient.uploadVideo()方法三个参数分别为 分片上传本地视频请求实体、上传回调、是否打印日志
接口地址(仅做说明使用):https://api.polyv.net/

调用约束

1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看

单元测试

	@Test
	public void testUploadVideoPartSequel() {
        VodUploadVideoPartsRequest vodUploadVideoPartsRequest = new VodUploadVideoPartsRequest();
        Boolean vodUploadVideoResponse;
        String videoFile = getClass().getResource("/file/polyv.mp4").getPath();
        String videoId = "ac59aff03d153b3ed5d7f64194279af9_a";
        vodUploadVideoPartsRequest.setFile(new File(videoFile)).setVideoId(videoId);
        try {
            PolyvUploadClient client = new PolyvUploadClient(1024 * 1024, "checkpoint_location", 5);
            vodUploadVideoResponse = client.buildOSSService(vodUploadVideoPartsRequest).upload(new UploadCallBack() {
                @Override
                public void start(String videoPoolId) {
                    log.debug("开始分片上传视频,videoId:{}", videoPoolId);
                }
                @Override
                public void process(String videoPoolId, long hasUploadBytes, long totalFileBytes) {
                    log.debug("分片上传成功,videoId:{},已上传分片大小:{},总视频大小{}", videoPoolId, hasUploadBytes, totalFileBytes);
                }
                @Override
                public void complete(String videoPoolId) {
                    log.debug("所有分片上传成功,videoId:{}", videoPoolId);
                }
                @Override
                public void success(String videoPoolId) {
                    log.debug("所有分片上传成功并处理完成,请等待后台审核,videoId:{}", videoPoolId);
                }
                @Override
                public void error(String videoPoolId, UploadErrorMsg errorMsg) {
                    log.error("上传视频失败,videoId:{},错误信息:{}", videoPoolId, errorMsg);
                }
            }, false);
            log.debug("测试续传视频返回状态:{}", vodUploadVideoResponse);
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }

单元测试说明

1、请求正确,返回Boolean对象,B端依据此对象处理业务逻辑;

2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.VodxxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]

3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]

请求入参描述

返回对象描述

上传成功返回视频id,上传失败回调也返回视频id


3、上传远程视频

描述

上传远程视频(异步上传),具体上传情况可调用“分页查询视频同步列表”查看
接口地址(仅做说明使用):https://api.polyv.net/v2/video/grab/%s/upload/multi

调用约束

1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看

2、水印链接必须png格式

3、uploadInfos 和 (fileUrl、title)必传其一,并且 uploadInfos 的优先级高于 (fileUrl、title),建议使用 uploadInfos

单元测试

	@Test
	public void testUploadHttpVideoList() throws IOException, NoSuchAlgorithmException {
        VodUploadHttpVideoListRequest vodUploadHttpVideoListRequest = new VodUploadHttpVideoListRequest();
        Boolean vodUploadHttpVideoListResponse = null;
        try {
            VodUploadHttpVideoListRequest.UploadInfos uploadInfo = new VodUploadHttpVideoListRequest.UploadInfos();
            List<VodUploadHttpVideoListRequest.UploadInfos> uploadInfos = new ArrayList<>(Arrays.asList(uploadInfo));
            uploadInfo.setFileUrl("http://sadboytest.oss-cn-shenzhen.aliyuncs.com/test.mp4")
                    .setTitle("junit-远程批量上传视频")
                    .setState("state");
            vodUploadHttpVideoListRequest.setCategoryId("1622165542751")
                    .setScreenCap(0)
                    .setWatermark("http://sadboytest.oss-cn-shenzhen.aliyuncs.com/a.png")
                    .setWatermarkLocation("1")
                    .setUploadInfos(uploadInfos);
            vodUploadHttpVideoListResponse = new VodUploadServiceImpl().uploadHttpVideoList(
                    vodUploadHttpVideoListRequest);
            Assert.assertTrue(vodUploadHttpVideoListResponse);
            if (vodUploadHttpVideoListResponse) {
                //to do something ......
                log.debug("测试上传远程视频成功");
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }

单元测试说明

1、请求正确,返回Boolean对象,B端依据此对象处理业务逻辑;

2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.VodxxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]

3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]

请求入参描述

UploadInfos参数描述

返回对象描述

true提交异步上传成功,false提交异步上传失败,具体是否上传成功以回调为准。


4、上传视频封面图

描述

通过图片文件或http链接上传视频或多个分类的预览图
接口地址(仅做说明使用):https://api.polyv.net/v2/video/upload-cover-image

调用约束

1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看

2、当传了videoIds参数,以videoIds为准,当videoIds不传,以categoryIds为准,两个参数不能同时为空。

3、图片上传形式,三者任选其一即可,传了多个则按imageFile,imageUrl,imageBase64顺序选取第一个不为空的形式。

4、图片格式仅支持png、jpg、jpeg、gif、bmp,且图片大小不得超过5MB。

单元测试

	@Test
	public void testUploadVideoCoverImage() throws IOException, NoSuchAlgorithmException {
        VodUploadVideoCoverImageRequest vodUploadVideoCoverImageRequest = new VodUploadVideoCoverImageRequest();
        VodUploadVideoCoverImageResponse vodUploadVideoCoverImageResponse = null;
        try {
            String path = getClass().getResource("/img/cover.jpg").getPath();
            vodUploadVideoCoverImageRequest.setVideoIds(
                    "1b448be32345b255cabc3fe8d65a4d00_1,1b448be3234406608b7838c7ef6b597c_1")
                    .setCategoryIds("1615286323771,1615536384688")
                    .setImageFile(new File(path));
            vodUploadVideoCoverImageResponse = new VodUploadServiceImpl().uploadVideoCoverImage(
                    vodUploadVideoCoverImageRequest);
            Assert.assertTrue(vodUploadVideoCoverImageResponse != null);
            if (vodUploadVideoCoverImageResponse != null) {
                log.debug("测试上传视频封面图成功{}", JSON.toJSONString(vodUploadVideoCoverImageResponse));
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }

单元测试说明

1、请求正确,返回VodUploadVideoCoverImageResponse对象,B端依据此对象处理业务逻辑;

2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.VodxxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]

3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]

请求入参描述

返回对象描述


5、上传视频水印

描述

上传某一级分类或用户级别的视频水印,设置成功后对新上传的视频生效
水印图片需要为png格式,图片宽或高的尺寸超过256px时会被等比缩放
接口地址(仅做说明使用):https://api.polyv.net/v2/video/%s/watermarkSetting

调用约束

1、接口调用有频率限制,详细请查看,调用常见异常,详细请查看

单元测试

	@Test
	public void testUploadWatermark() throws IOException, NoSuchAlgorithmException {
        VodUploadWatermarkRequest vodUploadWatermarkRequest = new VodUploadWatermarkRequest();
        Boolean vodUploadWatermarkResponse = null;
        try {
            String path = getClass().getResource("/img/water.png").getPath();
            vodUploadWatermarkRequest.setImage(new File(path)).setCategoryId("1602300731843");
            vodUploadWatermarkResponse = new VodUploadServiceImpl().uploadWatermark(vodUploadWatermarkRequest);
            Assert.assertTrue(vodUploadWatermarkResponse);
            if (vodUploadWatermarkResponse) {
                //to do something ......
                log.debug("测试上传视频水印成功");
            }
        } catch (PloyvSdkException e) {
            //参数校验不合格 或者 请求服务器端500错误,错误信息见PloyvSdkException.getMessage()
            log.error(e.getMessage(), e);
            // 异常返回做B端异常的业务逻辑,记录log 或者 上报到ETL 或者回滚事务
            throw e;
        } catch (Exception e) {
            log.error("SDK调用异常", e);
            throw e;
        }
    }

单元测试说明

1、请求正确,返回Boolean对象,B端依据此对象处理业务逻辑;

2、请求参数校验不合格,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 输入参数 [xxx.chat.VodxxxRequest]对象校验失败,失败字段 [pic不能为空 / msg不能为空] ]

3、服务器处理异常,抛出PloyvSdkException,错误信息见PloyvSdkException.getMessage(),如 [ 保利威请求返回数据错误,请求流水号:66e7ad29fd04425a84c2b2b562d2025b,错误原因: invalid signature. ]

请求入参描述

返回对象描述

true:上传成功;false:上传失败

Last updated