簡介
視訊添加水印,即指在視訊的編解碼過程中将圖檔、文字等資訊壓制到視訊流中合并輸出一個帶圖文水印的新的視訊檔案。通常在視訊上添加企業、品牌Logo、電視台台标、使用者ID或昵稱等标志性資訊,可用于宣示對視訊的版權歸屬或品牌宣傳。
水印類型
視訊點播支援三種水印類型:靜态圖檔(png格式)、動态圖檔(gif、apng、mov視訊)和文字水印。
說明:更多視訊水印資訊請參考 視訊水印 。
水印的使用
說明:
- png、gif水印可以通過 視訊點播控制台-->水印管理添加 ,這裡隻介紹如何通過API添加水印資訊。
1.上傳水印檔案
- 文字水印沒有檔案這類資源資料,是以無需此步操作。
1.1 擷取檔案上傳路徑與憑證
調用
CreateUploadAttachedMedia接口擷取檔案上傳路徑以及上傳臨時授權。
- 需要将BusinessType設定為watermark、 MediaExt設定檔案的真實格式,例如:png。
接口請求處理代碼示例:
CreateUploadAttachedMediaRequest request = new CreateUploadAttachedMediaRequest();
//上傳水印檔案設定watermark即可
request.setBusinessType("watermark");
//水印檔案在本地的檔案名稱
request.setFileName("watermark.png");
//水印檔案的擴充名(png、gif、apng、mov)
request.setMediaExt("png");
//水印檔案對應的标題
request.setTitle("水印檔案");
//水印檔案存儲的源站
request.setStorageLocation("outin-40564284ef0511e8b2d300163e1403e7.oss-cn-shanghai.aliyuncs.com");
CreateUploadAttachedMediaResponse response = client.getAcsResponse(request);
接口将會傳回檔案上傳的路徑(UploadAddress)和臨時授權(UploadAuth)資訊,将UploadAddress和UploadAuth進行Base64Decode(解碼後是JSONObject資料)。
檔案存儲路徑資訊有:Bucket(OSS存儲bucket)、EndPoint(存儲區域位址)、FileName(檔案在點播存儲的檔案名稱)。
檔案上傳授權資訊有:AccessKeyId、AccessKeySecret、Expiration(授權的過期時間)、SecurityToken(安全令牌)。
說明:更多上傳路徑和憑證資訊可參考 上傳位址和憑證
傳回參數處理代碼示例:
// FileURL 需要用于水印添加接口作為參數傳入
String fileUrl = response.getFileURL();
//擷取檔案的上傳位址
String uploadAddress = response.getUploadAddress();
//擷取檔案上傳時的臨時授權
String uploadAuth = response.getUploadAuth();
//解析檔案上傳位址内容(需要先base64解碼再轉換成JSON)
JSONObject address = JSON.parseObject(base64Decode(uploadAddress));
//解析檔案上傳時的臨時授權(需要先base64解碼再轉換成JSON)
JSONObject auth = JSON.parseObject(base64Decode(uploadAuth));
//OSS上傳Endpoint
String endpoint = (String) address.get("Endpoint");
//OSS存儲檔案的bucket
String bucket = (String) address.get("Bucket");
//檔案存儲到OSS的名稱
String fileName = (String) address.get("FileName");
//OSS上傳的臨時授權AK
String accessKeyId = (String) auth.get("AccessKeyId");
String accessKeySecrect = (String) auth.get("AccessKeySecret");
//OSS上傳token
String securityToken = (String) auth.get("SecurityToken");
說明:更多接口調用代碼示例請參考 CreateUploadAttachedMedia SDK示例。
1.2 上傳水印檔案
擷取到上傳路徑與臨時授權,則可以通過OSS上傳水印檔案。
上傳水印檔案部分代碼示例:
File file = new File("/tmp/test.watermark.png");
//上傳水印檔案
OSSClient ossClient = new OSSClient(uploadEndpoint, ossAccessKeyId, ossAccessKeySecrect, ossToken);
//将水印檔案上傳到OSS
ossClient.putObject(bucket, fileName, file);
//上傳完成後務必關閉oss client
ossClient.shutdown();
說明:更多OSS 相關代碼示例請參考 OSS SDK示例。
2.添加水印資訊
水印檔案上傳完成後,調用
AddWatermark接口 添加文字水印或圖檔水印資訊。
AddWatermarkRequest request = new AddWatermarkRequest();
//水印名稱
request.setName("test");
//調用擷取檔案上傳路徑和憑證接口傳回的FileURL
String fileUrl = "http://out-ddddd.cn-shanghai.aliyuncs.com/watermark/ddasaaasa.png";
//圖檔水印必傳圖檔檔案的oss檔案位址,水印檔案必須和視訊在同一個區域,例如:華東2視訊,水印檔案必須存放在華東2
request.setFileUrl(fileUrl);
//文字水印:Text; 圖檔水印:Image
request.setType("Image");
//水印配置資訊(建構水印配置資訊方法,詳細的建構邏輯請參考接口SDK示例。)
JSONObject watermarkConfig = buildWatermarkConfig();
request.setWatermarkConfig(watermarkConfig.toJSONString());
AddWatermarkResponse response = client.getAcsResponse(request);
說明:更多詳細代碼示例請參考 AddWatermark SDK示例。
調用水印添加接口完成後,水印資訊已經建立完成。
3.添加轉碼配置
要将建立的水印資訊關聯到視訊轉碼進行中,可調用
AddTranscodeTemplateGroup接口添加轉碼配置并指定需要使用到的水印資訊ID。
添加轉碼配置
AddTranscodeTemplateGroupRequest request = new AddTranscodeTemplateGroupRequest();
request.setName("測試水印水印");
JSONArray transcodeTemplateList = buildTranscodeTemplateList();
request.setTranscodeTemplateList(transcodeTemplateList.toJSONString());
AddTranscodeTemplateGroupResponse response = client.getAcsResponse(request)
建構轉碼配置清單
public static JSONArray buildTranscodeTemplateList() {
JSONArray transcodeTemplateList = new JSONArray();
JSONObject transcodeTemplate = new JSONObject();
//清晰度
transcodeTemplate.put("Definition", "LD");
//模闆名稱
transcodeTemplate.put("TemplateName", "testtemplate");
//視訊流轉碼配置
JSONObject video = new 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);
//音頻流轉碼配置
JSONObject audio = new JSONObject();
audio.put("Codec", "AAC");
audio.put("Bitrate", "64");
audio.put("Channels", "2");
audio.put("Samplerate", "32000");
transcodeTemplate.put("Audio", audio);
//封裝容器
JSONObject container = new JSONObject();
container.put("Format", "m3u8");
transcodeTemplate.put("Container", container);
//條件轉碼配置
JSONObject transconfig = new JSONObject();
transconfig.put("IsCheckReso", false);
transconfig.put("IsCheckResoFail", false);
transconfig.put("IsCheckVideoBitrate", false);
transconfig.put("IsCheckVideoBitrateFail", false);
transconfig.put("IsCheckAudioBitrate", false);
transconfig.put("IsCheckAudioBitrateFail", false);
transcodeTemplate.put("TransConfig", transconfig);
//需要使用的水印ID(多水印關聯),最多支援4個水印
JSONArray watermarkIdList = new JSONArray();
watermarkIdList.add("23ebea5c67a450d9b595a0156198821f");
//USER_DEFAULT_WATERMARK 代表預設水印ID
watermarkIdList.add("6aa9cf7ff1497799deece4578a55f5e4");
transcodeTemplate.put("WatermarkIds", watermarkIdList);
transcodeTemplateList.add(transcodeTemplate);
return transcodeTemplateList;
}
AddTranscodeTemplateGroup SDK示例。
4.上傳視訊
建立完轉碼配置後,使用者可以在上傳視訊時指定建立好的轉碼模闆配置ID或者将建立好的轉碼配置設定成預設,這樣轉碼流程會自動處理并添加水印。
說明:更多代碼示例詳細請參考 上傳SDK 示例
5.水印效果
單水印
