<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.1</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-vod-upload</artifactId>
<version>1.4.13</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-vod</artifactId>
<version>2.15.11</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.68</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20171018</version>
</dependency>
其中aliyun-java-vod-upload还没有开源,需要自行下载阿里云点播视频上传demo,将jar包打入本地的maven仓库。
DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", "keyid", "secret");
IAcsClient client = new DefaultAcsClient(profile);
/*
图片型的水印才有的步骤 1 发请求获取图片水印的存放地址和临时授权
*/
CreateUploadAttachedMediaRequest request = new CreateUploadAttachedMediaRequest();
//上传水印文件设置watermark即可
request.setBusinessType("watermark");
//水印文件在本地的文件名称
request.setFileName("watermark.png");
//水印文件的扩展名(png、gif、apng、mov)
request.setMediaExt("png");
//水印文件对应的标题
request.setTitle("水印文件");
try {
CreateUploadAttachedMediaResponse response = client.getAcsResponse(request);
System.out.println(new Gson().toJson(response));
} catch (ServerException e) {
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
catch (ClientException e){
System.out.println("ErrCode:" + e.getErrCode());
System.out.println("ErrMsg:" + e.getErrMsg());
System.out.println("RequestId:" + e.getRequestId());
}
-
上传水印图片
//文件存储到OSS的名称
fileName = (String) address.get("FileName");
//OSS存储文件的bucket
bucket = (String) address.get("Bucket");
endpoint = (String) address.get("Endpoint");
accessKeyId = (String) auth.get("AccessKeyId");
accessKeySecrect = (String) auth.get("AccessKeySecret");
//OSS上传token
securityToken = (String) auth.get("SecurityToken");
/**
* 上传水印文件到 aliyun
*/
try {
File file = new File("C:\\Users\\54719\\Desktop\\zhaopian\\watermark.png");
//上传水印文件
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecrect, securityToken);
//将水印文件上传到OSS
ossClient.putObject(bucket, fileName, file);
//上传完成后务必关闭oss client
ossClient.shutdown();
}catch (Exception e){
e.printStackTrace();
}
-
创建水印模板(文字水印可以从这部开始)
/**
* 添加水印模板
*/
AddWatermarkRequest re = new AddWatermarkRequest();
//水印名称
re.setName("test");
//调用获取文件上传路径和凭证接口返回的FileURL
//图片水印必传图片文件的oss文件地址,水印文件必须和视频在同一个区域,例如:华东2视频,水印文件必须存放在华东2
re.setFileUrl(fileUrl);
//文字水印:Text; 图片水印:Image
re.setType("Image");
//水印配置信息(构建水印配置信息方法,详细的构建逻辑请参考接口SDK示例。)
JSONObject watermarkConfig = buildWatermarkConfig();
re.setWatermarkConfig(watermarkConfig.toJSONString());
try {
/**
* 添加水印模板后返回
*/
AddWatermarkResponse response = client.getAcsResponse(re);
System.out.println(new Gson().toJson(response));
String warterId = response.getWatermarkInfo().getWatermarkId();
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
System.out.println("ErrCode:" + e.getErrCode());
System.out.println("ErrMsg:" + e.getErrMsg());
System.out.println("RequestId:" + e.getRequestId());
}
public static JSONObject buildWatermarkConfig(){
JSONObject ob = new JSONObject();
ob.put("Width","55");
ob.put("Height","55");
ob.put("Dx","20");
ob.put("Dy","20");
ob.put("ReferPos","TopLeft");
ob.put("Type","Image");
return ob;
}
-
生成转码模板并关联水印模板
try {
AddTranscodeTemplateGroupRequest req = new AddTranscodeTemplateGroupRequest();
req.setName("水印组12");
req.setRegionId("cn-shanghai");
req.setTranscodeTemplateGroupId("8fc34c6bfabdf2cc353ffef5377c3fcb");
//re.setAppId();
JSONArray transcodeTemplateList = buildTranscodeTemplateList(warterId);
req.setTranscodeTemplateList(transcodeTemplateList.toString());
AddTranscodeTemplateGroupResponse res = client.getAcsResponse(req);
System.out.println(new Gson().toJson(res));
} catch (JSONException e) {
e.printStackTrace();
}
catch (ClientException e){
System.out.println("ErrCode:" + e.getErrCode());
System.out.println("ErrMsg:" + e.getErrMsg());
System.out.println("RequestId:" + e.getRequestId());
}
public static JSONArray buildTranscodeTemplateList(String warterId) throws JSONException {
JSONArray transcodeTemplateList = new JSONArray();
org.json.JSONObject transcodeTemplate = new org.json.JSONObject();
//清晰度
transcodeTemplate.put("Definition", "OD");
//模板名称
transcodeTemplate.put("TemplateName", "tupian");
//视频流转码配置
org.json.JSONObject video = new org.json.JSONObject();
video.put("Width", 640);
video.put("Bitrate", 400);
//video.put("Fps", 25);
video.put("Remove", false);
video.put("Codec", "H.264");
video.put("Gop", "250");
transcodeTemplate.put("Video", video);
//音频流转码配置
org.json.JSONObject audio = new org.json.JSONObject();
audio.put("Codec", "AAC");
audio.put("Bitrate", "64");
audio.put("Channels", "2");
audio.put("Samplerate", "32000");
transcodeTemplate.put("Audio", audio);
//封装容器
org.json.JSONObject container = new org.json.JSONObject();
container.put("Format", "mp4");
transcodeTemplate.put("Container", container);