使用情境
-
HLS標準資料加密適用於“對視頻進行簡單的保護”的,可以簡單的防止非法下載和非法傳播。
-
如果對安全有強需求,請開啟工作流程中的資料加密。詳情參見 資料加密。
使用限制
HLS標準資料加密需要使用SubmitJobs介面,工作流程中不可使用。
範例程式碼依賴
- MPS SDK詳情參見 安裝。
- 其他依賴。
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.25</version </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.9</version> </dependency>
範例程式碼
package com.aliyun
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.mts.model.v20140618.QueryJobListRequest;
import com.aliyuncs.mts.model.v20140618.QueryJobListResponse;
import com.aliyuncs.mts.model.v20140618.SubmitJobsRequest;
import com.aliyuncs.mts.model.v20140618.SubmitJobsResponse;
import com.aliyuncs.profile.DefaultProfile;
import org.apache.commons.codec.binary.Base64;
public class DataEncryptionDemo {
private DefaultAcsClient client = null;
private final String REGION = "cn-shanghai"; //按需配置
private final String MTS_ENDPOINT = "mts.cn-shanghai.aliyuncs.com"; //按需配置
private final String ID="idid"; //按需配置
private final String KEY ="keykey"; //按需配置
private final String LOCATION = "oss-cn-shanghai"; //按需配置
private final String INPUT_BUCKET = "input-bucket"; //按需配置
private final String OUTPUT_BUCKET = "output-bucket"; //按需配置
private final String PIPELINE_ID = "pipelineId"; //按需配置
public DataEncryptionDemo() throws ClientException {
DefaultProfile.addEndpoint(REGION, REGION, "Mts", MTS_ENDPOINT);
this.client = new DefaultAcsClient(DefaultProfile.getProfile(REGION, ID, KEY));
}
private JSONObject getInputFile() {
JSONObject inputFile = new JSONObject();
inputFile.put("Location", LOCATION);
inputFile.put("Bucket", INPUT_BUCKET);
inputFile.put("Object", "uploadvideo/test.flv");
return inputFile;
}
private JSONArray getOutputs() {
JSONArray outputs = new JSONArray();
outputs.add(getOutput());
return outputs;
}
private JSONObject getOutput() {
JSONObject output = new JSONObject();
output.put("OutputObject", "BaseTest/hls-encryption.m3u8");
output.put("TemplateId", "S00000001-100020");
output.put("Encryption", getEncryptionConfigs());
return output;
}
private JSONObject getEncryptionConfigs() {
JSONObject encryption = new JSONObject();
encryption.put("Type", "hls-aes-128");
encryption.put("Key", Base64.encodeBase64URLSafeString("encryptionkey123".getBytes()));
encryption.put("KeyUri", Base64.encodeBase64URLSafeString("http://demo.aliyuncs.com/document/hls128.key".getBytes()));
encryption.put("KeyType", "Base64");
return encryption;
}
private String submitJobs() throws ClientException {
JSONObject inputFile = getInputFile();
SubmitJobsRequest request = new SubmitJobsRequest();
request.setInput(inputFile.toJSONString());
request.setOutputLocation(LOCATION);
request.setOutputBucket(OUTPUT_BUCKET);
request.setOutputs(getOutputs().toJSONString());
request.setPipelineId(PIPELINE_ID);
SubmitJobsResponse reponse = this.client.getAcsResponse(request);
System.out.println(JSONObject.toJSONString(reponse.getJobResultList()));
return reponse.getJobResultList().get(0).getJob().getJobId();
}
public static void main(String[] args) throws ClientException {
DataEncryptionDemo demo = new DataEncryptionDemo();
String jobId= demo.submitJobs();
}
}