Updated on 2024-05-09 GMT+08:00

Creating an Encryption Task

You can create an encryption task by creating an MPC client instance and configuring related parameters.

Prerequisites

  • You have purchased OBS and uploaded source videos for media processing in the region of MPC (for example, CN North-Beijing4) by referring to Uploading Media Files.
  • You have obtained the authorization for MPC to access cloud resources by following the instructions provided in Authorizing Access to Cloud Resources.

Core Code

  1. Create an encryption request.
    The request includes the input file, output file, and encryption parameter settings.
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    // Set the paths of the input and output files.
    ObsObjInfo input = new ObsObjInfo().withBucket("mpc-east-2").withLocation("region01").withObject("input/hls/index.m3u8");
    ObsObjInfo output = new ObsObjInfo().withBucket("mpc-east-2").withLocation("region01").withObject("output");
    // Create a request.
    CreateEncryptTaskRequest req = new CreateEncryptTaskRequest()
            .withBody(new CreateEncryptReq().withInput(input).withOutput(output)
                    .withEncryption(new Encryption().withHlsEncrypt(new HlsEncrypt()
                            // Set the encryption algorithm.
                            .withAlgorithm("AES-128-CBC")
                            // Set the URL to obtain the key.
                            .withUrl("www.xxxxx.com")
                            // Set the initialization vector.
                            .withIv("xxxxxxxxxxxxxxxxxxx")
                            // Set the key.
                            .withKey("xxxxxxxxxxxxxxxxxxxxxx"))));
    // Send the request to MPC.
    CreateEncryptTaskResponse rsp = initMpcClient().createEncryptTask(req);
    // Print the response message.
    System.out.println("CreateEncryptTaskResponse=" + JsonUtils.toJSON(rsp));
    

Full Code

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.exception.ClientRequestException;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.http.HttpConfig;
import com.huaweicloud.sdk.core.utils.JsonUtils;
import com.huaweicloud.sdk.mpc.v1.MpcClient;
import com.huaweicloud.sdk.mpc.v1.model.CreateEncryptReq;
import com.huaweicloud.sdk.mpc.v1.model.CreateEncryptTaskRequest;
import com.huaweicloud.sdk.mpc.v1.model.CreateEncryptTaskResponse;
import com.huaweicloud.sdk.mpc.v1.model.Encryption;
import com.huaweicloud.sdk.mpc.v1.model.HlsEncrypt;
import com.huaweicloud.sdk.mpc.v1.model.ObsObjInfo;
import com.obs.services.internal.ServiceException;

public class TestEncrypt {
    /**
     * Initialize the MPC client.
     * @return
     */
    public static MpcClient initMpcClient() {
        HttpConfig httpConfig = HttpConfig.getDefaultHttpConfig().withIgnoreSSLVerification(true).withTimeout(3);
        // Configure the HTTP proxy.
        //httpConfig.withProxyHost("xxxxxx").withProxyPort(xxxxxx).withProxyUsername("xxxxxx").
        //        withProxyPassword("xxxxxx");
        // Enter the AK and SK. To view your AK and SK, choose My CredentialsAccess Keys under your account on the console.
        String ak = "xxxxxx";
        String sk = "xxxxxx";
        // Enter the project ID. To view your project ID, choose My CredentialsAPI Credentials under your account on the console.
        String projectId = "xxxxxx";
        // Enter the endpoint. The following uses region01 as an example.
        String endpoint = "https://mpc.region01.myhuaweicloud.com";
        BasicCredentials auth = new BasicCredentials().withAk(ak).withSk(sk).withProjectId(projectId);
        return MpcClient.newBuilder()
                .withHttpConfig(httpConfig)
                .withCredential(auth)
                .withEndpoint(endpoint)
                .build();
    }

    /**
     * Create an encryption task.
     * @param args
     */
    public static void main(String[] args) {
        // Set the paths of the input and output files.
        ObsObjInfo input = new ObsObjInfo().withBucket("mpc-east-2").withLocation("region01").withObject("input/hls/index.m3u8");
        ObsObjInfo output = new ObsObjInfo().withBucket("mpc-east-2").withLocation("region01").withObject("output");
        // Create a request.
        CreateEncryptTaskRequest req = new CreateEncryptTaskRequest()
                .withBody(new CreateEncryptReq().withInput(input).withOutput(output)
                        .withEncryption(new Encryption().withHlsEncrypt(new HlsEncrypt()
                                // Set the encryption algorithm.
                                .withAlgorithm("AES-128-CBC")
                                // Set the URL to obtain the key.
                                .withUrl("www.xxxxx.com")
                                // Set the initialization vector.
                                .withIv("xxxxxxxxxxxxxxxxxxx")
                                // Set the key.
                                .withKey("xxxxxxxxxxxxxxxxxxxxxx"))));
        // Send the encryption request.
        try {
            CreateEncryptTaskResponse rsp = initMpcClient().createEncryptTask(req);
            System.out.println("CreateEncryptTaskResponse=" + JsonUtils.toJSON(rsp));
        } catch (ClientRequestException | ConnectionException | RequestTimeoutException | ServiceException e) {
            System.out.println(e);
        }
    }
}