Skip to content

Commit 8fabe81

Browse files
author
jeffreykzli
committed
merge origin master
2 parents e935279 + 836165e commit 8fabe81

26 files changed

+948
-85
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<dependency>
99
<groupId>com.qcloud</groupId>
1010
<artifactId>cos_api</artifactId>
11-
<version>5.6.213</version>
11+
<version>5.6.227</version>
1212
</dependency>
1313
```
1414

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>com.qcloud</groupId>
66
<artifactId>cos_api</artifactId>
7-
<version>5.6.224</version>
7+
<version>5.6.228</version>
88
<packaging>jar</packaging>
99
<name>cos-java-sdk</name>
1010
<description>java sdk for qcloud cos</description>

src/main/java/com/qcloud/cos/COS.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3291,6 +3291,8 @@ SelectObjectContentResult selectObjectContent(SelectObjectContentRequest selectR
32913291
UpdateDatasetResponse updateDataset(UpdateDatasetRequest customRequest);
32923292

32933293
UpdateFileMetaIndexResponse updateFileMetaIndex(UpdateFileMetaIndexRequest customRequest);
3294+
3295+
MediaTemplateResponseV2 createMediaTemplateV2(MediaTemplateRequestV2 request);
32943296
}
32953297

32963298

src/main/java/com/qcloud/cos/COSClient.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5316,6 +5316,15 @@ public UpdateFileMetaIndexResponse updateFileMetaIndex(UpdateFileMetaIndexReques
53165316
return invoke(request, new Unmarshallers.CICommonJsonUnmarshaller<UpdateFileMetaIndexResponse>(UpdateFileMetaIndexResponse.class));
53175317
}
53185318

5319+
@Override
5320+
public MediaTemplateResponseV2 createMediaTemplateV2(MediaTemplateRequestV2 templateRequest) {
5321+
rejectNull(templateRequest,
5322+
"The request parameter must be specified setting the object tags");
5323+
CosHttpRequest<MediaTemplateRequestV2> request = this.createRequest(templateRequest.getBucketName(), "/template", templateRequest, HttpMethodName.POST);
5324+
this.setContent(request, CIAuditingXmlFactoryV2.convertToXmlByteArray(templateRequest), "application/xml", false);
5325+
return invoke(request, new Unmarshallers.CICommonUnmarshaller<MediaTemplateResponseV2>(MediaTemplateResponseV2.class));
5326+
}
5327+
53195328
public String generateCosDomainPrivateM3U8Url(PrivateM3U8Request privateM3U8Request) {
53205329
CosHttpRequest<PrivateM3U8Request> request = createRequest(privateM3U8Request.getBucketName(), privateM3U8Request.getObject(), privateM3U8Request, HttpMethodName.GET);
53215330
request.addParameter("ci-process","pm3u8");
Lines changed: 53 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
package com.qcloud.cos.demo.ci;
22

33
import com.qcloud.cos.COSClient;
4-
import com.qcloud.cos.model.ciModel.job.MediaJobOperation;
5-
import com.qcloud.cos.model.ciModel.job.MediaJobResponse;
6-
import com.qcloud.cos.model.ciModel.job.MediaJobsRequest;
4+
import com.qcloud.cos.model.ciModel.job.MediaContainerObject;
5+
import com.qcloud.cos.model.ciModel.job.MediaVideoObject;
6+
import com.qcloud.cos.model.ciModel.job.TransTpl;
77
import com.qcloud.cos.model.ciModel.job.VideoTargetRec;
8+
import com.qcloud.cos.model.ciModel.job.v2.*;
9+
import com.qcloud.cos.model.ciModel.template.MediaListTemplateResponse;
10+
import com.qcloud.cos.model.ciModel.template.MediaTemplateObject;
811
import com.qcloud.cos.model.ciModel.template.MediaTemplateRequest;
9-
import com.qcloud.cos.model.ciModel.template.MediaTemplateResponse;
12+
import com.qcloud.cos.utils.CIJackson;
1013

1114
import java.io.UnsupportedEncodingException;
15+
import java.util.List;
1216

1317
/**
1418
* 媒体处理 目标检测任务 job接口相关demo
@@ -19,7 +23,7 @@ public static void main(String[] args) throws Exception {
1923
// 1 初始化用户身份信息(secretId, secretKey)。
2024
COSClient client = ClientUtils.getTestClient();
2125
// 2 调用要使用的方法。
22-
describeMediaJob(client);
26+
describeMediaTemplates(client);
2327
}
2428

2529
/**
@@ -30,65 +34,38 @@ public static void main(String[] args) throws Exception {
3034
*/
3135
public static void createMediaJobs(COSClient client) {
3236
//1.创建任务请求对象
33-
MediaJobsRequest request = new MediaJobsRequest();
37+
MediaJobsRequestV2 request = new MediaJobsRequestV2();
3438
//2.添加请求参数 参数详情请见api接口文档
35-
request.setBucketName("shanghaitest-1251704708");
39+
request.setBucketName("demo-1234567890");
3640
request.setTag("VideoTargetRec");
37-
request.getInput().setObject("test/2023Y05M19D06H25M20S00.30.ts");
41+
request.getInput().setObject("1.mp4");
3842
//2.1添加媒体任务操作参数
3943
MediaJobOperation operation = request.getOperation();
40-
operation.setDecryptKey("4kkb6KFBFQmmg60dzuzOgA==");
41-
operation.setDecryptIv("YWFhYWFhYWFhYWFhYWFhYQ==");
42-
operation.setDecryptMode("AES128CBCNOPADDING");
4344

4445
VideoTargetRec videoTargetRec = operation.getVideoTargetRec();
4546
videoTargetRec.setBody("true");
4647
videoTargetRec.setPet("true");
4748
videoTargetRec.setCar("true");
49+
videoTargetRec.setFace("true");
4850

4951
//3.调用接口,获取任务响应对象
50-
MediaJobResponse response = client.createMediaJobs(request);
52+
MediaJobResponseV2 response = client.createMediaJobsV2(request);
5153
System.out.println(response.getJobsDetail().getJobId());
5254
}
5355

54-
/**
55-
* createMediaJobs 接口用于创建媒体任务
56-
* 使用目标检测参数创建任务
57-
*/
58-
public static void createMediaJobs2(COSClient client) {
59-
//1.创建任务请求对象
60-
MediaJobsRequest request = new MediaJobsRequest();
61-
//2.添加请求参数 参数详情请见api接口文档
62-
request.setBucketName("demo-1234567890");
63-
request.setTag("VideoTargetRec");
64-
request.getInput().setObject("1.mp4");
65-
//2.1添加媒体任务操作参数
66-
MediaJobOperation operation = request.getOperation();
67-
operation.setJobLevel("0");
68-
69-
VideoTargetRec videoTargetRec = operation.getVideoTargetRec();
70-
videoTargetRec.setBody("false");
71-
videoTargetRec.setPet("true");
72-
videoTargetRec.setCar("false");
73-
74-
//3.调用接口,获取任务响应对象
75-
MediaJobResponse response = client.createMediaJobs(request);
76-
System.out.println(response);
77-
}
78-
7956
/**
8057
* describeMediaJob 根据jobId查询任务信息
8158
*
8259
*/
8360
public static void describeMediaJob(COSClient client) {
8461
//1.创建任务请求对象
85-
MediaJobsRequest request = new MediaJobsRequest();
62+
MediaJobsRequestV2 request = new MediaJobsRequestV2();
8663
//2.添加请求参数 参数详情请见api接口文档
87-
request.setBucketName("shanghaitest-1251704708");
88-
request.setJobId("a350aba00ff8011edbf2061ef03bc37b5");
64+
request.setBucketName("demo-1234567890");
65+
request.setJobId("a794b193e4fad11ef8a36bfd795e*****");
8966
//3.调用接口,获取任务响应对象
90-
MediaJobResponse response = client.describeMediaJob(request);
91-
System.out.println(response);
67+
MediaJobResponseV2 response = client.describeMediaJobV2(request);
68+
System.out.println(CIJackson.toJsonString(response));
9269
}
9370

9471
/**
@@ -98,18 +75,45 @@ public static void describeMediaJob(COSClient client) {
9875
*/
9976
public static void createMediaTemplate(COSClient client) throws UnsupportedEncodingException {
10077
//1.创建模板请求对象
101-
MediaTemplateRequest request = new MediaTemplateRequest();
78+
MediaTemplateRequestV2 request = new MediaTemplateRequestV2();
10279
//2.添加请求参数 参数详情请见api接口文档
10380
request.setBucketName("demo-1234567890");
10481
request.setTag("VideoTargetRec");
105-
request.setName("mark-VideoTargetRec");
106-
VideoTargetRec videoTargetRec = request.getVideoTargetRec();
107-
videoTargetRec.setCar("true");
108-
videoTargetRec.setBody("true");
82+
request.setName("mark-VideoTargetRec-175");
83+
VideoTargetRec videoTargetRec = new VideoTargetRec();
84+
videoTargetRec.setCar("false");
85+
videoTargetRec.setBody("false");
10986
videoTargetRec.setPet("false");
87+
videoTargetRec.setFace("true");
88+
videoTargetRec.setProcessType("Mosaic");
11089

111-
MediaTemplateResponse response = client.createMediaTemplate(request);
112-
System.out.println(response);
90+
TransTpl transTpl = new TransTpl();
91+
MediaContainerObject container = new MediaContainerObject();
92+
container.setFormat("mp4");
93+
transTpl.setContainer(container);
94+
95+
MediaVideoObject video = new MediaVideoObject();
96+
video.setCodec("H.264");
97+
video.setCrf("23");
98+
transTpl.setVideo(video);
99+
videoTargetRec.setTransTpl(transTpl);
100+
request.setVideoTargetRec(videoTargetRec);
101+
MediaTemplateResponseV2 response = client.createMediaTemplateV2(request);
102+
103+
System.out.println(CIJackson.toJsonString(response));
113104
}
114105

106+
public static void describeMediaTemplates(COSClient client) {
107+
//1.创建模板请求对象
108+
MediaTemplateRequest request = new MediaTemplateRequest();
109+
//2.添加请求参数 参数详情请见api接口文档
110+
request.setBucketName("demo-1234567890");
111+
request.setTag("VideoTargetRec");
112+
//3.调用接口,获取模板响应对象
113+
MediaListTemplateResponse response = client.describeMediaTemplatesV2(request);
114+
List<MediaTemplateObject> templateList = response.getTemplateList();
115+
for (MediaTemplateObject mediaTemplateObject : templateList) {
116+
System.out.println(CIJackson.toJsonString(mediaTemplateObject));
117+
}
118+
}
115119
}

src/main/java/com/qcloud/cos/internal/cihandler/XStreamXmlResponsesSaxParser.java

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,14 @@
33
import com.qcloud.cos.exception.CosServiceException;
44
import com.qcloud.cos.internal.CosServiceRequest;
55
import com.thoughtworks.xstream.XStream;
6-
import com.thoughtworks.xstream.converters.Converter;
7-
import com.thoughtworks.xstream.converters.MarshallingContext;
8-
import com.thoughtworks.xstream.converters.SingleValueConverter;
9-
import com.thoughtworks.xstream.converters.UnmarshallingContext;
10-
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
11-
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
12-
import com.thoughtworks.xstream.io.xml.PrettyPrintWriter;
13-
import com.thoughtworks.xstream.io.xml.StaxDriver;
14-
import com.thoughtworks.xstream.mapper.Mapper;
156
import com.thoughtworks.xstream.security.AnyTypePermission;
167

178
import java.io.InputStream;
18-
import java.io.StringWriter;
199
import java.lang.reflect.Field;
10+
import java.util.concurrent.ConcurrentHashMap;
2011

2112
public abstract class XStreamXmlResponsesSaxParser<T> {
22-
23-
private XStream xstream;
13+
private static final ConcurrentHashMap<String, XStream> xStreamMap = new ConcurrentHashMap<String, XStream>();
2414

2515
abstract T getResponse(InputStream in);
2616

@@ -29,17 +19,21 @@ static XStream initXStream(Object obj) {
2919
}
3020

3121
static <T> XStream initXStream(Class<T> cls) {
32-
XStream xstream = new XStream();
33-
//忽略不需要的节点
34-
xstream.ignoreUnknownElements();
35-
//对指定的类使用Annotations 进行序列化
36-
xstream.processAnnotations(cls);
37-
xstream.addPermission(AnyTypePermission.ANY);
38-
Field[] fields = CosServiceRequest.class.getDeclaredFields();
39-
for (Field field : fields) {
40-
xstream.omitField(CosServiceRequest.class, field.getName());
22+
if (!xStreamMap.containsKey(cls.getName())) {
23+
XStream xstream = new XStream();
24+
//忽略不需要的节点
25+
xstream.ignoreUnknownElements();
26+
//对指定的类使用Annotations 进行序列化
27+
xstream.processAnnotations(cls);
28+
xstream.addPermission(AnyTypePermission.ANY);
29+
Field[] fields = CosServiceRequest.class.getDeclaredFields();
30+
for (Field field : fields) {
31+
xstream.omitField(CosServiceRequest.class, field.getName());
32+
}
33+
xStreamMap.put(cls.getName(), xstream);
34+
return xstream;
4135
}
42-
return xstream;
36+
return xStreamMap.get(cls.getName());
4337
}
4438

4539
public static String toXML(Object obj) {
@@ -48,9 +42,9 @@ public static String toXML(Object obj) {
4842
}
4943

5044
public static <T> T toBean(InputStream inputStream, Class<T> cls) {
51-
try {
45+
try (InputStream in = inputStream) {
5246
XStream xstream = initXStream(cls);
53-
return (T) xstream.fromXML(inputStream);
47+
return (T) xstream.fromXML(in);
5448
} catch (Exception e) {
5549
e.printStackTrace();
5650
throw new CosServiceException("Response parse error");

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ public class MediaJobOperation {
4949

5050
@XStreamAlias("EncryptMode")
5151
private String encryptMode;
52+
@XStreamAlias("SnapshotPrefix")
53+
private String snapshotPrefix;
5254

5355
@XStreamAlias("Output")
5456
private MediaOutputObject output;
@@ -519,6 +521,14 @@ public void setVersion(String version) {
519521
this.version = version;
520522
}
521523

524+
public String getSnapshotPrefix() {
525+
return snapshotPrefix;
526+
}
527+
528+
public void setSnapshotPrefix(String snapshotPrefix) {
529+
this.snapshotPrefix = snapshotPrefix;
530+
}
531+
522532
@Override
523533
public String toString() {
524534
final StringBuilder sb = new StringBuilder("MediaJobOperation{");
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
package com.qcloud.cos.model.ciModel.job;
2+
3+
import com.thoughtworks.xstream.annotations.XStreamAlias;
4+
5+
public class TransTpl {
6+
@XStreamAlias("Container")
7+
private MediaContainerObject container;
8+
@XStreamAlias("Video")
9+
private MediaVideoObject video;
10+
@XStreamAlias("Codec")
11+
private String codec;
12+
@XStreamAlias("Bitrate")
13+
private String bitrate;
14+
@XStreamAlias("Crf")
15+
private String crf;
16+
@XStreamAlias("Width")
17+
private String width;
18+
@XStreamAlias("Height")
19+
private String height;
20+
@XStreamAlias("Fps")
21+
private String fps;
22+
23+
public MediaContainerObject getContainer() {
24+
return container;
25+
}
26+
27+
public void setContainer(MediaContainerObject container) {
28+
this.container = container;
29+
}
30+
31+
public String getCodec() {
32+
return codec;
33+
}
34+
35+
public void setCodec(String codec) {
36+
this.codec = codec;
37+
}
38+
39+
public String getBitrate() {
40+
return bitrate;
41+
}
42+
43+
public void setBitrate(String bitrate) {
44+
this.bitrate = bitrate;
45+
}
46+
47+
public String getCrf() {
48+
return crf;
49+
}
50+
51+
public void setCrf(String crf) {
52+
this.crf = crf;
53+
}
54+
55+
public String getWidth() {
56+
return width;
57+
}
58+
59+
public void setWidth(String width) {
60+
this.width = width;
61+
}
62+
63+
public String getHeight() {
64+
return height;
65+
}
66+
67+
public void setHeight(String height) {
68+
this.height = height;
69+
}
70+
71+
public String getFps() {
72+
return fps;
73+
}
74+
75+
public void setFps(String fps) {
76+
this.fps = fps;
77+
}
78+
79+
public MediaVideoObject getVideo() {
80+
return video;
81+
}
82+
83+
public void setVideo(MediaVideoObject video) {
84+
this.video = video;
85+
}
86+
}

0 commit comments

Comments
 (0)