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

ApsaraVideo VOD:メディアのアップロード

最終更新日:Jun 11, 2026

ApsaraVideo VOD は、サーバーサイドのアップロード API を提供します。このトピックでは、アップロード認証情報の取得、認証情報の更新、およびメディアアセットを登録するための Java SDK サンプルコードを説明します。

ユースケースと関連 API

重要

このトピックでは、アップロード資格情報やアップロードURLを取得する操作など、API操作の呼び出し例のみを示します。 次の表に、API操作を呼び出してメディアファイルをアップロードできるシナリオを示します。

API 操作

シナリオ

CreateUploadVideo

  • Object Storage Service (OSS) SDKを使用してメディアファイルをアップロードする場合は、ApsaraVideo VOD SDKを使用し、操作を呼び出してアップロード資格情報とアップロードURLを取得する必要があります。 取得したURLと資格情報はBase64-encodedであり、OSSClientインスタンスの初期化に使用する前にデコードする必要があります。 詳細については、「OSS SDK を使用したファイルのアップロード」をご参照ください。 上記のトピックでは、OSS SDK for Javaを使用してメディアファイルをアップロードするための完全なサンプルコードについて説明します。 他の言語のサンプルコードの詳細については、「ApsaraVideo VOD API を呼び出してメディアファイルをアップロードする」をご参照ください。

  • アップロードSDKを使用してクライアントからメディアファイルをアップロードする場合は、ApsaraVideo VOD SDKを統合し、操作を呼び出してアップロード資格情報とアップロードURLを取得または更新する必要があります。 URLと資格情報をデコードすることなくクライアントに発行できます。 詳細については、「クライアントアップロードSDK」をご参照ください。

RefreshUploadVideo

CreateUploadImage

CreateUploadAttachedMedia

UploadMediaByURL

  • UploadMediaByURLを呼び出して、ソースファイルのURLを使用してメディアファイルをアップロードできます。 これにより、アップロードSDKを使用してメディアファイルをApsaraVideo VODにアップロードする前に、メディアファイルをサーバーまたはデバイスにダウンロードする必要がなくなります。

    説明

    URLベースのアップロードジョブは非同期です。 URLベースのアップロードジョブを送信した後、完了するまでに数時間、さらには数日かかる場合があります。

  • GetURLUploadInfos操作を呼び出して、URLベースのアップロードジョブの進行状況を照会できます。

GetURLUploadInfos

RegisterMedia

前提条件

  • SDK がインストールされていること。インストール

  • クライアントインスタンスが初期化されていること。初期化

注意事項

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

  • リクエストとレスポンスのパラメーターの詳細については、Alibaba Cloud OpenAPI Explorer にある [API Documentations] タブをご参照ください。

  • 他の API オペレーションの SDK サンプルについては、Alibaba Cloud OpenAPI Explorer にアクセスしてください。[Parameters] タブでパラメーターを指定して呼び出しを開始し、[SDK Sample Code] タブで SDK のバージョンと言語を選択すると、コードの表示とダウンロードができます。

  • このトピックの例では SDK V1.0 を使用しています。V2.0 の例については、OpenAPI Explorer で正しい SDK バージョンを選択してください。image.png

API 呼び出しの例

音声・動画のアップロード認証情報の取得

CreateUploadVideo を呼び出して、音声または動画ファイルのアップロード URL と認証情報を取得します。

Alibaba Cloud OpenAPI Explorer: CreateUploadVideo

サンプルコード:

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.auth.AlibabaCloudCredentials;
import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.vod.model.v20170321.CreateUploadVideoRequest;
import com.aliyuncs.vod.model.v20170321.CreateUploadVideoResponse;

/**
 *
 * 音声または動画ファイルのアップロード認証情報を取得する例。
 */
public class AudioOrVideoCreateUploadDemo {

    /** 
     * AcsClient を初期化します。
     */
    public static DefaultAcsClient initVodClient() throws ClientException {
    // ApsaraVideo VOD のサービスリージョン。
    String regionId = "cn-shanghai";  
    // Alibaba Cloud アカウントの AccessKey は、すべての API オペレーションに対する完全な権限を持っています。セキュリティを強化するため、RAM ユーザーを使用して API 呼び出しを行うことを推奨します。
    // プロジェクトコードに AccessKey ID と AccessKey secret をハードコーディングしないでください。ハードコーディングすると、AccessKey ペアが漏洩し、すべてのリソースのセキュリティが侵害される可能性があります。
    // この例では、環境変数から AccessKey ペアを取得して API リクエストを認証する方法を示します。コードを実行する前に、ALIBABA_CLOUD_ACCESS_KEY_ID および 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;
    }

    /**
     * 音声または動画ファイルのアップロード URL と認証情報を取得します。
     * @param client リクエストを送信するクライアント。
     * @return CreateUploadVideoResponse 音声または動画ファイルのアップロード URL と認証情報を含むレスポンス。
     * @throws Exception
     */
    public static CreateUploadVideoResponse createUploadVideo(DefaultAcsClient client) throws Exception {
        CreateUploadVideoRequest request = new CreateUploadVideoRequest();
        request.setTitle("this is a sample");
        request.setFileName("filename.mp4");

        // オプション。ユーザーデータ。コールバック URL を指定し、透過的なデータ転送を有効にする場合にこのパラメーターを設定します。
        //JSONObject userData = new JSONObject();

        // UserData のコールバック設定。
        // イベント通知のコールバック設定。これらの設定を指定すると、グローバルイベント通知設定が上書きされます。
        //JSONObject messageCallback = new JSONObject();
        // コールバック URL を設定します。
        //messageCallback.put("CallbackURL", "http://192.168.0.1/16");
        // コールバックメソッドを設定します。デフォルト値: http。
        //messageCallback.put("CallbackType", "http");
        //userData.put("MessageCallback", messageCallback.toJSONString());

        // UserData の透過的なデータ転送設定。
        // コールバックで返されるカスタムの拡張フィールド。
        //JSONObject extend = new JSONObject();
        //extend.put("MyId", "user-defined-id");
        //userData.put("Extend", extend.toJSONString());

        //request.setUserData(userData.toJSONString());

        return client.getAcsResponse(request);
    }
  
    /** 
     * リクエストの例。
     */
    public static void main(String[] argv) throws ClientException {
        try {
            DefaultAcsClient client = initVodClient();
            CreateUploadVideoResponse response = new CreateUploadVideoResponse();
            response = createUploadVideo(client);
            System.out.print("VideoId = " + response.getVideoId() + "\n");
            System.out.print("UploadAddress = " + response.getUploadAddress() + "\n");
            System.out.print("UploadAuth = " + response.getUploadAuth() + "\n");
            System.out.print("RequestId = " + response.getRequestId() + "\n");
        } catch (Exception e) {
            System.out.print("ErrorMessage = " + e.getLocalizedMessage());
        }
    }
}

音声・動画のアップロード認証情報の更新

RefreshUploadVideo を呼び出して、期限切れの音声または動画ファイルのアップロード認証情報を更新します。

Alibaba Cloud OpenAPI Explorer: RefreshUploadVideo

サンプルコード:

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.auth.AlibabaCloudCredentials;
import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.vod.model.v20170321.RefreshUploadVideoRequest;
import com.aliyuncs.vod.model.v20170321.RefreshUploadVideoResponse;

/**
*
* 音声または動画ファイルのアップロード認証情報を更新する例。
*/
public class AudioOrVideoRefreshUploadDemo {

    /** 
     * AcsClient を初期化します。
     */
    public static DefaultAcsClient initVodClient() throws ClientException {
    // ApsaraVideo VOD のサービスリージョン。
    String regionId = "cn-shanghai";  
    // Alibaba Cloud アカウントの AccessKey は、すべての API オペレーションに対する完全な権限を持っています。セキュリティを強化するため、RAM ユーザーを使用して API 呼び出しを行うことを推奨します。
    // プロジェクトコードに AccessKey ID と AccessKey secret をハードコーディングしないでください。ハードコーディングすると、AccessKey ペアが漏洩し、すべてのリソースのセキュリティが侵害される可能性があります。
    // この例では、環境変数から AccessKey ペアを取得して API リクエストを認証する方法を示します。コードを実行する前に、ALIBABA_CLOUD_ACCESS_KEY_ID および 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;
    }

    /**
     * 音声または動画ファイルのアップロード認証情報を更新します。
     * @param client リクエストを送信するクライアント。
     * @return RefreshUploadVideoResponse 更新された音声または動画ファイルのアップロード認証情報を含むレスポンス。
     * @throws Exception
     */
    public static RefreshUploadVideoResponse refreshUploadVideo(DefaultAcsClient client) throws Exception {
        RefreshUploadVideoRequest request = new RefreshUploadVideoRequest();
        // 音声または動画ファイルの ID。
        request.setVideoId("<VideoId>");
        return client.getAcsResponse(request);
    }

    /** 
     * リクエストの例。
     */
    public static void main(String[] argv)  {

        try {
            DefaultAcsClient client = initVodClient();
            RefreshUploadVideoResponse response = refreshUploadVideo(client);
            System.out.print("VideoId = " + response.getVideoId() + "\n");
            System.out.print("UploadAddress = " + response.getUploadAddress() + "\n");
            System.out.print("UploadAuth = " + response.getUploadAuth() + "\n");
            System.out.print("RequestId = " + response.getRequestId() + "\n");
        } catch (Exception e) {
            System.out.print("ErrorMessage = " + e.getLocalizedMessage());
        }
    }
}

画像のアップロード認証情報の取得

CreateUploadImage を呼び出して、画像のアップロード URL と認証情報を取得します。

Alibaba Cloud OpenAPI Explorer: CreateUploadImage

サンプルコード:

import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.auth.AlibabaCloudCredentials;
import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.vod.model.v20170321.CreateUploadImageRequest;
import com.aliyuncs.vod.model.v20170321.CreateUploadImageResponse;

/**
 * 画像のアップロード認証情報を取得する例。
 *
 */
public class ImageCreateUploadDemo {

    /** 
     * AcsClient を初期化します。
     */
    public static DefaultAcsClient initVodClient() throws ClientException {
    // ApsaraVideo VOD のサービスリージョン。
    String regionId = "cn-shanghai";  
    // Alibaba Cloud アカウントの AccessKey は、すべての API オペレーションに対する完全な権限を持っています。セキュリティを強化するため、RAM ユーザーを使用して API 呼び出しを行うことを推奨します。
    // プロジェクトコードに AccessKey ID と AccessKey secret をハードコーディングしないでください。ハードコーディングすると、AccessKey ペアが漏洩し、すべてのリソースのセキュリティが侵害される可能性があります。
    // この例では、環境変数から AccessKey ペアを取得して API リクエストを認証する方法を示します。コードを実行する前に、ALIBABA_CLOUD_ACCESS_KEY_ID および 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;
    }

    /**
     * 画像のアップロード URL と認証情報を取得します。
     * @param client リクエストを送信するクライアント。
     * @return CreateUploadImageResponse 画像のアップロード URL と認証情報を含むレスポンス。
     * @throws Exception
     */
    public static CreateUploadImageResponse createUploadImage(DefaultAcsClient client) throws Exception {
        CreateUploadImageRequest request = new CreateUploadImageRequest();
        // 画像タイプを設定します。
        request.setImageType("default");
        // 画像ファイルの拡張子を設定します。
        request.setImageExt("gif");
        // 画像のタイトルを設定します。
        request.setTitle("this is a sample");

        // オプション。ユーザーデータ。コールバック URL を指定し、透過的なデータ転送を有効にする場合にこのパラメーターを設定します。
        JSONObject userData = new JSONObject();

        // UserData のコールバック設定。
        // イベント通知のコールバック設定。これらの設定を指定すると、グローバルイベント通知設定が上書きされます。
        JSONObject messageCallback = new JSONObject();
        // コールバック URL を設定します。
        messageCallback.put("CallbackURL", "http://192.168.0.0/16");
        // コールバックメソッドを設定します。デフォルト値: http。
        messageCallback.put("CallbackType", "http");
        userData.put("MessageCallback", messageCallback.toJSONString());

        JSONObject extend = new JSONObject();
        extend.put("MyId", "user-defined-id");
        userData.put("Extend", extend.toJSONString());

        request.setUserData(userData.toJSONString());

        return client.getAcsResponse(request);
    }

    /** 
     * リクエストの例。
     */
    public static void main(String[] argv)  {

        try {
            DefaultAcsClient client = initVodClient();
            CreateUploadImageResponse response = createUploadImage(client);
            System.out.print("ImageId = " + response.getImageId() + "\n");
            System.out.print("ImageURL = " + response.getImageURL() + "\n");
            System.out.print("UploadAddress = " + response.getUploadAddress() + "\n");
            System.out.print("UploadAuth = " + response.getUploadAuth() + "\n");
            System.out.print("RequestId = " + response.getRequestId() + "\n");
        } catch (Exception e) {
            System.out.print("ErrorMessage = " + e.getLocalizedMessage());
        }
    }
}

補助メディアのアップロード認証情報の取得

CreateUploadAttachedMedia を呼び出して、ウォーターマークや字幕ファイルなどの補助メディアアセットのアップロード URL と認証情報を取得します。

Alibaba Cloud OpenAPI Explorer: CreateUploadAttachedMedia

サンプルコード:

import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.auth.AlibabaCloudCredentials;
import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.vod.model.v20170321.CreateUploadAttachedMediaRequest;
import com.aliyuncs.vod.model.v20170321.CreateUploadAttachedMediaResponse;

/**
 * 補助メディアアセットのアップロード認証情報を取得する例。
 *
 */
public class AttachedMediaCreateUploadDemo {

     /** 
     * AcsClient を初期化します。
     */
    public static DefaultAcsClient initVodClient() throws ClientException {
    // ApsaraVideo VOD のサービスリージョン。
    String regionId = "cn-shanghai";
    // Alibaba Cloud アカウントの AccessKey は、すべての API オペレーションに対する完全な権限を持っています。セキュリティを強化するため、RAM ユーザーを使用して API 呼び出しを行うことを推奨します。
    // プロジェクトコードに AccessKey ID と AccessKey secret をハードコーディングしないでください。ハードコーディングすると、AccessKey ペアが漏洩し、すべてのリソースのセキュリティが侵害される可能性があります。
    // この例では、環境変数から AccessKey ペアを取得して API リクエストを認証する方法を示します。コードを実行する前に、ALIBABA_CLOUD_ACCESS_KEY_ID および 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;
    }

    /**
     * ウォーターマークや字幕ファイルなどの補助メディアアセットのアップロード URL と認証情報を取得します。
     * @param client リクエストを送信するクライアント。
     * @return CreateUploadAttachedMediaResponse 補助メディアアセットのアップロード URL と認証情報を含むレスポンス。
     * @throws Exception
     */
    public static CreateUploadAttachedMediaResponse createUploadAttachedMedia(DefaultAcsClient client) throws Exception {
        CreateUploadAttachedMediaRequest request = new CreateUploadAttachedMediaRequest();
        // ビジネスタイプを設定します。
        request.setBusinessType("watermark");
        // ファイルの拡張子を設定します。
        request.setMediaExt("gif");
        // タイトルを設定します。
        request.setTitle("this is a sample");

        // オプション。ユーザーデータ。コールバック URL を指定し、透過的なデータ転送を有効にする場合にこのパラメーターを設定します。
        JSONObject userData = new JSONObject();

        // UserData のコールバック設定。
        // イベント通知のコールバック設定。これらの設定を指定すると、グローバルイベント通知設定が上書きされます。
        JSONObject messageCallback = new JSONObject();
        // コールバック URL を設定します。
        messageCallback.put("CallbackURL", "http://192.168.0.0/16");
        // コールバックメソッドを設定します。デフォルト値: http。
        messageCallback.put("CallbackType", "http");
        userData.put("MessageCallback", messageCallback.toJSONString());

        JSONObject extend = new JSONObject();
        extend.put("MyId", "user-defined-id");
        userData.put("Extend", extend.toJSONString());

        request.setUserData(userData.toJSONString());

        return client.getAcsResponse(request);
    }
    /** 
     * リクエストの例。
     */
    public static void main(String[] argv) {

        try {
            DefaultAcsClient client = initVodClient();
            CreateUploadAttachedMediaResponse response = createUploadAttachedMedia(client);
            System.out.print("mediaId = " + response.getMediaId() + "\n");
            System.out.print("mediaURL = " + response.getMediaURL() + "\n");
            System.out.print("UploadAddress = " + response.getUploadAddress() + "\n");
            System.out.print("UploadAuth = " + response.getUploadAuth() + "\n");
            System.out.print("RequestId = " + response.getRequestId() + "\n");
        } catch (Exception e) {
            System.out.print("ErrorMessage = " + e.getLocalizedMessage());
        }
    }
}

URL ベースの一括アップロード

UploadMediaByURL を呼び出して、URL を使用してメディアファイルを一括アップロードします。

Alibaba Cloud OpenAPI Explorer: UploadMediaByURL

サンプルコード:

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.auth.AlibabaCloudCredentials;
import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.vod.model.v20170321.UploadMediaByURLRequest;
import com.aliyuncs.vod.model.v20170321.UploadMediaByURLResponse;

import java.net.URLEncoder;

/**
 * URLベースのアップロードの例。
 *
 */
public class AudioOrVideoUploadByUrl {

    /** 
     * AcsClient を初期化します。
     */
    public static DefaultAcsClient initVodClient() throws ClientException {
    // ApsaraVideo VOD のサービスリージョン。
    String regionId = "cn-shanghai"; 
    // Alibaba Cloud アカウントの AccessKey は、すべての API オペレーションに対する完全な権限を持っています。セキュリティを強化するため、RAM ユーザーを使用して API 呼び出しを行うことを推奨します。
    // プロジェクトコードに AccessKey ID と AccessKey secret をハードコーディングしないでください。ハードコーディングすると、AccessKey ペアが漏洩し、すべてのリソースのセキュリティが侵害される可能性があります。
    // この例では、環境変数から AccessKey ペアを取得して API リクエストを認証する方法を示します。コードを実行する前に、ALIBABA_CLOUD_ACCESS_KEY_ID および 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;
    }

    /**
     * URL を使用して一括アップロードします。
     *
     * @param client リクエストを送信するクライアント。
     * @return UploadMediaByURLResponse URLベースの一括アップロード操作のレスポンス。
     * @throws Exception
     */
    public static UploadMediaByURLResponse uploadMediaByURL(DefaultAcsClient client) throws Exception {
        UploadMediaByURLRequest request = new UploadMediaByURLRequest();
        String url = "http://video_01.mp4";
        String encodeUrl = URLEncoder.encode(url, "UTF-8");
        // ソース動画ファイルの URL。
        request.setUploadURLs(encodeUrl);

        // アップロードする動画のメタデータ。
        JSONObject uploadMetadata = new JSONObject();
        // アップロードするソース動画ファイルの URL。これは UploadURLs パラメーターの URL と一致する必要があります。
        uploadMetadata.put("SourceUrl", encodeUrl);
        // 動画のタイトル。
        uploadMetadata.put("Title", "upload by url sample");

        JSONArray uploadMetadataList = new JSONArray();
        uploadMetadataList.add(uploadMetadata);
        request.setUploadMetadatas(uploadMetadataList.toJSONString());

        // オプション。ユーザーデータ。コールバック URL を指定し、透過的なデータ転送を有効にする場合にこのパラメーターを設定します。
        JSONObject userData = new JSONObject();

        // UserData のコールバック設定。
        // イベント通知のコールバック設定。これらの設定を指定すると、グローバルイベント通知設定が上書きされます。
        JSONObject messageCallback = new JSONObject();
        // コールバック URL を設定します。
        messageCallback.put("CallbackURL", "http://192.168.0.0/16");
        // コールバックメソッドを設定します。デフォルト値: http。
        messageCallback.put("CallbackType", "http");
        userData.put("MessageCallback", messageCallback.toJSONString());

        JSONObject extend = new JSONObject();
        extend.put("MyId", "user-defined-id");
        userData.put("Extend", extend.toJSONString());

        request.setUserData(userData.toJSONString());

        return client.getAcsResponse(request);
    }

    /** 
     * リクエストの例。
     */
    public static void main(String[] argv) {

        try {
            DefaultAcsClient client = initVodClient();
            UploadMediaByURLResponse response = uploadMediaByURL(client);
            System.out.print("UploadJobs = " + JSON.toJSONString(response.getUploadJobs()) + "\n");
            System.out.print("RequestId = " + response.getRequestId() + "\n");
        } catch (Exception e) {
            System.out.print("ErrorMessage = " + e.getLocalizedMessage());
        }
    }

}

メディアアセットの登録

RegisterMedia を呼び出してメディアアセットを登録します。

Alibaba Cloud OpenAPI Explorer: RegisterMedia

サンプルコード:

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.auth.AlibabaCloudCredentials;
import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.vod.model.v20170321.RegisterMediaRequest;
import com.aliyuncs.vod.model.v20170321.RegisterMediaResponse;

/**
 * メディアアセット登録の例。
 *
 */
public class MediaRegisterDemo {

    /** 
     * AcsClient を初期化します。
     */
    public static DefaultAcsClient initVodClient() throws ClientException {
    // ApsaraVideo VOD のサービスリージョン。
    String regionId = "cn-shanghai";  
    // Alibaba Cloud アカウントの AccessKey は、すべての API オペレーションに対する完全な権限を持っています。セキュリティを強化するため、RAM ユーザーを使用して API 呼び出しを行うことを推奨します。
    // プロジェクトコードに AccessKey ID と AccessKey secret をハードコーディングしないでください。ハードコーディングすると、AccessKey ペアが漏洩し、すべてのリソースのセキュリティが侵害される可能性があります。
    // この例では、環境変数から AccessKey ペアを取得して API リクエストを認証する方法を示します。コードを実行する前に、ALIBABA_CLOUD_ACCESS_KEY_ID および 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;
    }

    /**
     * メディアアセットを登録します。
     * @param client リクエストを送信するクライアント。
     * @return RegisterMediaResponse メディアアセット登録操作のレスポンス。
     * @throws Exception
     */
    public static RegisterMediaResponse registerMedia(DefaultAcsClient client) throws Exception {
        RegisterMediaRequest request = new RegisterMediaRequest();
        JSONArray metaDataArray = new JSONArray();
        JSONObject metaData = new JSONObject();
        // タイトル。
        metaData.put("Title", "this is a sample");
        // ソースファイルの URL。ファイル名は一意である必要があります。同じ名前のファイルを追加すると、そのファイルは既存の一意のメディア ID に関連付けられます。
        metaData.put("FileURL", "https://192.168.0.0/16.oss-cn-shanghai.aliyuncs.com/vod_sample.mp4");
        // 登録するメディアアセットのメタデータを指定します。
        metaDataArray.add((metaData));
        request.setRegisterMetadatas(metaDataArray.toJSONString());
        return client.getAcsResponse(request);
    }

    /** 
     * リクエストの例。
     */
    public static void main(String[] argv)  {

        try {
            DefaultAcsClient client = initVodClient();
            RegisterMediaResponse response = registerMedia(client);
            if (response.getFailedFileURLs() != null && response.getFailedFileURLs().size() > 0) {
                for (String fileURL : response.getFailedFileURLs()) {
                    System.out.print("FailedFileURL = " + fileURL + "\n");
                }
            }
            if (response.getRegisteredMediaList() != null && response.getRegisteredMediaList().size() > 0) {
                for (RegisterMediaResponse.RegisteredMedia registeredMedia : response.getRegisteredMediaList()) {
                    System.out.print("MediaId = " + registeredMedia.getMediaId());
                    System.out.print("FileURL = " + registeredMedia.getFileURL());
                    System.out.print("NewRegister = " + registeredMedia.getNewRegister());
                    System.out.print("RequestId = " + response.getRequestId() + "\n");
                }
            }
        } catch (Exception e) {
            System.out.print("ErrorMessage = " + e.getLocalizedMessage());
        }

    }

}

URL アップロード情報の照会

GetURLUploadInfos を呼び出して、URL ベースのアップロードジョブのステータスと詳細を照会します。

Alibaba Cloud OpenAPI Explorer: GetURLUploadInfos

サンプルコード:

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.auth.AlibabaCloudCredentials;
import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.vod.model.v20170321.GetURLUploadInfosRequest;
import com.aliyuncs.vod.model.v20170321.GetURLUploadInfosResponse;
import org.apache.commons.lang3.StringUtils;

import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;

/**
 * URL アップロード情報を取得する例。
 */
public class URLUploadInfosGetDemo {
    
    /** 
     * AcsClient を初期化します。
     */
    public static DefaultAcsClient initVodClient() throws ClientException {
    // ApsaraVideo VOD のサービスリージョン。
    String regionId = "cn-shanghai";  
    // Alibaba Cloud アカウントの AccessKey は、すべての API オペレーションに対する完全な権限を持っています。セキュリティを強化するため、RAM ユーザーを使用して API 呼び出しを行うことを推奨します。
    // プロジェクトコードに AccessKey ID と AccessKey secret をハードコーディングしないでください。ハードコーディングすると、AccessKey ペアが漏洩し、すべてのリソースのセキュリティが侵害される可能性があります。
    // この例では、環境変数から AccessKey ペアを取得して API リクエストを認証する方法を示します。コードを実行する前に、ALIBABA_CLOUD_ACCESS_KEY_ID および 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;
    }

    /**
     * URL アップロード情報を取得します。
     *
     * @param client リクエストを送信するクライアント。
     * @return GetURLUploadInfosResponse URLベースのアップロードジョブの情報を含むレスポンス。
     * @throws Exception
     */
    public static GetURLUploadInfosResponse getURLUploadInfos(DefaultAcsClient client) throws Exception {
        GetURLUploadInfosRequest request = new GetURLUploadInfosRequest();

        // ソース動画 URL のリスト。URL は URL エンコードされている必要があります。
        String[] urls = {
                "http://exampleBucket****.cn-shanghai.aliyuncs.com/video_01.mp4",
                "http://exampleBucket****.cn-shanghai.aliyuncs.com/video_02.flv"
        };
        List<String> encodeUrlList = new ArrayList<String>();
        for (String url : urls) {
            encodeUrlList.add(URLEncoder.encode(url, "UTF-8"));
        }
        request.setUploadURLs(StringUtils.join(encodeUrlList, ','));
        // ジョブ ID のリスト。ジョブ ID は UploadMediaByURL API のレスポンスから取得できます。
        //request.setJobIds("exampleID1,exampleID2");

        return client.getAcsResponse(request);
    }

    /** 
     * リクエストの例。
     */
    public static void main(String[] argv) {

        try {
            DefaultAcsClient client = initVodClient();
            GetURLUploadInfosResponse response = getURLUploadInfos(client);
            System.out.print("URLUploadInfoList = " + response.getURLUploadInfoList() + "\n");
            System.out.print("RequestId = " + response.getRequestId() + "\n");
        } catch (Exception e) {
            System.out.print("ErrorMessage = " + e.getLocalizedMessage());
        }
    }
}