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

ApsaraVideo VOD:Java SDK によるファイルのアップロード

最終更新日:Jun 05, 2026

Java 用サーバーサイドアップロード SDK で、音声、動画、画像、および補助メディアファイルを ApsaraVideo VOD にアップロードします。

概要

Java アップロード SDK は、ApsaraVideo VOD のアップロードプロセスに従います。基本的な手順は次のとおりです。

  1. 前提条件を完了します。

  2. Java アップロード SDK を統合します。

  3. アップロードロジック (主にアップロード設定) を実装します。

前提条件

  • ApsaraVideo VOD がアクティブ化されていること。詳細については、「ApsaraVideo VOD をアクティブ化する」をご参照ください。

  • 指定リージョンのストレージパスやコールバック設定など、アップロードに必要なシステム設定が構成されていること。詳細については、「ストレージバケットを管理する」および「コールバックを設定する」をご参照ください。

  • RAM ユーザーが作成され、ApsaraVideo VOD へのアクセスに使用されていること。Alibaba Cloud アカウントの AccessKey ペアの漏洩によるセキュリティリスクを防ぐため、RAM ユーザーを作成し、ApsaraVideo VOD へのアクセスに必要な権限を RAM ユーザーに付与することをお勧めします。その後、RAM ユーザーの AccessKey ペア を使用して ApsaraVideo VOD にアクセスできます。詳細については、「RAM ユーザーを作成して権限を付与する」をご参照ください。

  • ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数を設定します。詳細については、「Linux、macOS、および Windows で環境変数を設定する」をご参照ください。

    重要
    • Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。 API 操作の呼び出しや日常的な O&M の実行には、RAM ユーザーの AccessKey ペアを使用することをお勧めします。

    • AccessKey ID と AccessKey シークレットをプロジェクトコードにハードコードしないことをお勧めします。 そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。

  • オプション。Security Token Service ( STS ) を使用して ApsaraVideo VOD にアクセスする場合、RAM ユーザーのロールが作成され、そのロールには ApsaraVideo VOD へのアクセスに必要な権限が付与されます。詳細については、「STS を使用して動画をアップロードする」をご参照ください。

    説明

    詳細については、「クレデンシャルと STS の比較」をご参照ください。

Java 用アップロード SDK の統合

説明

この例では、Java 1.8+ と Java 用アップロード SDK 1.4.15 を使用します。手順はバージョンによって異なる場合があります。この SDK は、Maven のような依存関係管理ツールによる自動的な取得をサポートしていません。そのため、手動で JAR ファイルをダウンロードし、プロジェクトにインポートする必要があります。詳細については、トラブルシューティングをご参照ください。

  1. Java 用アップロード SDK とサンプルコードをダウンロードします。

  2. ダウンロードしたパッケージを解凍します。

    VODUploadDemo-java-1.4.15.zip を解凍すると、次のフォルダーが展開されます:

    • lib:アップロード SDK で必要な JAR パッケージ。

    • sample:アップロード SDK のサンプルコード。

  3. JAR パッケージをインポートします。

    • Eclipse: プロジェクトを右クリックし、[Properties] > [Java Build Path] > [Add JARs] を選択し、解凍した VODUploadDemo-java-1.4.15 フォルダーに移動して、lib ディレクトリからすべての jar ファイルを追加します。

    • IntelliJ IDEA: [File] > [Project Structure] > [Modules] を選択し、右側の [Dependencies] タブをクリックし、[+] をクリックしてから [JARs or directories] をクリックします。その後、解凍した VODUploadDemo-java-1.4.15 ディレクトリに移動し、lib ディレクトリからすべての jar ファイルを追加します。

    重要

    JAR パッケージをインポートした後、pom.xml などのビルド構成ファイルで依存関係を設定します。

  4. 依存関係を追加します:Alibaba Cloud SDK for Java、OSS SDK、ApsaraVideo VOD サーバーサイド SDK、および ApsaraVideo VOD アップロード SDK。

    重要
    • リストされているすべての依存関係は必須です。いずれかが欠落していると、統合に失敗します。

    • 最新の JAR パッケージ (aliyun-java-vod-upload-1.4.15.jar) を使用する場合、aliyun-sdk-oss のバージョンが 3.9.0 以降、aliyun-java-sdk-vod のバージョンが 2.16.11 以降であることを確認してください。

    • ApsaraVideo VOD は、China (Shanghai)、China (Shenzhen)、および China (Beijing) リージョンで利用できます。China (Shenzhen) または China (Beijing) へのアップロードの場合:アップロード SDK 1.4.14 以前では aliyun-java-sdk-vod 2.15.11+ と aliyun-java-sdk-core 4.4.5+ が必要です。アップロード SDK 1.4.15 以降では aliyun-java-sdk-vod 2.16.11+ と aliyun-java-sdk-core 4.4.5+ が必要です。

    依存関係の表示

       <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.5.1</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.10.2</version>
        </dependency>
         <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-vod</artifactId>
            <version>2.16.11</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.83</version>
        </dependency>
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20170516</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.2</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun.vod</groupId>
            <artifactId>upload</artifactId>
            <version>1.4.15</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/aliyun-java-vod-upload-1.4.15.jar</systemPath>
        </dependency>
                            

シナリオ 1:オーディオ/ビデオファイルのアップロード

通常のオーディオ/ビデオファイル

ApsaraVideo VOD では、4 つの方法でオーディオ/ビデオファイルをアップロードできます。

  • ローカルファイルをアップロードします。レジュームアップロード対応のマルチパートアップロードを使用します。サンプル: testUploadVideo

    • 再開可能なアップロードを使用しない場合、タスクは最大 3,000 秒間実行されます。最大ファイルサイズは、ネットワーク帯域幅とディスク I/O によって決まります。

    • 再開可能なアップロードを有効にすると、最大 48.8 TB の単一ファイルをアップロードできます。

      重要

      再開可能なアップロードでは、進行状況がローカルファイルに書き込まれるため、アップロード速度に影響する場合があります。大容量ファイルでは、この機能を有効にすることを推奨します。

  • URL を指定してネットワークストリームをアップロードします。最大 48.8 TB のファイルのレジュームアップロードに対応しています。アップロードする前にファイルをローカルにダウンロードするため、十分なディスク容量を確保してください。サンプル: testUploadURLStream

  • ローカルファイルからファイルストリームをアップロードします。レジュームアップロードはできません。最大ファイルサイズ: 5 GB。サンプル: testUploadFileStream

  • 入力ストリーム (ファイルストリームまたはネットワークストリーム) をアップロードします。レジュームアップロードには対応していません。最大ファイルサイズ: 5 GB。サンプル: testUploadStream

重要

サンプルコードを使用する場合は、必要なクラスを手動でインポートしてください。依存関係が見つからないエラーが発生した場合は、よくある質問をご参照ください。

サンプルコード

public class UploadVideoDemo {
    // 必須:AccessKey ペアを指定します。
    // Alibaba Cloud アカウントの AccessKey ペアはすべての API にアクセスできます。API へのアクセスや日常の O&M には、RAM ユーザーの使用を推奨します。
    // AccessKey ID と AccessKey Secret をプロジェクトにハードコードしないでください。ハードコードすると、AccessKey ペアが漏えいし、アカウント内のすべてのリソースが危険にさらされる可能性があります。
    // この例では、AccessKey ペアを環境変数から取得します。サンプルコードを実行する前に、ALIBABA_CLOUD_ACCESS_KEY_ID と ALIBABA_CLOUD_ACCESS_KEY_SECRET の環境変数を設定してください。
    private static final String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
    private static final String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
    public static void main(String[] args) {
    // 動画のアップロード
    // 必須。動画のタイトル。
    String title = "Test Title";
    // 1. ローカルファイルのアップロードおよびファイルストリームのアップロードの場合は、fileName をアップロードするファイルの絶対パスに設定します。例:/User/sample/FileName.mp4。(必須)
    // 2. ネットワークストリームのアップロードの場合は、fileName をソースファイル名に設定します。例:FileName.mp4。(必須)
    // 3. ストリーミングのアップロードの場合は、fileName をソースファイル名に設定します。例:FileName.mp4。(必須)
    // アップロード方法にかかわらず、ファイル名にはファイル名拡張子を含める必要があります。
    String fileName = "/Users/test/video/test.mp4";
    // ローカルファイルのアップロード
    testUploadVideo(accessKeyId, accessKeySecret, title, fileName);
    // アップロードするネットワークストリームの URL。
    String url = "http://test.aliyun.com/video/test.mp4";
    // 2. ネットワークストリームのアップロード
    // ファイル名拡張子。URL にファイル名拡張子が含まれていない場合、このパラメーターは必須です。
    String fileExtension = "mp4";
    testUploadURLStream(accessKeyId, accessKeySecret, title, url, fileExtension);
    // 3. ファイルストリームのアップロード
    testUploadFileStream(accessKeyId, accessKeySecret, title, fileName);
    // 4. ファイルストリームまたはネットワークストリームのストリーミングアップロード
    InputStream inputStream = null;
    // 4.1 ファイルストリーム
    try {
        inputStream = new FileInputStream(fileName);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    // 4.2 ネットワークストリーム
    try {
        inputStream = new URL(url).openStream();
    } catch (IOException e) {
        e.printStackTrace();
    }
    testUploadStream(accessKeyId, accessKeySecret, title, fileName, inputStream);
}
/**
 * ローカルファイルのアップロード
 *
 * @param accessKeyId
 * @param accessKeySecret
 * @param title
 * @param fileName
 */
private static void testUploadVideo(String accessKeyId, String accessKeySecret, String title, String fileName) {
    UploadVideoRequest request = new UploadVideoRequest(accessKeyId, accessKeySecret, title, fileName);
    /* マルチパートアップロードのパートサイズ。デフォルト値:2 MB。 */
    request.setPartSize(2 * 1024 * 1024L);
    /* マルチパートアップロードの同時実行スレッド数。デフォルト値:1。このパラメーターは CPU 使用率に影響します。サーバーの構成に応じてこの値を設定してください。 */
    request.setTaskNum(1);
    /* 再開可能なアップロードを有効にするかどうかを指定します。デフォルトでは無効です。ネットワークが不安定な場合やプログラムがクラッシュした場合でも、同じアップロードリクエストを再送信することで、中断点からアップロードを再開できます。アップロードに 3,000 秒以上かかる大容量ファイルには、この機能を使用することを推奨します。
    注:再開可能なアップロードを有効にすると、アップロードの進行状況がローカルファイルに書き込まれます。これにより、アップロード速度に影響する場合があります。要件に応じて、この機能を有効にするかどうかを判断してください。 */
    //request.setEnableCheckpoint(false);
    /* 低速な OSS リクエストをログに記録するための時間しきい値。パートのアップロードにかかる時間がこのしきい値を超えると、システムはデバッグログを出力します。これらのログが出力されないようにするには、しきい値を大きくしてください。単位:ミリ秒。デフォルト値:300000。 */
    //request.setSlowRequestsThreshold(300000L);
    /* 任意。ウォーターマークを追加するかどうかを指定します。テンプレートグループ ID を指定した場合、テンプレートグループ内のウォーターマーク設定が優先されます。 */
    //request.setIsShowWaterMark(true);
    /* 任意。カスタム設定、メッセージコールバック設定、アップロードアクセラレーション設定。Extend はカスタム設定、MessageCallback はメッセージコールバック設定、AccelerateConfig はアップロードアクセラレーション設定を指定します。アップロードアクセラレーション機能は、有効化後にのみ使用できます。 */
    //request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackType\":\"http\",\"CallbackURL\":\"http://example.aliyundoc.com\"},\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");
    /* 任意。動画カテゴリ ID。 */
    //request.setCateId(0);
    /* 任意。動画タグ。複数のタグはカンマ (,) で区切ります。 */
    //request.setTags("Tag1,Tag2");
    /* 任意。動画の説明。 */
    //request.setDescription("Video description");
    /* 任意。サムネイル URL。 */
    //request.setCoverURL("http://cover.example.com/image_01.jpg");
    /* 任意。テンプレートグループ ID。 */
    //request.setTemplateGroupId("8c4792cbc8694e7084fd5330e5****");
    /* 任意。ワークフロー ID。 */
    //request.setWorkflowId("d4430d07361f0*be1339577859b0****");
    /* 任意。ストレージロケーション。 */
    //request.setStorageLocation("in-201703232118266-5sejd****.oss-cn-shanghai.aliyuncs.com");
    /* デフォルトのアップロード進行状況コールバックを有効にするかどうかを指定します。デフォルトでは有効です。この例では無効化 (false) しています。 */
    //request.setPrintProgress(false);
    /* カスタムのアップロード進行状況コールバックを設定します。VoDProgressListener を継承する必要があります。 */
    /* この機能はデフォルトで無効です。この機能を有効にすると、サーバーはアップロードの詳細をログに出力します。メッセージを受信したくない場合は、この機能を無効にしてください。 */
    //request.setProgressListener(new PutObjectProgressListener());
    /* STS 情報を生成するインターフェイスの実装クラスを設定します。 */
    // request.setVoDRefreshSTSTokenListener(new RefreshSTSTokenImpl());
    /* アプリケーション ID。 */
    //request.setAppId("app-100****");
    /* ApsaraVideo VOD が有効化されているリージョン。 */
    //request.setApiRegionId("cn-shanghai");
    /* ECS インスタンスがデプロイされているリージョン。 */
    // request.setEcsRegionId("cn-shanghai");
    // ECS インスタンスがデプロイされているリージョンが ApsaraVideo VOD が有効化されているリージョンと同じ場合、内部ネットワークアップロード機能が自動的に有効になります。
    /* 任意。プロキシ設定。 */
    //OSSConfig ossConfig = new OSSConfig();
    /* 必須。プロキシサーバーのホストアドレス。 */
    //ossConfig.setProxyHost("");
    /* 必須。プロキシサーバーのポート番号。 */
    //ossConfig.setProxyPort(-1);
    /* OSS への接続に使用するプロトコル。有効な値:HTTP および HTTPS。デフォルト値:HTTP。 */
    //ossConfig.setProtocol("HTTP");
    /* ユーザーエージェント。HTTP リクエストの User-Agent ヘッダーです。デフォルト値:aliyun-sdk-java。 */
    //ossConfig.setUserAgent("");
    /* プロキシサーバー認証に使用するユーザー名。このパラメーターは、HTTPS プロトコルを使用する場合に必須です。 */
    //ossConfig.setProxyUsername("");
    /* プロキシサーバー認証に使用するパスワード。このパラメーターは、HTTPS プロトコルを使用する場合に必須です。 */
    //ossConfig.setProxyPassword("");
    //request.setOssConfig(ossConfig);
    UploadVideoImpl uploader = new UploadVideoImpl();
    UploadVideoResponse response = uploader.uploadVideo(request);
    System.out.print("RequestId=" + response.getRequestId() + "\n");  // ApsaraVideo VOD へのリクエストID。
    if (response.isSuccess()) {
        System.out.print("VideoId=" + response.getVideoId() + "\n");
    } else {
        /* コールバック URL が無効な場合、アップロードには影響せず、サービスは動画 ID とエラーコードを返します。それ以外の場合、アップロードが失敗すると動画 ID は返されません。エラーコードに基づいて問題を解決してください。 */
        System.out.print("VideoId=" + response.getVideoId() + "\n");
        System.out.print("ErrorCode=" + response.getCode() + "\n");
        System.out.print("ErrorMessage=" + response.getMessage() + "\n");
    }
}
/**
 * ネットワークストリームのアップロード。この方法では再開可能なアップロードに対応しており、最大 48.8 TB の単一ファイルをアップロードできます。
 * この方法では、まず指定した URL からファイルをローカルディスクにダウンロードし、その後ファイルをアップロードします。ローカルディスクに十分な空き容量があることを確認してください。
 * URL にファイル名拡張子が含まれていない場合は、fileExtension パラメーターを指定する必要があります。
 * @param accessKeyId
 * @param accessKeySecret
 * @param title
 * @param fileExtension
 * @param url
 */
private static void testUploadURLStream(String accessKeyId, String accessKeySecret, String title, String url, String fileExtension) {
    UploadURLStreamRequest request = new UploadURLStreamRequest(accessKeyId, accessKeySecret, title, url);
    /* ファイル名拡張子。 */
    request.setFileExtension(fileExtension);
    /* オンラインファイルをダウンロードする際の接続タイムアウト時間。単位:ミリ秒。0 は無制限を意味します。 */
    request.setDownloadConnectTimeout(1000);
    /* オンラインファイルをダウンロードする際の読み取りタイムアウト時間。単位:ミリ秒。0 は無制限を意味します。 */
    request.setDownloadReadTimeout(0);
    /* ファイルをダウンロードするローカルディレクトリ。 */
    request.setLocalDownloadFilePath("/Users/download");
    /* 任意。ウォーターマークを追加するかどうかを指定します。テンプレートグループ ID を指定した場合、テンプレートグループ内のウォーターマーク設定が優先されます。 */
    //request.setShowWaterMark(true);
    /* 任意。カスタム設定、メッセージコールバック設定、アップロードアクセラレーション設定。Extend はカスタム設定、MessageCallback はメッセージコールバック設定、AccelerateConfig はアップロードアクセラレーション設定を指定します。アップロードアクセラレーション機能は、有効化後にのみ使用できます。 */
    //request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackType\":\"http\",\"CallbackURL\":\"http://example.aliyundoc.com\"},\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");
    /* 任意。動画カテゴリ ID。 */
    //request.setCateId(0);
    /* 任意。動画タグ。複数のタグはカンマ (,) で区切ります。 */
    //request.setTags("Tag1,Tag2");
    /* 任意。動画の説明。 */
    //request.setDescription("Video description");
    /* 任意。サムネイル URL。 */
    //request.setCoverURL("http://cover.example.com/image_01.jpg");
    /* 任意。テンプレートグループ ID。 */
    //request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56****");
    /* 任意。ワークフロー ID。 */
    //request.setWorkflowId("d4430d07361f0*be1339577859b0****");
    /* 任意。ストレージロケーション。 */
    //request.setStorageLocation("in-201703232118266-5sejd****.oss-cn-shanghai.aliyuncs.com");
    /* デフォルトのアップロード進行状況コールバックを有効にするかどうかを指定します。デフォルトでは有効です。 */
    //request.setPrintProgress(true);
    /* カスタムのアップロード進行状況コールバックを設定します。VoDProgressListener を継承する必要があります。 */
    /* この機能はデフォルトで無効です。この機能を有効にすると、サーバーはアップロードの詳細をログに出力します。メッセージを受信したくない場合は、この機能を無効にしてください。 */
    //request.setProgressListener(new PutObjectProgressListener());
    /* アプリケーション ID。 */
    //request.setAppId("app-100****");
    /* ApsaraVideo VOD が有効化されているリージョン。 */
    //request.setApiRegionId("cn-shanghai");
    /* ECS インスタンスがデプロイされているリージョン。 */
    // request.setEcsRegionId("cn-shanghai");
    // ECS インスタンスがデプロイされているリージョンが ApsaraVideo VOD が有効化されているリージョンと同じ場合、内部ネットワークアップロード機能が自動的に有効になります。
     /* 任意。プロキシ設定。 */
     //OSSConfig ossConfig = new OSSConfig();
     /* 必須。プロキシサーバーのホストアドレス。 */
     //ossConfig.setProxyHost("");
     /* 必須。プロキシサーバーのポート番号。 */
     //ossConfig.setProxyPort(-1);
     /* OSS への接続に使用するプロトコル。有効な値:HTTP および HTTPS。デフォルト値:HTTP。 */
     //ossConfig.setProtocol("HTTP");
     /* ユーザーエージェント。HTTP リクエストの User-Agent ヘッダーです。デフォルト値:aliyun-sdk-java。 */
     //ossConfig.setUserAgent("");
     /* プロキシサーバー認証に使用するユーザー名。このパラメーターは、HTTPS プロトコルを使用する場合に必須です。 */
     //ossConfig.setProxyUsername("");
     /* プロキシサーバー認証に使用するパスワード。このパラメーターは、HTTPS プロトコルを使用する場合に必須です。 */
     //ossConfig.setProxyPassword("");
     //request.setOssConfig(ossConfig);
    UploadVideoImpl uploader = new UploadVideoImpl();
    UploadURLStreamResponse response = uploader.uploadURLStream(request);
    System.out.print("RequestId=" + response.getRequestId() + "\n"); // ApsaraVideo VOD へのリクエストID。
    if (response.isSuccess()) {
        System.out.print("VideoId=" + response.getVideoId() + "\n");
    } else {
        /* コールバック URL が無効な場合、アップロードには影響せず、サービスは動画 ID とエラーコードを返します。それ以外の場合、アップロードが失敗すると動画 ID は返されません。エラーコードに基づいて問題を解決してください。 */
        System.out.print("VideoId=" + response.getVideoId() + "\n");
        System.out.print("ErrorCode=" + response.getCode() + "\n");
        System.out.print("ErrorMessage=" + response.getMessage() + "\n");
    }
}
/**
 * ファイルストリームのアップロード
 *
 * @param accessKeyId
 * @param accessKeySecret
 * @param title
 * @param fileName
 */
private static void testUploadFileStream(String accessKeyId, String accessKeySecret, String title, String fileName) {
    UploadFileStreamRequest request = new UploadFileStreamRequest(accessKeyId, accessKeySecret, title, fileName);
    /* 任意。デフォルトのウォーターマークを追加するかどうかを指定します。テンプレートグループ ID を指定した場合、テンプレートグループ内のウォーターマーク設定が優先されます。 */
    //request.setShowWaterMark(true);
    /* 任意。カスタム設定、メッセージコールバック設定、アップロードアクセラレーション設定。Extend はカスタム設定、MessageCallback はメッセージコールバック設定、AccelerateConfig はアップロードアクセラレーション設定を指定します。アップロードアクセラレーション機能は、有効化後にのみ使用できます。 */
    //request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackType\":\"http\",\"CallbackURL\":\"http://example.aliyundoc.com\"},\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");
    /* 任意。動画カテゴリ ID。 */
    //request.setCateId(0);
    /* 任意。動画タグ。複数のタグはカンマ (,) で区切ります。 */
    //request.setTags("Tag1,Tag2");
    /* 任意。動画の説明。 */
    //request.setDescription("Video description");
    /* 任意。サムネイル URL。 */
    //request.setCoverURL("http://cover.example.com/image_01.jpg");
    /* 任意。テンプレートグループ ID。 */
    //request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56****");
    /* 任意。ワークフロー ID。 */
    //request.setWorkflowId("d4430d07361f0*be1339577859b0****");
    /* 任意。ストレージロケーション。 */
    //request.setStorageLocation("in-201703232118266-5sejd****.oss-cn-shanghai.aliyuncs.com");
    /* デフォルトのアップロード進行状況コールバックを有効にするかどうかを指定します。デフォルトでは有効です。 */
    //request.setPrintProgress(true);
    /* カスタムのアップロード進行状況コールバックを設定します。VoDProgressListener を継承する必要があります。 */
    /* この機能はデフォルトで無効です。この機能を有効にすると、サーバーはアップロードの詳細をログに出力します。メッセージを受信したくない場合は、この機能を無効にしてください。 */
    //request.setProgressListener(new PutObjectProgressListener());
    /* アプリケーション ID。 */
    //request.setAppId("app-100****");
    /* ApsaraVideo VOD が有効化されているリージョン。 */
    //request.setApiRegionId("cn-shanghai");
    /* ECS インスタンスがデプロイされているリージョン。 */
    // request.setEcsRegionId("cn-shanghai");
    // ECS インスタンスがデプロイされているリージョンが ApsaraVideo VOD が有効化されているリージョンと同じ場合、内部ネットワークアップロード機能が自動的に有効になります。
     /* 任意。プロキシ設定。 */
     //OSSConfig ossConfig = new OSSConfig();
     /* 必須。プロキシサーバーのホストアドレス。 */
     //ossConfig.setProxyHost("");
     /* 必須。プロキシサーバーのポート番号。 */
     //ossConfig.setProxyPort(-1);
     /* OSS への接続に使用するプロトコル。有効な値:HTTP および HTTPS。デフォルト値:HTTP。 */
     //ossConfig.setProtocol("HTTP");
     /* ユーザーエージェント。HTTP リクエストの User-Agent ヘッダーです。デフォルト値:aliyun-sdk-java。 */
     //ossConfig.setUserAgent("");
     /* プロキシサーバー認証に使用するユーザー名。このパラメーターは、HTTPS プロトコルを使用する場合に必須です。 */
     //ossConfig.setProxyUsername("");
     /* プロキシサーバー認証に使用するパスワード。このパラメーターは、HTTPS プロトコルを使用する場合に必須です。 */
     //ossConfig.setProxyPassword("");
     //request.setOssConfig(ossConfig);
    UploadVideoImpl uploader = new UploadVideoImpl();
    UploadFileStreamResponse response = uploader.uploadFileStream(request);
    System.out.print("RequestId=" + response.getRequestId() + "\n"); // ApsaraVideo VOD へのリクエストID。
    if (response.isSuccess()) {
        System.out.print("VideoId=" + response.getVideoId() + "\n");
    } else {
        /* コールバック URL が無効な場合、アップロードには影響せず、サービスは動画 ID とエラーコードを返します。それ以外の場合、アップロードが失敗すると動画 ID は返されません。エラーコードに基づいて問題を解決してください。 */
        System.out.print("VideoId=" + response.getVideoId() + "\n");
        System.out.print("ErrorCode=" + response.getCode() + "\n");
        System.out.print("ErrorMessage=" + response.getMessage() + "\n");
    }
}
/**
 * ストリーミングアップロードの実行
 *
 * @param accessKeyId
 * @param accessKeySecret
 * @param title
 * @param fileName
 * @param inputStream
 */
private static void testUploadStream(String accessKeyId, String accessKeySecret, String title, String fileName, InputStream inputStream) {
    UploadStreamRequest request = new UploadStreamRequest(accessKeyId, accessKeySecret, title, fileName, inputStream);
     /* 任意。デフォルトのウォーターマークを追加するかどうかを指定します。テンプレートグループ ID を指定した場合、テンプレートグループ内のウォーターマーク設定が優先されます。 */
    //request.setShowWaterMark(true);
    /* 任意。カスタム設定、メッセージコールバック設定、アップロードアクセラレーション設定。Extend はカスタム設定、MessageCallback はメッセージコールバック設定、AccelerateConfig はアップロードアクセラレーション設定を指定します。アップロードアクセラレーション機能は、有効化後にのみ使用できます。 */
    //request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackType\":\"http\",\"CallbackURL\":\"http://example.aliyundoc.com\"},\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");
    /* 任意。動画カテゴリ ID。 */
    //request.setCateId(0);
    /* 任意。動画タグ。複数のタグはカンマ (,) で区切ります。 */
    //request.setTags("Tag1,Tag2");
    /* 任意。動画の説明。 */
    //request.setDescription("Video description");
    /* 任意。サムネイル URL。 */
    //request.setCoverURL("http://cover.example.com/image_01.jpg");
    /* 任意。テンプレートグループ ID。 */
    //request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56****");
    /* 任意。ワークフロー ID。 */
    //request.setWorkflowId("d4430d07361f0*be1339577859b0****");
    /* 任意。ストレージロケーション。 */
    //request.setStorageLocation("in-201703232118266-5sejd****.oss-cn-shanghai.aliyuncs.com");
    /* デフォルトのアップロード進行状況コールバックを有効にするかどうかを指定します。デフォルトでは有効です。 */
    // request.setPrintProgress(true);
    /* カスタムのアップロード進行状況コールバックを設定します。VoDProgressListener を継承する必要があります。 */
    /* この機能はデフォルトで無効です。この機能を有効にすると、サーバーはアップロードの詳細をログに出力します。メッセージを受信したくない場合は、この機能を無効にしてください。 */
    // request.setProgressListener(new PutObjectProgressListener());
     /* アプリケーション ID。 */
    //request.setAppId("app-100****");
    /* ApsaraVideo VOD が有効化されているリージョン。 */
    //request.setApiRegionId("cn-shanghai");
    /* ECS インスタンスがデプロイされているリージョン。 */
    // request.setEcsRegionId("cn-shanghai");
    // ECS インスタンスがデプロイされているリージョンが ApsaraVideo VOD が有効化されているリージョンと同じ場合、内部ネットワークアップロード機能が自動的に有効になります。
     /* 任意。プロキシ設定。 */
     //OSSConfig ossConfig = new OSSConfig();
     /* 必須。プロキシサーバーのホストアドレス。 */
     //ossConfig.setProxyHost("");
     /* 必須。プロキシサーバーのポート番号。 */
     //ossConfig.setProxyPort(-1);
     /* OSS への接続に使用するプロトコル。有効な値:HTTP および HTTPS。デフォルト値:HTTP。 */
     //ossConfig.setProtocol("HTTP");
     /* ユーザーエージェント。HTTP リクエストの User-Agent ヘッダーです。デフォルト値:aliyun-sdk-java。 */
     //ossConfig.setUserAgent("");
     /* プロキシサーバー認証に使用するユーザー名。このパラメーターは、HTTPS プロトコルを使用する場合に必須です。 */
     //ossConfig.setProxyUsername("");
     /* プロキシサーバー認証に使用するパスワード。このパラメーターは、HTTPS プロトコルを使用する場合に必須です。 */
     //ossConfig.setProxyPassword("");
     //request.setOssConfig(ossConfig);
    UploadVideoImpl uploader = new UploadVideoImpl();
    UploadStreamResponse response = uploader.uploadStream(request);
    System.out.print("RequestId=" + response.getRequestId() + "\n");  // ApsaraVideo VOD へのリクエストID。
    if (response.isSuccess()) {
        System.out.print("VideoId=" + response.getVideoId() + "\n");
    } else { // コールバック URL が無効な場合、アップロードには影響せず、サービスは動画 ID とエラーコードを返します。それ以外の場合、アップロードが失敗すると動画 ID は返されません。エラーコードに基づいて問題を解決してください。
        System.out.print("VideoId=" + response.getVideoId() + "\n");
        System.out.print("ErrorCode=" + response.getCode() + "\n");
        System.out.print("ErrorMessage=" + response.getMessage() + "\n");
    }
  }
}

M3U8 ファイル

サンプルコード

public class UploadVideoDemo {
    // 必須:AccessKey ペアを指定します。
    // Alibaba Cloud アカウントの AccessKey ペアはすべての API にアクセスできます。API へのアクセスや日常の O&M には、RAM ユーザーの使用を推奨します。
    // AccessKey ID と AccessKey Secret をプロジェクトにハードコードしないでください。ハードコードすると、AccessKey ペアが漏えいし、アカウント内のすべてのリソースが危険にさらされる可能性があります。
    // この例では、AccessKey ペアを環境変数から取得します。サンプルコードを実行する前に、ALIBABA_CLOUD_ACCESS_KEY_ID と ALIBABA_CLOUD_ACCESS_KEY_SECRET の環境変数を設定してください。
    private static final String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
    private static final String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
    public static void main(String[] args) {
    // M3U8 ファイルのアップロード
        // 1. ローカルの M3U8 オーディオ/ビデオファイルのアップロード
        testUploadLocalM3u8(accessKeyId, accessKeySecret);
        // 2. オンラインの M3U8 オーディオ/ビデオファイルのアップロード
        testUploadWebM3u8(accessKeyId, accessKeySecret);
    }
    /**
     * ローカルの M3U8 オーディオ/ビデオファイルを ApsaraVideo VOD にアップロードします。デフォルトでは、M3U8 ファイルと TS ファイルは同じディレクトリにあります。sliceFilenames が指定されていない場合、TS ファイルのパスは M3U8 ファイルから解析されます。
     *
     * @param request ローカル M3U8 ファイルをアップロードするためのリクエスト。
     *                m3u8Filename:ローカルの M3U8 インデックスファイルの絶対パス。M3U8 ファイル内の TS ファイルのパスは相対パスである必要があります。このパスに URL またはローカルの絶対パスを含めることはできません。
     *                sliceFilenames:TS ファイルの絶対パスのリスト。このパラメーターを指定した場合、指定されたパスが使用されます。このパラメーターを指定しない場合、m3u8Filename で指定した M3U8 ファイルが解析されます。
     */
    private static void testUploadLocalM3u8(String accessKeyId, String accessKeySecret) {
        String title = "test_upload_local_m3u8";
        String m3u8Filename = "/Users/test/0e9ecfc6da934d1887ed7bdfc925****/cc38da35c7b24de0abe58619cdd7****-6479a12446b994719838e0307f****-ld.m3u8";
        UploadLocalM3u8Request request = new UploadLocalM3u8Request(accessKeyId, accessKeySecret, title, m3u8Filename);
        String[] sliceFilenames = new String[]{
                "/Users/test/0e9ecfc6da934d1887ed7bdfc925****/slices/cc38da35c7b24de0abe58619cdd7****-c45797a1ad6e75fbb9d1a8493703****-ld-00001.ts",
                "/Users/test/0e9ecfc6da934d1887ed7bdfc925****/slices/cc38da35c7b24de0abe58619cdd7****-c45797a1ad6e75fbb9d1a8493703****-ld-00002.ts",
                "/Users/test/0e9ecfc6da934d1887ed7bdfc925****/slices/cc38da35c7b24de0abe58619cdd7****-c45797a1ad6e75fbb9d1a8493703****-ld-00003.ts",
                "/Users/test/0e9ecfc6da934d1887ed7bdfc925****/slices/cc38da35c7b24de0abe58619cdd7****-c45797a1ad6e75fbb9d1a8493703****-ld-00004.ts",
                "/Users/test/0e9ecfc6da934d1887ed7bdfc925****/slices/cc38da35c7b24de0abe58619cdd7****-c45797a1ad6e75fbb9d1a8493703****-ld-00005.ts"
        };
        // 任意。TS ファイルの絶対パスのリスト。このパラメーターを指定しない場合、TS ファイルのパスは M3U8 ファイルを解析して取得されます。
        request.setSliceFilenames(sliceFilenames);
        /* マルチパートアップロードのパートサイズ。デフォルト値:2 MB。 */
        request.setPartSize(2 * 1024 * 1024L);
        /* マルチパートアップロードの同時実行スレッド数。デフォルト値:1。このパラメーターは CPU 使用率に影響します。サーバーの構成に応じてこの値を設定してください。 */
        request.setTaskNum(1);
        /* 任意。ウォーターマークを追加するかどうかを指定します。テンプレートグループ ID を指定した場合、テンプレートグループ内のウォーターマーク設定が優先されます。 */
        //request.setShowWaterMark(true);
        /* 任意。カスタム設定、メッセージコールバック設定、アップロードアクセラレーション設定。Extend はカスタム設定、MessageCallback はメッセージコールバック設定、AccelerateConfig はアップロードアクセラレーション設定を指定します。アップロードアクセラレーション機能は、有効化後にのみ使用できます。 */
        //request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackType\":\"http\",\"CallbackURL\":\"http://example.aliyundoc.com\"},\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");
        /* 任意。動画カテゴリ ID。 */
        //request.setCateId(-1L);
        /* 任意。動画タグ。複数のタグはカンマ (,) で区切ります。 */
        //request.setTags("Tag1,Tag2");
        /* 任意。動画の説明。 */
        //request.setDescription("Video description");
        /* 任意。サムネイル URL。 */
        //request.setCoverURL("http://cover.sample.com/sample.jpg");
        /* 任意。テンプレートグループ ID。 */
        //request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56****");
        /* 任意。ワークフロー ID。 */
        //request.setWorkflowId("d4430d07361f0*be1339577859b0****");
        /* 任意。ストレージロケーション。 */
        //request.setStorageLocation("in-201703232118266-5sejd****.oss-cn-shanghai.aliyuncs.com");
        /* アプリケーション ID。 */
        // request.setAppId("app-1000000");
        /* ApsaraVideo VOD が有効化されているリージョン。 */
        // request.setApiRegionId("cn-shanghai");
        /* ECS インスタンスがデプロイされているリージョン。 */
        // request.setEcsRegionId("cn-shanghai");
        /* 任意。プロキシ設定。 */
        //OSSConfig ossConfig = new OSSConfig();
        /* 必須。プロキシサーバーのホストアドレス。 */
        //ossConfig.setProxyHost("");
        /* 必須。プロキシサーバーのポート番号。 */
        //ossConfig.setProxyPort(-1);
        /* OSS への接続に使用するプロトコル。有効な値:HTTP および HTTPS。デフォルト値:HTTP。 */
        //ossConfig.setProtocol("HTTP");
        /* ユーザーエージェント。HTTP リクエストの User-Agent ヘッダーです。デフォルト値:aliyun-sdk-java。 */
        //ossConfig.setUserAgent("");
        /* プロキシサーバー認証に使用するユーザー名。このパラメーターは、HTTPS プロトコルを使用する場合に必須です。 */
        //ossConfig.setProxyUsername("");
        /* プロキシサーバー認証に使用するパスワード。このパラメーターは、HTTPS プロトコルを使用する場合に必須です。 */
        //ossConfig.setProxyPassword("");
        //request.setOssConfig(ossConfig);
        UploadM3u8FileImpl uploadM3u8File = new UploadM3u8FileImpl();
        UploadLocalM3u8Response uploadLocalM3u8Response = uploadM3u8File.uploadLocalM3u8(request);
        System.out.println("code = " + uploadLocalM3u8Response.getCode());
        System.out.println("message = " + uploadLocalM3u8Response.getMessage());
        System.out.println("videoId = " + uploadLocalM3u8Response.getVideoId());
        System.out.println("requestId = " + uploadLocalM3u8Response.getRequestId());
    }
    /**
     * オンラインの M3U8 オーディオ/ビデオファイルを ApsaraVideo VOD にアップロードします。この方法では、まずファイルを一時的なローカルディレクトリにダウンロードし、その後 ApsaraVideo VOD ストレージにアップロードします。ローカルディスクに十分な空き容量があることを確認してください。
     *
     * @param request オンライン M3U8 ファイルをアップロードするためのリクエスト。
     *                m3u8FileURL:オンラインの M3U8 インデックスファイルの URL。M3U8 ファイル内の TS ファイルのパスは相対パスである必要があります。このパスに URL またはローカルの絶対パスを含めることはできません。
     *                sliceFileURLs:TS ファイルの URL のリスト。TS ファイルの URL を構築する必要があります。
     */
    private static void testUploadWebM3u8(String accessKeyId, String accessKeySecret) {
        String title = "test_upload_web_m3u8";
        String m3u8FileURL = "http://test.aliyun.com/f0d644abc547129e957b386f77****/a0e1e2817ab9425aa558fe67a90e****-538087dcf2c201c31ce4324bf76af69****.m3u8";
        UploadWebM3u8Request request = new UploadWebM3u8Request(accessKeyId, accessKeySecret, title, m3u8FileURL);
        String[] sliceFileURLs = new String[]{
                "http://test.aliyun.com/f0d644abc547129e957b386f77****/a0e1e2817ab9425aa558fe67a90e****-822598b9c170a8c6dad985e20cd9c27d-ld-0****.ts",
                "http://test.aliyun.com/f0d644abc547129e957b386f77****/a0e1e2817ab9425aa558fe67a90e****-822598b9c170a8c6dad985e20cd9c27d-ld-0****.ts",
                "http://test.aliyun.com/f0d644abc547129e957b386f77****/a0e1e2817ab9425aa558fe67a90e****-822598b9c170a8c6dad985e20cd9c27d-ld-0****.ts",
                "http://test.aliyun.com/f0d644abc547129e957b386f77****/a0e1e2817ab9425aa558fe67a90e****-822598b9c170a8c6dad985e20cd9c27d-ld-0****.ts",
                "http://test.aliyun.com/f0d644abc547129e957b386f77****/a0e1e2817ab9425aa558fe67a90e****-822598b9c170a8c6dad985e20cd9c27d-ld-0****.ts"
        };
        // 任意。TS ファイルの URL。このパラメーターを指定しない場合、TS ファイルの URL は m3u8FileURL パラメーターを解析して取得されます。
        request.setSliceFileURLs(sliceFileURLs);
        /* ダウンロードしたファイルの一時保存ディレクトリ。カスタムディレクトリを指定できます。このパラメーターを指定しない場合、ファイルは現在の作業ディレクトリに保存されます。 */
        // request.setGlobalLocalFilePath("/User/download/");
        /* マルチパートアップロードのパートサイズ。デフォルト値:2 MB。 */
        request.setPartSize(2 * 1024 * 1024L);
        /* マルチパートアップロードの同時実行スレッド数。デフォルト値:1。このパラメーターは CPU 使用率に影響します。サーバーの構成に応じてこの値を設定してください。 */
        request.setTaskNum(1);
        /* 任意。ウォーターマークを追加するかどうかを指定します。テンプレートグループ ID を指定した場合、テンプレートグループ内のウォーターマーク設定が優先されます。 */
        //request.setShowWaterMark(true);
        /* 任意。カスタム設定、メッセージコールバック設定、アップロードアクセラレーション設定。Extend はカスタム設定、MessageCallback はメッセージコールバック設定、AccelerateConfig はアップロードアクセラレーション設定を指定します。アップロードアクセラレーション機能は、有効化後にのみ使用できます。 */
        //request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackType\":\"http\",\"CallbackURL\":\"http://example.aliyundoc.com\"},\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");
        /* 任意。動画カテゴリ ID。 */
        //request.setCateId(-1L);
        /* 任意。動画タグ。複数のタグはカンマ (,) で区切ります。 */
        //request.setTags("Tag1,Tag2");
        /* 任意。動画の説明。 */
        //request.setDescription("Video description");
        /* 任意。サムネイル URL。 */
        //request.setCoverURL("http://cover.example.com/sample.jpg");
        /* 任意。テンプレートグループ ID。 */
        //request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56****");
        /* 任意。ワークフロー ID。 */
        //request.setWorkflowId("d4430d07361f0*be1339577859b0****");
        /* 任意。ストレージロケーション。 */
        //request.setStorageLocation("in-2017032321****-5sejdln9o.oss-cn-shanghai.aliyuncs.com");
        /* アプリケーション ID。 */
        //request.setAppId("app-100****");
        /* ApsaraVideo VOD が有効化されているリージョン。 */
        //request.setApiRegionId("cn-shanghai");
        /* ECS インスタンスがデプロイされているリージョン。 */
        // request.setEcsRegionId("cn-shanghai");
        /* 任意。プロキシ設定。 */
        //OSSConfig ossConfig = new OSSConfig();
        /* 必須。プロキシサーバーのホストアドレス。 */
        //ossConfig.setProxyHost("");
        /* 必須。プロキシサーバーのポート番号。 */
        //ossConfig.setProxyPort(-1);
        /* OSS への接続に使用するプロトコル。有効な値:HTTP および HTTPS。デフォルト値:HTTP。 */
        //ossConfig.setProtocol("HTTP");
        /* ユーザーエージェント。HTTP リクエストの User-Agent ヘッダーです。デフォルト値:aliyun-sdk-java。 */
        //ossConfig.setUserAgent("");
        /* プロキシサーバー認証に使用するユーザー名。このパラメーターは、HTTPS プロトコルを使用する場合に必須です。 */
        //ossConfig.setProxyUsername("");
        /* プロキシサーバー認証に使用するパスワード。このパラメーターは、HTTPS プロトコルを使用する場合に必須です。 */
        //ossConfig.setProxyPassword("");
        //request.setOssConfig(ossConfig);
        UploadM3u8FileImpl uploadM3u8File = new UploadM3u8FileImpl();
        UploadWebM3u8Response uploadWebM3u8Response = uploadM3u8File.uploadWebM3u8(request);
        System.out.println("code = " + uploadWebM3u8Response.getCode());
        System.out.println("message = " + uploadWebM3u8Response.getMessage());
        System.out.println("videoId = " + uploadWebM3u8Response.getVideoId());
        System.out.println("requestId = " + uploadWebM3u8Response.getRequestId());
    }
}

アップロードアクセラレーション

大容量ファイル (GB または TB) またはクロスリージョンアップロード (たとえば、中国本土から シンガポール ストレージリージョンへ) の場合は、アップロードアクセラレーションを有効にしてください。 アップロードアクセラレーションを有効化。 有効化した後、アップロード設定の UserData オブジェクトに AccelerateConfig キーと値のペアを追加してください。 UserData オブジェクトが存在しない場合は、作成してください。 例:

request.setUserData("{\"AccelerateConfig\":{\"Type\":\"oss\",\"Domain\":\"****Bucket.oss-accelerate.aliyuncs.com\"}}");

パラメーター

パラメーター

タイプ

説明

Type

String

アップロードアクセラレーションを有効にするサービス。この値を oss に設定します。

Domain

String

バケットの高速化エンドポイント。デフォルトのプロトコルは HTTPS です。

説明

この機能を有効にした後に提供される高速化エンドポイント (例:vod-*******.oss-accelerate.aliyuncs.com) を使用してください。

シナリオ 2:画像のアップロード

サンプルコードの表示

public class UploadImageDemo {
    // 必須。Alibaba Cloud アカウントのアクセスキーペア。
    // Alibaba Cloud アカウントのアクセスキーペアは、すべての API にアクセスできます。API へのアクセスや日常の運用には、RAM ユーザーの使用を推奨します。
    // プロジェクトコードに AccessKey ID と AccessKey secret をハードコードしないことを強く推奨します。ハードコードすると、認証情報が漏えいし、アカウント内のすべてのリソースのセキュリティが損なわれる可能性があります。
    // この例では、アクセスキーペアを環境変数から取得します。サンプルコードを実行する前に、ALIBABA_CLOUD_ACCESS_KEY_ID と ALIBABA_CLOUD_ACCESS_KEY_SECRET の環境変数を設定してください。
    private static final String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
    private static final String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
    public static void main(String[] args) {
        // 画像をアップロードします。
        // 1. ローカルファイルから画像をアップロードします。
         testUploadImageLocalFile(accessKeyId, accessKeySecret);
        // 2. ファイルストリームまたはネットワークストリームを使用して画像をアップロードします。
         testUploadImageStream(accessKeyId, accessKeySecret);
    }
    /**
     * ローカルファイルから画像をアップロードします。
     *
     * @param accessKeyId
     * @param accessKeySecret
     */
    private static void testUploadImageLocalFile(String accessKeyId, String accessKeySecret) {
        /* 必須。画像のタイプ。有効な値:default、cover、watermark。 */
        String imageType = "cover";
        UploadImageRequest request = new UploadImageRequest(accessKeyId, accessKeySecret, imageType);
        request.setImageType("cover");
        /* 任意。画像ファイルの拡張子。有効な値:png、jpg、jpeg。 */
        //request.setImageExt("png");
        /* 任意。画像のタイトル。タイトルは UTF-8 で、128 バイトを超えることはできません。 */
        //request.setTitle("Image title");
        /* 任意。画像タグ。最大 16 個のタグを追加できます。複数のタグはカンマ (,) で区切ります。各タグは UTF-8 で、32 バイトを超えることはできません。 */
        //request.setTags("Tag1,Tag2");
        /* 任意。ストレージロケーション。 */
        //request.setStorageLocation("out-4f3952f78c0211e8b30200****.oss-cn-shanghai.aliyuncs.com");
        /* ストリーミングアップロードの場合、InputStream パラメータは必須です。fileName パラメータ (ソースファイル名) は任意です。例:filename.png。 */
        String fileName = "/Users/demo/png/test.png";
        request.setFileName(fileName);
        /* デフォルトのアップロード進捗コールバックを無効にします。 */
        //request.setPrintProgress(false);
        /* カスタムのアップロード進捗コールバックを設定します。VoDProgressListener を継承する必要があります。 */
        /* この機能はデフォルトで無効です。有効にすると、サーバーはアップロードプロセス中にアップロードの詳細をログに記録します。これらのログが不要な場合は、この機能を無効にしてください。 */
        // request.setProgressListener(new PutObjectProgressListener());
        /* 任意。アプリケーション ID。 */
        //request.setAppId("app-100****");
        /* ApsaraVideo VOD のアクセスポイントのリージョン ID。 */
        //request.setApiRegionId("cn-shanghai");
        /* 任意。プロキシを設定します。 */
        //OSSConfig ossConfig = new OSSConfig();
        /* <必須> プロキシサーバーのホストアドレス。 */
        //ossConfig.setProxyHost("<yourProxyHost>");
        /* <必須> プロキシサーバーのポート。 */
        //ossConfig.setProxyPort(-1);
        /* OSS への接続に使用するプロトコル。有効な値:HTTP および HTTPS。デフォルト値:HTTP。 */
        //ossConfig.setProtocol("HTTP");
        /* HTTP リクエストの User-Agent ヘッダー。デフォルト値:aliyun-sdk-java。 */
        //ossConfig.setUserAgent("<yourUserAgent>");
        /* プロキシサーバー認証に使用するユーザー名。このパラメータは、HTTPS プロトコルを使用する場合に必須です。 */
        //ossConfig.setProxyUsername("<yourProxyUserName>");
        /* プロキシサーバー認証に使用するパスワード。このパラメータは、HTTPS プロトコルを使用する場合に必須です。 */
        //ossConfig.setProxyPassword("<yourProxyPassword>");
        //request.setOssConfig(ossConfig);
        UploadImageImpl uploadImage = new UploadImageImpl();
        UploadImageResponse response = uploadImage.upload(request);
        System.out.print("RequestId=" + response.getRequestId() + "\n");
        if (response.isSuccess()) {
            System.out.print("ImageId=" + response.getImageId() + "\n");
            System.out.print("ImageURL=" + response.getImageURL() + "\n");
        } else {
            System.out.print("ErrorCode=" + response.getCode() + "\n");
            System.out.print("ErrorMessage=" + response.getMessage() + "\n");
        }
    }
    /**
     * ストリームから画像をアップロードします。この方法は、ファイルストリームとネットワークストリームの両方をサポートします。
     *
     * @param accessKeyId
     * @param accessKeySecret
     */
    private static void testUploadImageStream(String accessKeyId, String accessKeySecret) {
        /* 必須。画像のタイプ。有効な値:default、cover、watermark。 */
        String imageType = "cover";
        UploadImageRequest request = new UploadImageRequest(accessKeyId, accessKeySecret, imageType);
        /* 任意。画像ファイルの拡張子。有効な値:png、jpg、jpeg。 */
        //request.setImageExt("png");
        /* 任意。画像のタイトル。タイトルは UTF-8 で、128 バイトを超えることはできません。 */
        //request.setTitle("Image title");
        /* 任意。画像タグ。最大 16 個のタグを追加できます。複数のタグはカンマ (,) で区切ります。各タグは UTF-8 で、32 バイトを超えることはできません。 */
        //request.setTags("Tag1,Tag2");
        /* 任意。ストレージロケーション。 */
        //request.setStorageLocation("out-4f3952f78c0211e8b30200****.oss-cn-shanghai.aliyuncs.com");
        /* ストリーミングアップロードの場合、InputStream パラメータは必須です。fileName パラメータ (ソースファイル名) は任意です。例:filename.png。 */
        //request.setFileName("Test file name.png");
        /* デフォルトのアップロード進捗コールバックを有効にします。 */
        // request.setPrintProgress(true);
        /* カスタムのアップロード進捗コールバックを設定します。VoDProgressListener を継承する必要があります。 */
        /* この機能はデフォルトで無効です。有効にすると、サーバーはアップロードプロセス中にアップロードの詳細をログに記録します。これらのログが不要な場合は、この機能を無効にしてください。 */
        // request.setProgressListener(new PutObjectProgressListener());
        /* 任意。アプリケーション ID。 */
        //request.setAppId("app-1000000");
        /* 任意。プロキシを設定します。 */
        //OSSConfig ossConfig = new OSSConfig();
        /* <必須> プロキシサーバーのホストアドレス。 */
        //ossConfig.setProxyHost("<yourProxyHost>");
        /* <必須> プロキシサーバーのポート。 */
        //ossConfig.setProxyPort(-1);
        /* OSS への接続に使用するプロトコル。有効な値:HTTP および HTTPS。デフォルト値:HTTP。 */
        //ossConfig.setProtocol("HTTP");
        /* HTTP リクエストの User-Agent ヘッダー。デフォルト値:aliyun-sdk-java。 */
        //ossConfig.setUserAgent("<yourUserAgent>");
        /* プロキシサーバー認証に使用するユーザー名。このパラメータは、HTTPS プロトコルを使用する場合に必須です。 */
        //ossConfig.setProxyUsername("<yourProxyUserName>");
        /* プロキシサーバー認証に使用するパスワード。このパラメータは、HTTPS プロトコルを使用する場合に必須です。 */
        //ossConfig.setProxyPassword("<yourProxyPassword>");
        //request.setOssConfig(ossConfig);
        // 1. ファイルストリームをアップロードします。
        // InputStream fileStream = getFileStream(request.getFileName());
        // if (fileStream != null) { 
        //     request.setInputStream(fileStream);
        // }
        // 2. ネットワークストリームをアップロードします。
        String url = "http://test.aliyun.com/image/default/test.png";
        InputStream urlStream = getUrlStream(url);
        if (urlStream != null) {
            request.setInputStream(urlStream); 
       }
        // 画像のアップロードを開始します。
        UploadImageImpl uploadImage = new UploadImageImpl();
        UploadImageResponse response = uploadImage.upload(request);
        System.out.print("RequestId=" + response.getRequestId() + "\n");
        if (response.isSuccess()) {
            System.out.print("ImageId=" + response.getImageId() + "\n");
            System.out.print("ImageURL=" + response.getImageURL() + "\n");
        } else {
            System.out.print("ErrorCode=" + response.getCode() + "\n");
            System.out.print("ErrorMessage=" + response.getMessage() + "\n");
        }
    }
    private static InputStream getFileStream(String fileName) {
        try {
            return new FileInputStream(fileName);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        return null;
    }
    private static InputStream getUrlStream(String url) {
        try {
            return new URL(url).openStream();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}          

シナリオ 3:補助メディアアセットのアップロード

サンプルコード

public class UploadAttachedMediaDemo {
    // 必須。アカウントのアクセスキーペア。
    // Alibaba Cloud アカウントのアクセスキーペアには、すべての API 操作に対するフルアクセス権限があります。API へのアクセスや日常の運用保守には、RAM ユーザーの使用を推奨します。
    // 漏えいを防ぐため、プロジェクト内で AccessKey ID と AccessKey Secret をハードコードしないでください。アクセスキーペアが漏えいすると、アカウント内のすべてのリソースのセキュリティが損なわれる可能性があります。
    // この例では、認証のために環境変数からアクセスキーペアを取得します。サンプルコードを実行する前に、ALIBABA_CLOUD_ACCESS_KEY_ID と ALIBABA_CLOUD_ACCESS_KEY_SECRET の環境変数を設定してください。
    private static final String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
    private static final String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
    public static void main(String[] args) {
        // 補助メディアアセットをアップロードします。
        // ローカルファイルから補助メディアアセットをアップロードします。
        testUploadAttachedMediaLocalFile(accessKeyId, accessKeySecret);
        // ストリーミングアップロード (ファイルストリームおよびネットワークストリーム) で補助メディアアセットをアップロードします。
        testUploadAttachedMediaStream(accessKeyId, accessKeySecret);
    }
 /**
     * ローカルの補助メディアアセットをアップロードします。
     *
     * @param accessKeyId
     * @param accessKeySecret
     */
    private static void testUploadAttachedMediaLocalFile(String accessKeyId, String accessKeySecret) {
        /* ビジネスタイプ。 */
        String businessType = "watermark";
        /* ファイル名拡張子。 */
        String mediaExt = "png";
        String filename = "/Users/demo/png/test.png";
        UploadAttachedMediaRequest request = new UploadAttachedMediaRequest(accessKeyId, accessKeySecret, businessType, mediaExt);
        request.setFileName(filename);
        /* タイトル。 */
        request.setTitle("test_attached_media");
        /* カテゴリ ID。 */
        request.setCateId(-1L);
        /* 任意。タグ。複数のタグはカンマで区切ります。 */
        request.setTags("tag1,tag2");
        /* 任意。説明。 */
        request.setDescription("test_desc");
        /* 任意。ストレージロケーション。 */
        request.setStorageLocation("out-20170323225118266-5l3hs5****.oss-cn-shanghai.aliyuncs.com");
        /* ApsaraVideo VOD のアクセスリージョン。 */
        request.setApiRegionId("cn-shanghai");
        /* アプリケーション ID。 */
        //request.setAppId("app-1000000");
        /* 任意。プロキシの設定。 */
        //OSSConfig ossConfig = new OSSConfig();
        /* 必須。プロキシホスト。 */
        //ossConfig.setProxyHost("<yourProxyHost>");
        /* 必須。プロキシポート。 */
        //ossConfig.setProxyPort(-1);
        /* OSS への接続に使用するプロトコル。有効な値:HTTP および HTTPS。デフォルト値:HTTP。 */
        //ossConfig.setProtocol("HTTP");
        /* HTTP リクエストの User-Agent ヘッダー。デフォルト値:aliyun-sdk-java。 */
        //ossConfig.setUserAgent("<yourUserAgent>");
        /* プロキシサーバー認証用のユーザー名。このパラメータは、HTTPS プロトコルを使用する場合に必須です。 */
        //ossConfig.setProxyUsername("<yourProxyUserName>");
        /* プロキシサーバー認証用のパスワード。このパラメータは、HTTPS プロトコルを使用する場合に必須です。 */
        //ossConfig.setProxyPassword("<yourProxyPassword>");
        //request.setOssConfig(ossConfig);
        UploadAttachedMediaImpl uploader = new UploadAttachedMediaImpl();
        UploadAttachedMediaResponse response = uploader.upload(request);
        System.out.print("RequestId=" + response.getRequestId() + "\n");
        if (response.isSuccess()) {
            System.out.print("MediaId=" + response.getMediaId() + "\n");
            System.out.print("MediaURL=" + response.getMediaURL() + "\n");
            System.out.print("FileURL=" + response.getFileURL() + "\n");
        } else {
            System.out.print("ErrorCode=" + response.getCode() + "\n");
            System.out.print("ErrorMessage=" + response.getMessage() + "\n");
        }
    }
     /**
     * ストリーミングアップロードで補助メディアアセットをアップロードします。この方法では、ファイルストリームとネットワークストリームをサポートしています。
     *
     * @param accessKeyId
     * @param accessKeySecret
     */
    private static void testUploadAttachedMediaStream(String accessKeyId, String accessKeySecret) {
        /* ビジネスタイプ。 */
        String businessType = "watermark";
        /* ファイル名拡張子。 */
        String mediaExt = "png";
        String filename = "http://test.aliyun.com/test.png";
        UploadAttachedMediaRequest request;
        // 1. ファイルストリームからアップロードします。
        InputStream fileStream = getFileStream(filename);
        request = new UploadAttachedMediaRequest(accessKeyId, accessKeySecret, businessType, mediaExt);
        request.setInputStream(fileStream);
        // 2. ネットワークストリームからアップロードします。
//        String url = "http://test.aliyun.com/image//test.png";
//        InputStream urlStream = getUrlStream(url);
//        request = new UploadAttachedMediaRequest(accessKeyId, accessKeySecret, businessType, mediaExt);
//        request.setInputStream(urlStream);
        /* タイトル。 */
        request.setTitle("test_attached_media");
        /* カテゴリ ID。 */
        request.setCateId(-1L);
        /* 任意。タグ。複数のタグはカンマで区切ります。 */
        request.setTags("tag1,tag2");
        /* 任意。説明。 */
        request.setDescription("test_desc");
        /* 任意。ストレージロケーション。 */
        request.setStorageLocation("out-20170323225118266-5l3****wa.oss-cn-shanghai.aliyuncs.com");
        /* ApsaraVideo VOD のアクセスリージョン。 */
        request.setApiRegionId("cn-shanghai");
        /* アプリケーション ID。 */
        // request.setAppId("app-1000000");
        /* 任意。プロキシの設定。 */
        //OSSConfig ossConfig = new OSSConfig();
        /* 必須。プロキシホスト。 */
        //ossConfig.setProxyHost("<yourProxyHost>");
        /* 必須。プロキシポート。 */
        //ossConfig.setProxyPort(-1);
        /* OSS への接続に使用するプロトコル。有効な値:HTTP および HTTPS。デフォルト値:HTTP。 */
        //ossConfig.setProtocol("HTTP");
        /* HTTP リクエストの User-Agent ヘッダー。デフォルト値:aliyun-sdk-java。 */
        //ossConfig.setUserAgent("<yourUserAgent>");
        /* プロキシサーバー認証用のユーザー名。このパラメータは、HTTPS プロトコルを使用する場合に必須です。 */
        //ossConfig.setProxyUsername("<yourProxyUserName>");
        /* プロキシサーバー認証用のパスワード。このパラメータは、HTTPS プロトコルを使用する場合に必須です。 */
        //ossConfig.setProxyPassword("<yourProxyPassword>");
        //request.setOssConfig(ossConfig);
        // アップロードを開始します。
        UploadAttachedMediaImpl uploader = new UploadAttachedMediaImpl();
        UploadAttachedMediaResponse response = uploader.upload(request);
        System.out.print("RequestId=" + response.getRequestId() + "\n");
        if (response.isSuccess()) {
            System.out.print("MediaId=" + response.getMediaId() + "\n");
            System.out.print("MediaURL=" + response.getMediaURL() + "\n");
            System.out.print("FileURL=" + response.getFileURL() + "\n");
        } else {
            System.out.print("ErrorCode=" + response.getCode() + "\n");
            System.out.print("ErrorMessage=" + response.getMessage() + "\n");
        }
    }
    private static InputStream getFileStream(String fileName) {
        try {
            return new FileInputStream(fileName);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        return null;
    }
    private static InputStream getUrlStream(String url) {
        try {
            return new URL(url).openStream();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}

高度な機能

  • アップロードプログレスバー

    sample ディレクトリ内の PutObjectProgressListener.java ファイルには、アップロード進捗コールバックの実装が含まれています。

    このクラスは VoDProgressListener インターフェイスを実装します。ProgressEvent オブジェクトは OSS へのファイルアップロードの進捗を報告し、各イベントに対してカスタムロジックを追加できます。

    以下はコード例です。

    サンプルコードを表示

    /**
     * アップロード進捗コールバックのリスナーの実装です。
     * このコールバックは、アップロード進捗通知を有効にした場合にのみ呼び出されます。
     * コールバックイベントは、OSS へのマルチパートアップロードが成功または失敗したときにトリガーされます。イベントを処理するためのカスタムロジックを実装できます。
     * オーディオ/ビデオファイルをアップロードする場合、このコールバックは `videoId` を提供します。これを使用してファイルを管理できます。
     * 画像をアップロードする場合、このコールバックは `imageId` を提供します。これを使用して画像を管理できます。
     */
    public class PutObjectProgressListener implements VoDProgressListener {
        /**
         * OSS に正常にアップロードされたバイト数。
         */
        private long bytesWritten = 0;
        /**
         * ソースファイルの合計サイズ (バイト)。
         */
        private long totalBytes = -1;
        /**
         * アップロードが正常に完了したかどうか。
         */
        private boolean succeed = false;
        /**
         * ビデオ ID。
         */
        private String videoId;
        /**
         * イメージ ID。
         */
        private String imageId;
        public void progressChanged(ProgressEvent progressEvent) {
            long bytes = progressEvent.getBytes();
            ProgressEventType eventType = progressEvent.getEventType();
            switch (eventType) {
                // アップロードの開始。
                case TRANSFER_STARTED_EVENT:
                    if (videoId != null) {
                        System.out.println("Start to upload videoId "+videoId+"......");
                    }
                    if (imageId != null) {
                        System.out.println("Start to upload imageId "+imageId+"......");
                    }
                    break;
                // アップロードするファイルの合計サイズ。このイベントはローカルファイルのアップロードでのみサポートされます。
                case REQUEST_CONTENT_LENGTH_EVENT:
                    this.totalBytes = bytes;
                    System.out.println(this.totalBytes + "bytes in total will be uploaded to OSS.");
                    break;
                // 転送されたバイト数。
                case REQUEST_BYTE_TRANSFER_EVENT:
                    this.bytesWritten += bytes;
                    if (this.totalBytes != -1) {
                        int percent = (int) (this.bytesWritten * 100.0 / this.totalBytes);
                        System.out.println(bytes+" bytes have been written at this time, upload progress: "+
                                percent +"%(" +  this.bytesWritten +  "/"  + this.totalBytes  + ")");
                    } else {
                        System.out.println(bytes + " bytes have been written at this time, upload sub total : " +
                                "(" + this.bytesWritten + ")");
                    }
                    break;
                // 転送完了。
                case TRANSFER_COMPLETED_EVENT:
                    this.succeed = true;
                    if (videoId != null) {
                        System.out.println("Succeed to upload videoId "  + videoId  + " , " + this.bytesWritten + " bytes have been transferred in total.");
                    }
                    if (imageId != null) {
                        System.out.println("Succeed to upload imageId " + imageId + " , " + this.bytesWritten + " bytes have been transferred in total.");
                    }
                    break;
                // 転送失敗。
                case TRANSFER_FAILED_EVENT:
                    if (videoId != null) {
                        System.out.println("Failed to upload videoId " + videoId + " , " + this.bytesWritten + " bytes have been transferred.");
                    }
                    if (imageId != null) {
                        System.out.println("Failed to upload imageId " + imageId + " , " + this.bytesWritten + " bytes have been transferred.");
                    }
                    break;
                default:
                    break;
            }
        }
        public boolean isSucceed() {
            return succeed;
        }
        public void onVidReady(String videoId) {
            setVideoId(videoId);
        }
        public void onImageIdReady(String imageId) {
            setImageId(imageId);
        }
        public String getVideoId() {
            return videoId;
        }
        public void setVideoId(String videoId) {
            this.videoId = videoId;
        }
        public String getImageId() {
            return imageId;
        }
        public void setImageId(String imageId) {
            this.imageId = imageId;
        }
    }
                        
  • 一時トークンの更新

    sample ディレクトリ内の RefreshSTSTokenImpl.java ファイルでは、一時トークンの更新方法を示しています。

    以下はコード例です。

    サンプルコードを表示

    /**
     * @author vod
     * Security Token Service (STS) から一時トークンを取得する実装です。
     * @date 2019/6/5
     */
    public class RefreshSTSTokenImpl implements VoDRefreshSTSTokenListener {
        public STSTokenDTO onRefreshSTSToken() {
            STSTokenDTO stsTokenDTO = new STSTokenDTO();
            stsTokenDTO.setAccessKeyId("<Your STS AccessKeyId>");
            stsTokenDTO.setAccessKeySecret("<Your STS AccessKeySecret>");
            stsTokenDTO.setSecurityToken("<Your STS SecurityToken>");
            return stsTokenDTO;
        }
    }

よくある質問

問題1:依存関係が見つからないエラー

  1. Maven プロジェクトで、右側の [Maven] をクリックし、[m] アイコンをクリックし、mvn idea:module を入力し、リソースを再読み込みします。

  2. 上部のメニューバーで、[Build] > [Rebuild Project] を選択します。

  3. aliyun-java-vod-upload-1.4.15.jar をプロジェクトのリソースディレクトリにコピーし、ローカルの Maven 依存関係を追加します:

    <dependency>
            <groupId>com.aliyun.vod</groupId>
            <artifactId>upload</artifactId>
            <version>1.4.15</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/aliyun-java-vod-upload-1.4.15.jar</systemPath>
    </dependency>

    ローカル依存関係を追加した後の Maven 依存関係の例です。

       <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-core</artifactId>
            <version>4.5.1</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.10.2</version>
        </dependency>
         <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-vod</artifactId>
            <version>2.16.11</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.68.noneautotype</version>
        </dependency>
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20170516</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.2</version>
        </dependency>
        <dependency>
            <groupId>com.aliyun.vod</groupId>
            <artifactId>upload</artifactId>
            <version>1.4.15</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/main/resources/aliyun-java-vod-upload-1.4.15.jar</systemPath>
        </dependency>