Skip to content

Commit 89a1ccf

Browse files
author
markjrzhang
committed
update MediaJob API
1 parent ae1ba5b commit 89a1ccf

17 files changed

+231
-174
lines changed

src/main/java/com/qcloud/cos/demo/ci/BlindWatermarkDemo.java

Lines changed: 25 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -27,25 +27,25 @@
2727
import java.util.List;
2828

2929
/**
30-
* 盲水印相关demo API 接口说明:https://cloud.tencent.com/document/product/460/19017
30+
* 盲水印相关demo API 接口说明:https://cloud.tencent.com/document/product/436/46782
3131
*/
3232
public class BlindWatermarkDemo {
33+
/**
34+
* 上传时添加盲水印
35+
*/
3336
public static void addBlindWatermark(COSClient cosClient) {
34-
// bucket名需包含appid
35-
// api 请参考:https://cloud.tencent.com/document/product/436/46782
36-
String bucketName = "examplebucket-1250000000";
37-
38-
String key = "qrcode.png";
39-
File localFile = new File("E://qrcode.png");
37+
String bucketName = "markjrzhang-1251704708";
38+
String key = "qrcode.jpg";
39+
File localFile = new File("demo.jpg");
4040
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, localFile);
4141
PicOperations picOperations = new PicOperations();
4242
picOperations.setIsPicInfo(1);
4343
List<PicOperations.Rule> ruleList = new LinkedList<>();
4444
PicOperations.Rule rule = new PicOperations.Rule();
4545
rule.setBucket(bucketName);
46-
rule.setFileId("qrcode-watermark.png");
46+
rule.setFileId("BlindWatermark.jpg");
4747
// 使用盲水印功能,水印图的宽高不得超过原图的1/8
48-
rule.setRule("watermark/3/type/2/image/aHR0cDovL2V4YW1wbGVidWNrZXQtMTI1MDAwMDAwMC5jb3MuYXAtZ3Vhbmd6aG91Lm15cWNsb3VkLmNvbS9zaHVpeWluLnBuZw==");
48+
rule.setRule("watermark/3/type/1/image/aHR0cHM6Ly9tYXJranJ6aGFuZy0xMjUxNzA0NzA4LmNvcy5hcC1jaG9uZ3FpbmcubXlxY2xvdWQuY29tL3NodWl5aW4uanBn");
4949

5050
ruleList.add(rule);
5151
picOperations.setRules(ruleList);
@@ -65,100 +65,23 @@ public static void addBlindWatermark(COSClient cosClient) {
6565
}
6666
}
6767

68-
public static void addBlindWatermarkWithTransferManager(TransferManager transferManager) throws InterruptedException {
69-
// bucket名需包含appid
70-
// api 请参考:https://cloud.tencent.com/document/product/436/46782
71-
String bucketName = "examplebucket-1250000000";
72-
String key = "qrcode.png";
73-
File localFile = new File("E://qrcode.png");
74-
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, localFile);
75-
PicOperations picOperations = new PicOperations();
76-
picOperations.setIsPicInfo(1);
77-
List<PicOperations.Rule> ruleList = new LinkedList<>();
78-
PicOperations.Rule rule1 = new PicOperations.Rule();
79-
rule1.setBucket(bucketName);
80-
rule1.setFileId("qrcode-watermark.png");
81-
rule1.setRule("watermark/3/type/3/text/dGVuY2VudCBjbG91ZA==");
82-
ruleList.add(rule1);
83-
picOperations.setRules(ruleList);
84-
putObjectRequest.setPicOperations(picOperations);
85-
86-
Upload upload = transferManager.upload(putObjectRequest);
87-
UploadResult uploadResult = upload.waitForUploadResult();
88-
CIUploadResult ciUploadResult = uploadResult.getCiUploadResult();
89-
System.out.println(uploadResult.getRequestId());
90-
System.out.println(ciUploadResult.getOriginalInfo().getEtag());
91-
for(CIObject ciObject:ciUploadResult.getProcessResults().getObjectList()) {
92-
System.out.println(ciObject.getLocation());
93-
}
94-
}
95-
96-
public static void addBlindWatermarkWithMultipart(COSClient cosClient) throws FileNotFoundException {
97-
// bucket名需包含appid
98-
// api 请参考:https://cloud.tencent.com/document/product/436/46782
99-
String bucketName = "examplebucket-1250000000";
100-
101-
String key = "qrcode.png";
102-
File localFile = new File("E://qrcode.png");
103-
InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(bucketName, key);
104-
InitiateMultipartUploadResult initResult = cosClient.initiateMultipartUpload(request);
105-
String uploadId = initResult.getUploadId();
106-
107-
// 上传分块
108-
List<PartETag> partETags = new LinkedList<>();
109-
UploadPartRequest uploadPartRequest = new UploadPartRequest();
110-
uploadPartRequest.setBucketName(bucketName);
111-
uploadPartRequest.setKey(key);
112-
uploadPartRequest.setUploadId(uploadId);
113-
// 设置分块的数据来源输入流
114-
uploadPartRequest.setInputStream(new FileInputStream(localFile));
115-
// 设置分块的长度
116-
uploadPartRequest.setPartSize(localFile.length()); // 设置数据长度
117-
uploadPartRequest.setPartNumber(1); // 假设要上传的part编号是10
118-
UploadPartResult uploadPartResult = cosClient.uploadPart(uploadPartRequest);
119-
PartETag partETag = uploadPartResult.getPartETag();
120-
partETags.add(partETag);
121-
122-
// 合并分块并带上图像处理参数
123-
CompleteMultipartUploadRequest completeMultipartUploadRequest =
124-
new CompleteMultipartUploadRequest(bucketName, key, uploadId, partETags);
125-
PicOperations picOperations = new PicOperations();
126-
picOperations.setIsPicInfo(1);
127-
List<PicOperations.Rule> ruleList = new LinkedList<>();
128-
PicOperations.Rule rule1 = new PicOperations.Rule();
129-
rule1.setBucket(bucketName);
130-
rule1.setFileId("qrcode-watermark.png");
131-
rule1.setRule("watermark/3/type/3/text/dGVuY2VudCBjbG91ZA==");
132-
ruleList.add(rule1);
133-
picOperations.setRules(ruleList);
134-
completeMultipartUploadRequest.setPicOperations(picOperations);
135-
136-
CompleteMultipartUploadResult completeMultipartUploadResult =
137-
cosClient.completeMultipartUpload(completeMultipartUploadRequest);
138-
139-
CIUploadResult ciUploadResult = completeMultipartUploadResult.getCiUploadResult();
140-
System.out.println(completeMultipartUploadResult.getRequestId());
141-
System.out.println(ciUploadResult.getOriginalInfo().getEtag());
142-
for(CIObject ciObject:ciUploadResult.getProcessResults().getObjectList()) {
143-
System.out.println(ciObject.getLocation());
144-
}
145-
}
146-
147-
public static void extractBlindWatermark(COSClient cosClient) {
148-
// bucket名需包含appid
149-
// api 请参考:https://cloud.tencent.com/document/product/436/46782
150-
String bucketName = "examplebucket-1250000000";
151-
152-
String key = "qrcode-watermark.png";
153-
File localFile = new File("E://qrcode-watermark.png");
68+
/**
69+
* 上传时获取盲水印
70+
*/
71+
public static void getBlindWatermark(COSClient cosClient) {
72+
String bucketName = "markjrzhang-1251704708";
73+
String key = "qrcode.jpg";
74+
File localFile = new File("BlindWatermark.jpg");
15475
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, key, localFile);
15576
PicOperations picOperations = new PicOperations();
15677
picOperations.setIsPicInfo(1);
15778
List<PicOperations.Rule> ruleList = new LinkedList<>();
15879
PicOperations.Rule rule = new PicOperations.Rule();
15980
rule.setBucket(bucketName);
160-
rule.setFileId("qrcode-watermark-extract.png");
161-
rule.setRule("watermark/4/type/2/image/aHR0cDovL2V4YW1wbGVidWNrZXQtMTI1MDAwMDAwMC5jb3MuYXAtZ3Vhbmd6aG91Lm15cWNsb3VkLmNvbS9zaHVpeWluLnBuZw==");
81+
rule.setFileId("BlindWatermark-test.jpg");
82+
// 使用盲水印功能,水印图的宽高不得超过原图的1/8
83+
rule.setRule("watermark/4/type/2/image/aHR0cHM6Ly9tYXJranJ6aGFuZy0xMjUxNzA0NzA4LmNvcy5hcC1jaG9uZ3FpbmcubXlxY2xvdWQuY29tL3NodWl5aW4uanBn");
84+
16285
ruleList.add(rule);
16386
picOperations.setRules(ruleList);
16487
putObjectRequest.setPicOperations(picOperations);
@@ -169,7 +92,6 @@ public static void extractBlindWatermark(COSClient cosClient) {
16992
System.out.println(ciUploadResult.getOriginalInfo().getEtag());
17093
for(CIObject ciObject:ciUploadResult.getProcessResults().getObjectList()) {
17194
System.out.println(ciObject.getLocation());
172-
System.out.println(ciObject.getWatermarkStatus());
17395
}
17496
} catch (CosServiceException e) {
17597
e.printStackTrace();
@@ -192,7 +114,7 @@ public static void addBlindWatermarkToExistImage(COSClient cosClient) {
192114
rule.setBucket(bucketName);
193115
rule.setFileId("/image/result/dog.jpg");
194116
// 使用盲水印功能,水印图的宽高不得超过原图的1/8
195-
rule.setRule("watermark/3/type/2/image/aHR0cDovL2V4YW1wbGVidWNrZXQtMTI1MDAwMDAwMC5jb3MuYXAtZ3Vhbmd6aG91Lm15cWNsb3VkLmNvbS9zaHVpeWluLnBuZw==");
117+
rule.setRule("watermark/3/type/2/image/aHR0cHM6Ly9tYXJranJ6aGFuZy0xMjUxNzA0NzA4LmNvcy5hcC1jaG9uZ3FpbmcubXlxY2xvdWQuY29tL3NodWl5aW4uanBn");
196118

197119
ruleList.add(rule);
198120
picOperations.setRules(ruleList);
@@ -210,6 +132,9 @@ public static void addBlindWatermarkToExistImage(COSClient cosClient) {
210132
}
211133
}
212134

135+
/**
136+
* 云上数据处理
137+
*/
213138
public static void extractBlindWatermarkFromExistImage(COSClient cosClient) {
214139
// bucket名需包含appid
215140
// api 请参考:https://cloud.tencent.com/document/product/436/46782
@@ -244,10 +169,7 @@ public static void extractBlindWatermarkFromExistImage(COSClient cosClient) {
244169

245170
public static void main(String[] args) throws Exception {
246171
COSClient cosClient = ClientUtils.getTestClient();
247-
// addBlindWatermark(cosClient);
248-
// extractBlindWatermark(cosClient);
249-
addBlindWatermarkToExistImage(cosClient);
250-
extractBlindWatermarkFromExistImage(cosClient);
172+
getBlindWatermark(cosClient);
251173
cosClient.shutdown();
252174
}
253175
}

src/main/java/com/qcloud/cos/demo/ci/JobDemo.java

Lines changed: 20 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@
44
import com.qcloud.cos.model.ciModel.job.MediaAudioObject;
55
import com.qcloud.cos.model.ciModel.job.MediaContainerObject;
66
import com.qcloud.cos.model.ciModel.job.MediaJobObject;
7-
import com.qcloud.cos.model.ciModel.job.MediaJobOperation;
87
import com.qcloud.cos.model.ciModel.job.MediaJobResponse;
98
import com.qcloud.cos.model.ciModel.job.MediaJobsRequest;
109
import com.qcloud.cos.model.ciModel.job.MediaListJobResponse;
1110
import com.qcloud.cos.model.ciModel.job.MediaTimeIntervalObject;
1211
import com.qcloud.cos.model.ciModel.job.MediaTransConfigObject;
1312
import com.qcloud.cos.model.ciModel.job.MediaTranscodeObject;
1413
import com.qcloud.cos.model.ciModel.job.MediaTranscodeVideoObject;
14+
import com.qcloud.cos.model.ciModel.job.v2.MediaJobResponseV2;
15+
import com.qcloud.cos.model.ciModel.job.v2.MediaJobsRequestV2;
1516

1617
import java.io.UnsupportedEncodingException;
1718
import java.util.List;
@@ -25,7 +26,7 @@ public static void main(String[] args) throws Exception {
2526
// 1 初始化用户身份信息(secretId, secretKey)。
2627
COSClient client = ClientUtils.getTestClient();
2728
// 2 调用要使用的方法。
28-
createMediaJobs(client);
29+
createMediaJobs2(client);
2930
}
3031

3132
/**
@@ -36,19 +37,19 @@ public static void main(String[] args) throws Exception {
3637
*/
3738
public static void createMediaJobs(COSClient client) throws UnsupportedEncodingException {
3839
//1.创建任务请求对象
39-
MediaJobsRequest request = new MediaJobsRequest();
40+
MediaJobsRequestV2 request = new MediaJobsRequestV2();
4041
//2.添加请求参数 参数详情请见api接口文档
41-
request.setBucketName("DemoBucket-123456789");
42+
request.setBucketName("markjrzhang-1251704708");
4243
request.setTag("Transcode");
4344
request.getInput().setObject("1.mp4");
4445
request.getOperation().setTemplateId("t0e09a9456d4124542b1f0e44d501*****");
45-
request.getOperation().getOutput().setBucket("DemoBucket-123456789");
46+
request.getOperation().getOutput().setBucket("markjrzhang-1251704708");
4647
request.getOperation().getOutput().setRegion("ap-chongqing");
4748
request.getOperation().getOutput().setObject("2.mp4");
4849
request.setCallBack("https://cloud.tencent.com/xxx");
4950
// request.setCallBackFormat("json");
5051
//3.调用接口,获取任务响应对象
51-
MediaJobResponse response = client.createMediaJobs(request);
52+
MediaJobResponseV2 response = client.createMediaJobsV2(request);
5253
System.out.println(response);
5354
}
5455

@@ -60,14 +61,13 @@ public static void createMediaJobs(COSClient client) throws UnsupportedEncodingE
6061
*/
6162
public static void createMediaJobs2(COSClient client) throws UnsupportedEncodingException {
6263
//1.创建任务请求对象
63-
MediaJobsRequest request = new MediaJobsRequest();
64+
MediaJobsRequestV2 request = new MediaJobsRequestV2();
6465
//2.添加请求参数 参数详情请见api接口文档
65-
request.setBucketName("DemoBucket-123456789");
66+
request.setBucketName("markjrzhang-1251704708");
6667
request.setTag("Transcode");
6768
request.getInput().setObject("1.mp4");
6869
//2.1添加媒体任务操作参数
6970
MediaTranscodeObject transcode = request.getOperation().getTranscode();
70-
MediaJobOperation operation = request.getOperation();
7171
MediaContainerObject container = transcode.getContainer();
7272
container.setFormat("mp4");
7373
MediaTranscodeVideoObject video = transcode.getVideo();
@@ -91,17 +91,17 @@ public static void createMediaJobs2(COSClient client) throws UnsupportedEncoding
9191
timeInterval.setDuration("60");
9292

9393
MediaTransConfigObject transConfig = transcode.getTransConfig();
94-
// transConfig.setAdjDarMethod("scale");
95-
// transConfig.setIsCheckAudioBitrate("false");
96-
// transConfig.setResoAdjMethod("1");
94+
transConfig.setAdjDarMethod("scale");
95+
transConfig.setIsCheckAudioBitrate("false");
96+
transConfig.setResoAdjMethod("1");
9797

98-
request.getOperation().getOutput().setBucket("DemoBucket-123456789");
98+
request.getOperation().getOutput().setBucket("markjrzhang-1251704708");
9999
request.getOperation().getOutput().setRegion("ap-chongqing");
100100
request.getOperation().getOutput().setObject("demo1.mp4");
101101
request.setCallBack("https://cloud.tencent.com/xxx");
102102
//3.调用接口,获取任务响应对象
103-
MediaJobResponse response = client.createMediaJobs(request);
104-
System.out.println(response.getJobsDetail().getOperation().getTranscode());
103+
MediaJobResponseV2 response = client.createMediaJobsV2(request);
104+
System.out.println(response.getJobsDetail().getJobId());
105105
}
106106

107107
/**
@@ -113,23 +113,18 @@ public static void describeMediaJob(COSClient client) {
113113
//1.创建任务请求对象
114114
MediaJobsRequest request = new MediaJobsRequest();
115115
//2.添加请求参数 参数详情请见api接口文档
116-
request.setBucketName("DemoBucket-123456789");
117-
request.setJobId("j2b27107ee3ad11ebbf6d73cb5317****");
116+
request.setBucketName("markjrzhang-1251704708");
117+
request.setJobId("jad6542985adf11efb4276de148cbf93a");
118118
//3.调用接口,获取任务响应对象
119119
MediaJobResponse response = client.describeMediaJob(request);
120-
System.out.println(response.getJobsDetail().getOperation().getTranscode());
120+
System.out.println(response.getJobsDetail().getState());
121121
}
122122

123-
/**
124-
* describeMediaJobs 查询任务列表
125-
*
126-
* @param client
127-
*/
128123
public static void describeMediaJobs(COSClient client) {
129124
//1.创建任务请求对象
130125
MediaJobsRequest request = new MediaJobsRequest();
131126
//2.添加请求参数 参数详情请见api接口文档
132-
request.setBucketName("DemoBucket-123456789");
127+
request.setBucketName("markjrzhang-1251704708");
133128
request.setTag("Transcode");
134129
//3.调用接口,获取任务响应对象
135130
MediaListJobResponse response = client.describeMediaJobs(request);
@@ -139,16 +134,11 @@ public static void describeMediaJobs(COSClient client) {
139134
}
140135
}
141136

142-
/**
143-
* cancelMediaJob 取消任务
144-
*
145-
* @param client
146-
*/
147137
public static void cancelMediaJob(COSClient client) {
148138
//1.创建任务请求对象
149139
MediaJobsRequest request = new MediaJobsRequest();
150140
//2.添加请求参数 参数详情请见api接口文档
151-
request.setBucketName("DemoBucket-123456789");
141+
request.setBucketName("markjrzhang-1251704708");
152142
request.setJobId("jbfb0d02a092111ebb3167781d*****");
153143
//3.调用接口,获取任务响应对象
154144
Boolean response = client.cancelMediaJob(request);

src/main/java/com/qcloud/cos/model/ciModel/job/MediaContainerObject.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public class MediaContainerObject {
1414
* 分片配置,当format为hls和dash时有效
1515
*/
1616
@XStreamAlias("ClipConfig")
17-
private MediaClipConfig clipConfig = new MediaClipConfig();
17+
private MediaClipConfig clipConfig ;
1818

1919
public String getFormat() {
2020
return format;

src/main/java/com/qcloud/cos/model/ciModel/job/MediaJobOperation.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,9 @@ public class MediaJobOperation {
5252
@XStreamAlias("SnapshotPrefix")
5353
private String snapshotPrefix;
5454

55+
@XStreamAlias("FreeTranscode")
56+
private String freeTranscode;
57+
5558
@XStreamAlias("Output")
5659
private MediaOutputObject output;
5760

@@ -521,6 +524,14 @@ public void setVersion(String version) {
521524
this.version = version;
522525
}
523526

527+
public String getFreeTranscode() {
528+
return freeTranscode;
529+
}
530+
531+
public void setFreeTranscode(String freeTranscode) {
532+
this.freeTranscode = freeTranscode;
533+
}
534+
524535
public String getSnapshotPrefix() {
525536
return snapshotPrefix;
526537
}

0 commit comments

Comments
 (0)