すべてのプロダクト
Search
ドキュメントセンター

ApsaraVideo VOD:ビデオ透かし

最終更新日:Oct 28, 2024

このトピックでは、ビデオ透かしモジュールのAPI操作の使用例を示します。 API操作は、ApsaraVideo VOD SDK for Javaにカプセル化されています。 API操作を呼び出して、透かしを追加、変更、削除、およびクエリできます。

使用上の注意

  • この例では、AccessKeyペアを使用してクライアントインスタンスを初期化します。

  • この操作のリクエストおよびレスポンスパラメーターの詳細については、 OpenAPI Explorerに移動します。 上部のナビゲーションバーで [APIドキュメント] をクリックすると、API操作に関連する情報が表示されます。

  • このトピックでは、一部の複雑なAPI操作のサンプルコードのみを示します。 他のAPI操作のサンプルコードを取得するには、次の操作を実行します。 Alibaba Cloud OpenAPI Explorerに移動します。左側のナビゲーションウィンドウで、サンプルコードを取得するAPI操作を見つけ、[パラメーター] タブで必要なパラメーターを指定します。 次に、[呼び出しの開始] をクリックします。 [SDKサンプルコード] タブで、サンプルコードを表示およびダウンロードする言語を選択します。

  • このトピックでは、ApsaraVideo VOD SDK for Java V1.0を使用してAPI操作を呼び出す方法について説明します。 ApsaraVideo VOD SDK for Java V2.0を使用してAPI操作を呼び出す場合、Alibaba Cloud OpenAPI Explorerでサンプルコードを取得するときにV2.0を指定します。image.png

クライアントを初期化

SDKを使用する前に、クライアントを初期化してください。 詳細については、「初期化」をご参照ください。

透かしを追加する

AddWatermark操作を呼び出して、ウォーターマークを追加できます。

このAPI操作の詳細については、AddWatermarkを参照してください。

説明
  • アップロードURLと資格情報を取得する方法の詳細については、「CreateUploadAttachedMedia」をご参照ください。

  • OSS (Object Storage Service) バケットに透かしファイルをアップロードする方法の詳細については、「OSSオブジェクトのアップロード」をご参照ください。

サンプルコード:

import com.aliyuncs.auth.AlibabaCloudCredentials;
import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider;
import com.aliyuncs.vod.model.v20170321.AddWatermarkRequest;
import com.aliyuncs.vod.model.v20170321.AddWatermarkResponse;

/** 
 * Obtain the AccessKey information.
 */
public static DefaultAcsClient initVodClient() throws ClientException {
    // Specify the region in which ApsaraVideo VOD is activated.
    String regionId = "cn-shanghai";  
    // The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. We recommend that you use a RAM user to call API operations or perform routine O&M. 
    // We recommend that you do not save your AccessKey pair (AccessKey ID and AccessKey secret) in your project code. Otherwise, the AccessKey pair may be leaked. As a result, the security of all resources in your account is compromised. 
    // In this example, the system reads the AccessKey pair from environment variables to implement authentication for API access. Before you run the sample code, configure the environment variables ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET. 
    DefaultProfile profile = DefaultProfile.getProfile(regionId, System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
    DefaultAcsClient client = new DefaultAcsClient(profile);
    return client;
    }

/**
 * Add a watermark configuration function.
 */
public static AddWatermarkResponse addWatermark(DefaultAcsClient client) throws Exception {
    AddWatermarkRequest request = new AddWatermarkRequest();
    // The name of the watermark.
    request.setName("addwatermark");
    // The URL of the watermark file that is stored in an OSS bucket. Example: http://example.oss-cn-shanghai.aliyuncs.com/watermark/test-****.png.
    String fileUrl = "<your watermarkFile URL>";
    // If you want to use an image watermark, you must specify the OSS URL of the watermark file. The watermark file and video file must reside in the same region. For example, if a video is stored in the China (Shanghai) region, you can use only a watermark file that is stored in the China (Shanghai) region for the video.
    request.setFileUrl(fileUrl);
    // The watermark configurations.
    JSONObject watermarkConfig = null;
    // The position of the image watermark.
    watermarkConfig = buildImageWatermarkConfig();

    // The position of the text watermark.
    //watermarkConfig = buildTextWatermarkConfig();
    request.setWatermarkConfig(watermarkConfig.toJSONString());

    // The type of the watermark. Set the value to Text for text watermarks and Image for image watermarks.
    request.setType("Image");
    return client.getAcsResponse(request);
}


/**
 * Sample code
 * @param args
 * @throws ClientException
 */
public static void main(String[] args) throws ClientException {
    DefaultAcsClient client = initVodClient();
    AddWatermarkResponse response = new AddWatermarkResponse();
    try {
        // The watermark information.
        response = addWatermark(client);
        // The ID of the watermark.
        System.out.println("WatermarkId = " + response.getWatermarkInfo().getWatermarkId());
        // The position and effect configurations of the watermark.
        System.out.println("WatermarkConfig = " + response.getWatermarkInfo().getWatermarkConfig());
        // The URL of the watermark file. If you want to use a text watermark, leave this parameter empty.
        System.out.println("FileUrl = " + response.getWatermarkInfo().getFileUrl());
    } catch (Exception e) {
        System.out.println("ErrorMessage = " + e.getLocalizedMessage());
    }
    System.out.println("RequestId = " + response.getRequestId());
}

/**
 * Construct the image watermark parameters and modify the corresponding parameter values based on your business requirements.
 * @return
 */
public static JSONObject buildImageWatermarkConfig() {
    JSONObject watermarkConfig = new JSONObject();
    // The horizontal offset of the watermark on the output video.
    watermarkConfig.put("Dx", "8");
    // The vertical offset of the watermark on the output video.
    watermarkConfig.put("Dy", "8");
    // The width of the watermark on the output video.
    watermarkConfig.put("Width", "55");
    // The height of the watermark on the output video.
    watermarkConfig.put("Height", "55");
    // The relative position of the watermark to the output video. The watermark can be in the upper-left corner, upper-right corner, lower-left corner, or lower-right corner.
    watermarkConfig.put("ReferPos", "BottomRight");
    // The timeline of the watermark. You can specify the start time and duration for the watermark.
    JSONObject timeline = new JSONObject();
    // The time when the watermark starts to be displayed.
    timeline.put("Start", "2");
    // The duration for the watermark.
    timeline.put("Duration", "ToEND");
    watermarkConfig.put("Timeline", timeline);
    return watermarkConfig;
}

/**
 * Construct the text watermark parameters and modify the corresponding parameter values based on your business requirements.
 * @return
 */
public static JSONObject buildTextWatermarkConfig() {
    JSONObject watermarkConfig = new JSONObject();
    // The content of the text watermark.
    watermarkConfig.put("Content", "testwatermark");
    // The font of the text watermark.
    watermarkConfig.put("FontName", "SimSun");
    // The font size of the text watermark.
    watermarkConfig.put("FontSize", 25);
    // The font color of the text watermark. You can specify a color name or RGB color code, such as #000000.
    watermarkConfig.put("FontColor", "Black");
    // The transparency of the text watermark.
    watermarkConfig.put("FontAlpha", "0.2");
    // The stroke color of the text watermark. You can specify a color name or RGB color code, such as #ffffff.
    watermarkConfig.put("BorderColor", "White");
    // The stroke width of the text watermark.
    watermarkConfig.put("BorderWidth", 1);
    // The distance between the upper side of the watermark and the upper side of the output video.
    watermarkConfig.put("Top", 20);
    // The distance between the left side of the watermark and the left side of the output video.
    watermarkConfig.put("Left", 15);
    return watermarkConfig;
}

透かしの変更

UpdateWatermark操作を呼び出して、透かしを変更できます。

このAPI操作の詳細については、UpdateWatermarkを参照してください。

サンプルコード:

import com.aliyuncs.auth.AlibabaCloudCredentials;
import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider;
import com.aliyuncs.vod.model.v20170321.UpdateWatermarkRequest;
import com.aliyuncs.vod.model.v20170321.UpdateWatermarkResponse;

/** 
 * Obtain the AccessKey information.
 */
public static DefaultAcsClient initVodClient() throws ClientException {
    // Specify the region in which ApsaraVideo VOD is activated.
    String regionId = "cn-shanghai";  
    // The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. We recommend that you use a RAM user to call API operations or perform routine O&M. 
    // We recommend that you do not save your AccessKey pair (AccessKey ID and AccessKey secret) in your project code. Otherwise, the AccessKey pair may be leaked. As a result, the security of all resources in your account is compromised. 
    // In this example, the system reads the AccessKey pair from environment variables to implement authentication for API access. Before you run the sample code, configure the environment variables ALIBABA_CLOUD_ACCESS_KEY_ID and ALIBABA_CLOUD_ACCESS_KEY_SECRET. 
    DefaultProfile profile = DefaultProfile.getProfile(regionId, System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
    DefaultAcsClient client = new DefaultAcsClient(profile);
    return client;
    }

/**
 * Modify a watermark.
 * Note: The file URL of an image watermark cannot be modified. If you want to modify the URL, you must create a new image watermark.
 */
public static UpdateWatermarkResponse updateWatermark(DefaultAcsClient client) throws Exception {
    UpdateWatermarkRequest request = new UpdateWatermarkRequest();
    request.setName("updatewatermark");
    // The ID of the watermark whose configurations you want to modify.
    request.setWatermarkId("421ddddd4f6e734a526fd2****");
    // The watermark configurations.
    JSONObject watermarkConfig = null;
    // The position of the image watermark.
    //watermarkConfig = buildImageWatermarkConfig();
    // The position of the text watermark.
    watermarkConfig = buildTextWatermarkConfig();
    request.setWatermarkConfig(watermarkConfig.toJSONString());
    return client.getAcsResponse(request);
}

/**
 * Sample code
 */
public static void main(String[] args) {
    DefaultAcsClient client = initVodClient();
    UpdateWatermarkResponse response = new UpdateWatermarkResponse();
    try {
        response = updateWatermark(client);
        // The ID of the watermark.
        System.out.println("WatermarkId = " + response.getWatermarkInfo().getWatermarkId());
        // The position and effect configurations of the watermark.
        System.out.println("WatermarkConfig = " + response.getWatermarkInfo().getWatermarkConfig());
        // The URL of the watermark file. If you want to use a text watermark, leave this parameter empty.
        System.out.println("FileUrl = " + response.getWatermarkInfo().getFileUrl());
    } catch (Exception e) {
        System.out.println("ErrorMessage = " + e.getLocalizedMessage());
    }
    System.out.println("RequestId = " + response.getRequestId());
}

/**
 * Construct the image watermark parameters and modify the corresponding parameter values based on your business requirements.
 * @return
 */
public static JSONObject buildImageWatermarkConfig() {
    JSONObject watermarkConfig = new JSONObject();
    // The horizontal offset of the watermark on the output video.
    watermarkConfig.put("Dx", "10");
    // The vertical offset of the watermark on the output video.
    watermarkConfig.put("Dy", "10");
    // The width of the watermark on the output video.
    watermarkConfig.put("Width", "66");
    // The height of the watermark on the output video.
    watermarkConfig.put("Height", "66");
    // The relative position of the watermark to the output video. The watermark can be in the upper-left corner, upper-right corner, lower-left corner, or lower-right corner.
    watermarkConfig.put("ReferPos", "BottomLeft");
    // The timeline of the watermark. You can specify the start time and duration for the watermark.
    JSONObject timeline = new JSONObject();
    // The time when the watermark starts to be displayed.
    timeline.put("Start", "2");
    // The duration for the watermark.
    timeline.put("Duration", "ToEND");
    watermarkConfig.put("Timeline", timeline);
    return watermarkConfig;
}

/**
 * Construct the text watermark parameters and modify the corresponding parameter values based on your business requirements.
 * @return
 */
public static JSONObject buildTextWatermarkConfig() {
    JSONObject watermarkConfig = new JSONObject();
    // The content of the text watermark.
    watermarkConfig.put("Content", "testwatermark");
    // The font of the text watermark.
    watermarkConfig.put("FontName", "SimSun");
    // The font size of the text watermark.
    watermarkConfig.put("FontSize", 40);
    // The font color of the text watermark. You can specify a color name or RGB color code, such as #000000.
    watermarkConfig.put("FontColor", "Black");
    // The transparency of the text watermark.
    watermarkConfig.put("FontAlpha", "0.2");
    // The stroke color of the text watermark. You can specify a color name or RGB color code, such as #ffffff.
    watermarkConfig.put("BorderColor", "White");
    // The stroke width of the text watermark.
    watermarkConfig.put("BorderWidth", 2);
    // The distance between the upper side of the watermark and the upper side of the output video.
    watermarkConfig.put("Top", 20);
    // The distance between the left side of the watermark and the left side of the output video.
    watermarkConfig.put("Left", 15);
    return watermarkConfig;
}

透かしを削除する

DeleteWatermark操作を呼び出して、透かしを削除できます。

このAPI操作の詳細については、DeleteWatermarkを参照してください。

複数の透かしを照会する

ListWatermark操作を呼び出して、複数の透かしを照会できます。

このAPI操作の詳細については、ListWatermarkを参照してください。

単一の透かしを照会する

GetWatermark操作を呼び出して、単一の透かしに関する詳細を照会できます。

このAPI操作の詳細については、GetWatermarkを参照してください。

透かしをデフォルトの透かしとして指定する

SetDefaultWatermark操作を呼び出して、透かしをデフォルトの透かしとして指定できます。

このAPI操作の詳細については、SetDefaultWatermarkを参照してください。