このトピックでは、アップロードSDK for Javaを使用してメディアファイルをApsaraVideo VODにアップロードして保存する方法について説明します。

アップロードのプロセス

Java用アップロードSDKは、サーバーアップロードSDKの一般的なアップロードプロセスに従います。 詳細については、「アップロードのプロセス」をご参照ください。 The process includes the following steps:
  1. 前提条件として必要な設定を完了します。 詳細は、「前提条件 (Prerequisites)」をご参照ください。
  2. Integrate the upload SDK for Java. 詳細については、「Java用アップロードSDKの統合」をご参照ください。
  3. アップロード情報を設定して、アップロードロジックを実装します。

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

次の例では、Java 1.8以降がインストールされ、Java V1.4.14用のアップロードSDKが使用されています。 ビジネス要件に基づいて他のバージョンを使用できます。 For more information about how to troubleshoot the errors that may occur when you integrate the upload SDK for Java, see トラブルシューティング.
  1. VODUploadDemo-java-1.4.14.zipパッケージをダウンロードします。 このパッケージには、Java V1.4.14用のアップロードSDKとサンプルコードが含まれています。
    最新バージョンのアップロードSDK For Javaのダウンロードリンクの詳細については、「SDKのダウンロード」をご参照ください。 For more information about the download links of the upload SDK for Java of historical versions, see Release notes of the upload SDK for Java.
  2. VODUploadDemo-java-1.4.14.zipパッケージを解凍します。
    解凍されたVODUploadDemo-java-1.4.14.zipのパッケージには、次のディレクトリがあります。
    • lib: アップロードSDK for JavaのJARパッケージを格納します。
    • sample: アップロードSDK for Javaのサンプルコードを格納します。
  3. JARパッケージをインポートします。
    • Eclipseでプロジェクト名を右クリックし、[プロパティ] > [Javaビルドパス] > [JARの追加] を選択します。 解凍されたVODUploadDemo-java-1.4.14パッケージを見つけ、libディレクトリにあるすべてのJARパッケージをプロジェクトに追加します。
    • IntelliJ IDEAでプロジェクトを開き、[ファイル] > [プロジェクト構造] > [モジュール] を選択します。 [依存関係] タブの右側で、[+] アイコンをクリックし、[JARまたはディレクトリ] を選択します。 解凍されたVODUploadDemo-java-1.4.14パッケージを見つけ、libディレクトリにあるすべてのJARパッケージをプロジェクトに追加します。
    重要 JARパッケージをインポートした後、依存関係を設定する必要があります。
  4. Alibaba Cloud SDK for Java、Object Storage Service (OSS) SDK、ApsaraVideo VODサーバー操作SDK、ApsaraVideo VODサーバーアップロードSDKなどの依存関係を追加します。
    重要
    • aliyun-java-vod-upload-1.4.14.jarパッケージを使用してJava用アップロードSDKをインストールする場合は、aliyun-sdk-oss V3.9.0以降を使用する必要があります。
    • ApsaraVideo VOD is supported in the China (Shanghai), China (Shenzhen), and China (Beijing) regions. アップロードSDKを使用してメディアファイルを中国 (深セン) または中国 (北京) リージョンにアップロードする必要がある場合は、aliyun-java-sdk-vod V2.15.11以降およびaliyun-java-sdk-core V4.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>log4j-core</artifactId>
            <version>3.10.2</version>
        </dependency>
         <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-vod</artifactId>
            <version>2.15.11</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.28</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.14</version>
            <scope>system</scope>
            <systemPath >${ project.basedir}/src/main/resources/aliyun-java-vod-upload-1.4.14.jar</systemPath>
        </dependency>
                            

オーディオまたはビデオファイルのアップロード

Regular audio or video files
ApsaraVideo VODでは、次の4つの方法のいずれかを使用して、オーディオまたはビデオファイルをアップロードできます。
  • Use multipart upload to upload a local audio or video file. この方法を使用すると、再開可能なアップロードを有効にできます。 For more information, see the testUploadVideo function in the sample code.
    • アップロードジョブを実行できる最大時間は3,000秒です。 If you disable resumable upload, the maximum size of a file that can be uploaded depends on the network bandwidth and the read and write capacities of disks.
    • If you enable resumable upload, you can upload a file of up to 48.8 TB in size.
      重要 再開可能なアップロードを有効にすると、ApsaraVideo VODはアップロードプロセス中にアップロードの進行状況をローカルディスクファイルに書き込みます。 これはアップロード速度に影響します。 ビジネス要件に基づいて、再開可能アップロード機能を有効にするかどうかを決定します。
  • ネットワークストリームをアップロードします。 You can use this method to upload online audio or video files by using the file URLs. この方法を使用すると、再開可能なアップロードを有効にできます。 最大48.8テラバイトのファイルをアップロードできます。 Before you upload online files, you must download the files to a local disk. ローカルディスクに十分な容量があることを確認してください。 詳細については、サンプルコードのtestUploadURLStream関数をご参照ください。
  • ファイルストリームをアップロードします。 この方法を使用して、指定したローカルファイルをアップロードできます。 You cannot enable resumable upload when you use this method. You can upload a file of up to 5 GB in size. 詳細については、サンプルコードのtestUploadFileStream関数をご参照ください。
  • ストリームアップロードを使用します。 この方法を使用して、ファイルストリームやネットワークストリームなどの指定されたストリームをアップロードできます。 この方法を使用すると、再開可能なアップロードを有効にできません。 最大5 GBのファイルをアップロードできます。 詳細については、次のサンプルコードのtestUploadStream関数をご参照ください。
重要

サンプルコードを使用する場合は、対応するクラスを手動でインポートする必要があります。 コードの実行中に関連する依存関係が見つからない場合は、「トラブルシューティング」をご参照ください。

サンプルコード
public class UploadVideoDemo {
    // Required. Alibaba CloudアカウントのAccessKey IDを入力します。
    private static final String accessKeyId = "<Your accessKeyId>";
    // Required. Alibaba CloudアカウントのAccessKey IDを入力します。
    private static final String accessKeySecret = "<Your accessKeySecret>";
public static void main(String[] args) {
    // ビデオファイルをアップロードします。
    // Required. ファイルのタイトルを指定します。
    文字列タイトル="テスト";
    // ローカルファイルまたはファイルストリームをアップロードするときは、/User/sample /file name.mp4など、ファイル名をファイルの絶対パスに設定します。 ファイル名が必要です。
    // オンラインファイルをアップロードするときは、ファイル名をソースファイルの名前 (ファイル名. mp4など) に設定します。 ファイル名が必要です。 
    // ストリームアップロードを使用する場合は、ファイル名をソースファイルの名前 (ファイル名. mp4など) に設定します。 
    // アップロードするすべてのファイルの名前には、ファイル名拡張子を含める必要があります。
    文字列fileName = "/Users/test/video/test.mp4";
    // Upload a local file.
    testUploadVideo(accessKeyId、accessKeySecret、title、fileName);

    // アップロードするオンラインファイルのURL。
    文字列url = "http://test.aliyun.com/video/test.mp4";

    // Upload a network stream.
    // URLにファイル名拡張子が含まれていない場合は、ファイル名拡張子を指定します。
    String fileExtension = "mp4";
    testUploadURLStream(accessKeyId、accessKeySecret、title、url、fileExtension);

    // Upload a file stream.
    testUploadFileStream(accessKeyId、accessKeySecret、title、fileName);

    // ストリームアップロードを使用して、ファイルストリームまたはネットワークストリームをメディアファイルとしてアップロードします。
    InputStream inputStream = null;
    // ストリームアップロードを使用してファイルストリームをアップロードします。
    try {
        inputStream = new FileInputStream(fileName);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    // ストリームアップロードを使用してネットワークストリームをアップロードします。
    try {
        inputStream=新しいURL(url).openStream();
    } catch(IOException e){
        e.printStackTrace();
    }
    testUploadStream(accessKeyId、accessKeySecret、title、fileName、inputStream);
}

/**
 * ローカルファイルをアップロードします。
 *
 * @ param accessKeyId
 * @ param accessKeySecret
 * @ paramタイトル
 * @ 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スローリクエストのタイムアウト期間を指定します。 システムが部品のアップロードに指定されたタイムアウト時間よりも時間がかかる場合、デバッグログが生成されます。 デバッグログが生成されないようにしきい値を調整できます。 デフォルトのタイムアウト期間は300,000ミリ秒です。* /
    // request.setSlowRequestsThreshold(300000L);
    /* 各パーツのスローリクエストのタイムアウト期間を指定します。 デフォルトのタイムアウト時間は300秒です。 */
    // request.setSlowRequestsThreshold(300000L);
    /* オプション。 ウォーターマークを表示するかどうかを指定します。 テンプレートグループのIDを指定する場合は、テンプレートグループの設定に基づいてウォーターマークを表示するかどうかを決定します。 */
    // request.setIsShowWaterMark(true);
    /* オプション。 イベント通知のコールバック設定をカスタマイズします。 */
    // request.setUserData("{\" Extend\":{\" test\":\" www\",\" localId\":\" xxxx\"},\" MessageCallback\":{\" CallbackURL\":\" http://demo.example.com\"}}");
    /* オプション。 ビデオのカテゴリIDを指定します。 */
    // request.setCateId(0);
    /* オプション。 ビデオのタグを指定します。 複数入力する場合は、コンマ (,) で区切ります。 */
    // request.setTags("タグ1, タグ2");
    /* オプション。 ビデオの説明を指定します。 */
    // request.setDescription("ビデオの説明");
    /* オプション。 ビデオのサムネイルを指定します。 */
    // 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");
    /* アップロードの進行状況のデフォルトのコールバックを有効にします。 */
    // request.setPrintProgress(false);
    /* アップロードの進行状況のカスタムコールバックを指定します。 コールバックはVoDProgressListenerを継承する必要があります。 */
    // request.setProgressListener (新しいPutObjectProgressListener());
    /* Security Token Service (STS) 情報の生成に使用するクラスを指定します。 */
    // request.setVoDRefreshSTSTokenListener(new RefreshSTSTokenImpl());
    /* アプリケーションのIDを指定します。 */
    // request.setAppId("app-100 ****");
    /* ApsaraVideo VODのアクセスリージョンを指定します。 */
    // request.setApiRegionId("cn-shanghai");
    /* Elastic Compute Service (ECS) インスタンスがデプロイされているリージョンを指定します。 */
    // request.setEcsRegionId("cn-shanghai");
    UploadVideoImpl uploader = new UploadVideoImpl();
    UploadVideoResponse応答=uploader.uploadVideo (リクエスト);
    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");
    }
}

/**
 * URLを使用してネットワークストリームをアップロードします。 再開可能なアップロードがサポートされています。 最大48.8テラバイトのファイルをアップロードできます。 
 * オンラインファイルをアップロードする前に、ファイルをローカルディスクにダウンロードする必要があります。 ローカルディスクに十分な容量があることを確認してください。 
 * 指定したURLにファイル名拡張子が含まれていない場合は、fileExtensionパラメーターを設定します。 
 * @ param accessKeyId
 * @ param accessKeySecret
 * @ paramタイトル
 * @ param fileName
 * @ 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);
    /* オプション。 イベント通知のコールバック設定をカスタマイズします。 */
    // request.setUserData("{\" Extend\":{\" test\":\" www\",\" localId\":\" xxxx\"},\" MessageCallback\":{\" CallbackURL\":\" http://demo.example.com\"}}");
    /* オプション。 ビデオのカテゴリIDを指定します。 */
    // request.setCateId(0);
    /* オプション。 ビデオのタグを指定します。 複数入力する場合は、コンマ (,) で区切ります。 */
    // request.setTags("タグ1, タグ2");
    /* オプション。 ビデオの説明を指定します。 */
    // request.setDescription("ビデオの説明");
    /* オプション。 ビデオのサムネイルを指定します。 */
    // 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);
    /* アップロードの進行状況のカスタムコールバックを指定します。 The callback must inherit VoDProgressListener. */
    // request.setProgressListener (新しいPutObjectProgressListener());
    /* アプリケーションのIDを指定します。 */
    // request.setAppId("app-100 ****");
    /* ApsaraVideo VODのアクセスリージョンを指定します。 */
    // request.setApiRegionId("cn-shanghai");
    /* ECSインスタンスがデプロイされているリージョンを指定します。 */
    // request.setEcsRegionId("cn-shanghai");
    UploadVideoImpl uploader = new UploadVideoImpl();
    UploadURLStreamResponse=uploader.uploadURLStream (リクエスト);
    System.out.print("RequestId=" + response.getRequestId() + "\n"); // ApsaraVideo VODに送信するリクエストのIDを指定します。
    if (response.isSuccess()) {
        System.out.print("VideoId=" + response.getVideoId() + "\n");
    } else {
        /* If the callback URL that you specify is invalid, video upload is not affected. ビデオ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タイトル
 * @ param fileName
 * /
private static void testUploadFileStream(String accessKeyId, String accessKeySecret, String title, String fileName) {
    UploadFileStreamRequest request = new UploadFileStreamRequest(accessKeyId, accessKeySecret, title, fileName);
    /* オプション。 デフォルトの透かしを適用するかどうかを指定します。 テンプレートグループの設定に基づいて、デフォルトの透かしを適用するかどうかを指定できます。 */
    // request.setShowWaterMark(true);
    /* イベント通知のコールバック設定をカスタマイズします。 */
    // request.setUserData(""{\"Extend\" :{\ "test\":\"www\",\"localId\":\"xxxx\" },\ "MessageCallback\" :{\ "CallbackURL\":\"http://demo.example.com\"} ");
    /* オプション。 ビデオのカテゴリIDを指定します。 */
    // request.setCateId(0);
    /* オプション。 ビデオのタグを指定します。 複数入力する場合は、コンマ (,) で区切ります。 */
    // request.setTags("タグ1, タグ2");
    /* オプション。 ビデオの説明を指定します。 */
    // request.setDescription("ビデオの説明");
    /* オプション。 ビデオのサムネイルを指定します。 */
    // 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 (新しいPutObjectProgressListener());
    /* アプリケーションのIDを指定します。 */
    // request.setAppId("app-100 ****");
    /* ApsaraVideo VODのアクセスリージョンを指定します。 */
    // request.setApiRegionId("cn-shanghai");
    /* ECSインスタンスがデプロイされているリージョンを指定します。 */
    // request.setEcsRegionId("cn-shanghai");
    UploadVideoImpl uploader = new UploadVideoImpl();
    UploadFileStreamResponse応答=uploader.uploadFileStream (リクエスト);
    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タイトル
 * @ 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);
     /* オプション。 デフォルトの透かしを適用するかどうかを指定します。 テンプレートグループの設定に基づいて、デフォルトの透かしを適用するかどうかを指定できます。 */
    // request.setShowWaterMark(true);
    /* イベント通知のコールバック設定をカスタマイズします。 */
    // request.setUserData(""{\"Extend\" :{\ "test\":\"www\",\"localId\":\"xxxx\" },\ "MessageCallback\" :{\ "CallbackURL\":\"http://demo.example.com\"} ");
    /* オプション。 ビデオのカテゴリIDを指定します。 */
    // request.setCateId(0);
    /* オプション。 ビデオのタグを指定します。 複数入力する場合は、コンマ (,) で区切ります。 */
    // request.setTags("タグ1, タグ2");
    /* オプション。 ビデオの説明を指定します。 */
    // request.setDescription("ビデオの説明");
    /* オプション。 ビデオのサムネイルを指定します。 */
    // 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 (新しいPutObjectProgressListener());
     /* アプリケーションのIDを指定します。 */
    // request.setAppId("app-100 ****");
    /* ApsaraVideo VODのアクセスリージョンを指定します。 */
    // request.setApiRegionId("cn-shanghai");
    /* ECSインスタンスがデプロイされているリージョンを指定します。 */
    // request.setEcsRegionId("cn-shanghai");
    UploadVideoImpl uploader = new UploadVideoImpl();
    UploadStreamResponse応答=uploader.uploadStream (リクエスト);
    System.out.print("RequestId=" + response.getRequestId() + "\n"); // ApsaraVideo VODに送信するリクエストのIDを指定します。
    if (response.isSuccess()) {
        System.out.print("VideoId=" + response.getVideoId() + "\n");
    } else { // 指定したコールバックURLが無効な場合、動画のアップロードは影響を受けません。 ビデオIDはエラーコードと共に返されます。 アップロードの失敗が無効なコールバックURLによって引き起こされない場合、ビデオの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 {
    // Required. Alibaba CloudアカウントのAccessKey IDを入力します。
    private static final String accessKeyId = "<Your accessKeyId>";
    // Required. Alibaba CloudアカウントのAccessKey IDを入力します。
    private static final String accessKeySecret = "<Your accessKeySecret>";

    public static void main(String[] args) {
    // M3U8ファイルをアップロードします。
        // ローカルM3U8オーディオまたはビデオファイルをアップロードします。
        testUploadLocalM3u8(accessKeyId、accessKeySecret);
        // オンラインM3U8オーディオまたはビデオファイルをアップロードします。
        testUploadWebM3u8(accessKeyId、accessKeySecret);
    }
    /**
     * ローカルM3U8オーディオまたはビデオファイルをApsaraVideo VODにアップロードします。 デフォルトでは、M3U8ファイルと tsパーツは同じディレクトリにあります。 sliceFilenamesパラメーターが空の場合、M3U8ファイルのパスが解析され、のパスが取得されます。tsパーツ。
     *
     * @ param requestローカルM3U8ファイルをアップロードするためのリクエストクラスです。
     * m3u8Filename: ローカルM3U8インデックスファイルの絶対パス。 M3U8ファイルの部品情報には相対パスを含める必要があり、URLまたは絶対ローカルパスを含めることはできません。
     * sliceFilenames: の絶対パス。tsパーツ。 このパラメーターが空の場合、ApsaraVideo VODはm3u8Filenameパラメーターで指定されたM3U8ファイルのパスを自動的に解析します。
     */
    private static void testUploadLocalM3u8(String accessKeyId, String accessKeySecret) {
        文字列タイトル="test_upload_local_m3u8";
        文字列m3u8Filename = "/Users/test/0e9ecfc6da934d1887ed7bdfc925ecf 5/cc38da35c7b24de0abe58619cdd7a8-6479a12446b994719838e0307f ****-ld.m3u8";
        UploadLocalM3u8Request request = new UploadLocalM3u8Request(accessKeyId、accessKeySecret、title、m3u8Filename);
        String[] sliceFilenames = new String[]{
                「 /ユーザー /テスト /0e9ecfc6da934d1887ed7bdfc925ecf 5 /スライス /cc38da35c7b24de0abe58619cdd7a896-c45797a1ad6e75fbb9d1a8493703 ****-ld-00001.ts」、
                「 /ユーザー /テスト /0e9ecfc6da934d1887ed7bdfc925ecf 5 /スライス /cc38da35c7b24de0abe58619cdd7a896-c45797a1ad6e75fbb9d1a8493703 ****-ld-00002.ts」、
                「 /ユーザー /テスト /0e9ecfc6da934d1887ed7bdfc925ecf 5 /スライス /cc38da35c7b24de0abe58619cdd7a896-c45797a1ad6e75fbb9d1a8493703 ****-ld-00003.ts」、
                「 /ユーザー /テスト /0e9ecfc6da934d1887ed7bdfc925ecf 5 /スライス /cc38da35c7b24de0abe58619cdd7a896-c45797a1ad6e75fbb9d1a8493703 ****-ld-00004.ts」、
                「 /ユーザー /テスト /0e9ecfc6da934d1887ed7bdfc925ecf 5 /スライス /cc38da35c7b24de0abe58619cdd7a896-c45797a1ad6e75fbb9d1a8493703 ****-ld-00005.ts」
        };
        // Optional. The list of .ts parts. このパラメーターを空のままにすると、ApsaraVideo VODは自動的にm3u8FileURLパラメーターを解析してのパスを取得します。tsパーツ。
        request.setSliceFilenames(sliceFilenames);
        /* マルチパートアップロードの各パーツのサイズを指定します。 デフォルトのサイズは2 MBです。 */
        request.setPartSize(2*1024 * 1024L);
        /* マルチパートアップロードの同時スレッド数を指定します。 デフォルト値は 1 です。 同時スレッドはサーバーのCPUリソースを消費します。 サーバーの負荷に基づいて値を指定できます。 */
        request.setTaskNum(1);
        /* オプション。 ウォーターマークを表示するかどうかを指定します。 テンプレートグループのIDを指定する場合は、テンプレートグループの設定に基づいてウォーターマークを表示するかどうかを決定します。 */
        // request.getShowWaterMark(true);
        /* オプション。 イベント通知のコールバック設定をカスタマイズします。 */
        // request.setUserData("{\" Extend\":{\" test\":\" www\",\" localId\":\" xxxx\"},\" MessageCallback\":{\" CallbackURL\":\" http://test.test.com\"}}");
        /* オプション。 ビデオのカテゴリIDを指定します。 */
        // request.setCateId(-1L);
        /* オプション。 ビデオのタグを指定します。 複数入力する場合は、コンマ (,) で区切ります。 */
        // request.setTags("タグ1, タグ2");
        /* オプション。 ビデオの説明を指定します。 */
        // request.setDescription("ビデオの説明");
        /* オプション。 ビデオのサムネイルを指定します。 */
        // 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");
        UploadM3u8FileImpl uploadM3u8File = new UploadM3u8FileImpl();
        UploadLocalM3u8Response uploadLocalM3u8Response = uploadM3u8File.uploadLocalM3u8 (リクエスト);
        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にアップロードします。 オンラインM3U8オーディオまたはビデオファイルをアップロードする前に、ファイルをローカルディスクにダウンロードする必要があります。 ローカルディスクに十分な容量があることを確認してください。
     *
     * @ param requestオンラインM3U8ファイルをアップロードするためのリクエストクラスです。
     * m3u8FileURL: オンラインM3U8インデックスファイルのURL。 M3U8ファイルの部品情報には相対パスを含める必要があり、URLまたは絶対ローカルパスを含めることはできません。
     * sliceFileURL: のURL。tsパーツ。 のURLを手動でアセンブルする必要があります。tsパーツ。
     */
    プライベート静的void testUploadWebM3u8(String accessKeyId, String accessKeySecret) {
        文字列タイトル="test_upload_web_m3u8";
        文字列m3u8FileURL = "http://test.aliyun.com/f0d644abc547129e957b386f772c72/a0e1e2817ab9425aa558fe67a90e717f-538087dcf2c201c31ce4324bf76af69 ****.m3u8";
        UploadWebM3u8Request request = new UploadWebM3u8Request(accessKeyId、accessKeySecret、title、m3u8FileURL);
        String[] sliceFileURL=new String[]{
                "http://test.aliyun.com/f0d644abc547129e957b386f772c72/a0e1e2817ab9425aa558fe67a90e717f-822598b9c170a8c6dad985e20cd9c27d-ld-0 ****.ts" 、
                "http://test.aliyun.com/f0d644abc547129e957b386f772c72/a0e1e2817ab9425aa558fe67a90e717f-822598b9c170a8c6dad985e20cd9c27d-ld-0 ****.ts" 、
                "http://test.aliyun.com/f0d644abc547129e957b386f772c72/a0e1e2817ab9425aa558fe67a90e717f-822598b9c170a8c6dad985e20cd9c27d-ld-0 ****.ts" 、
                "http://test.aliyun.com/f0d644abc547129e957b386f772c72/a0e1e2817ab9425aa558fe67a90e717f-822598b9c170a8c6dad985e20cd9c27d-ld-0 ****.ts" 、
                「http://test.aliyun.com/f0d644abc547129e957b386f772c72/a0e1e2817ab9425aa558fe67a90e717f-822598b9c170a8c6dad985e20cd9c27d-ld-0 ****.ts」
        };
        // Optional. のリスト。tsパーツ。 このパラメーターを空のままにすると、ApsaraVideo VODは自動的にm3u8FileURLパラメーターを解析してのURLを取得します。tsパーツ。
        request.setSliceFileURL (sliceFileURL);
        /* ダウンロードしたファイルを保存するためのカスタム一時ディレクトリ。 このパラメーターを空のままにすると、ダウンロードされたファイルはアプリケーションが存在するディレクトリに保存されます。 */
        // request.setGlobalLocalFilePath("/User/download/");
        /* マルチパートアップロードの各パーツのサイズを指定します。 デフォルトのサイズは2 MBです。 */
        request.setPartSize(2*1024 * 1024L);
        /* マルチパートアップロードの同時スレッド数を指定します。 デフォルト値は 1 です。 同時スレッドはサーバーのCPUリソースを消費します。 サーバーの負荷に基づいて値を指定できます。 */
        request.setTaskNum(1);
        /* オプション。 ウォーターマークを表示するかどうかを指定します。 テンプレートグループのIDを指定する場合は、テンプレートグループの設定に基づいてウォーターマークを表示するかどうかを決定します。 */
        // request.setShowWaterMark(true);
        /* オプション。 イベント通知のコールバック設定をカスタマイズします。 */
        // request.setUserData("{\" Extend\":{\" test\":\" www\",\" localId\":\" xxxx\"},\" MessageCallback\":{\" CallbackURL\":\" http://test.example.com\"}}");
        /* オプション。 ビデオのカテゴリIDを指定します。 */
        // request.setCateId(-1L);
        /* オプション。 ビデオのタグを指定します。 複数入力する場合は、コンマ (,) で区切ります。 */
        // request.setTags("タグ1, タグ2");
        /* オプション。 ビデオの説明を指定します。 */
        // request.setDescription("ビデオの説明");
        /* オプション。 ビデオのサムネイルを指定します。 */
        // request.setCoverURL("http://cover.example.com/sample.jpg");
        /* オプション。 テンプレートグループのIDを指定します。 */
        // request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56 ****");
        /* オプション。 ワークフローのIDを指定します。 */
        // request.setWorkflowId("d4430d07361f0 * be1339577859b0 ****");
        /* オプション。 保存場所を指定します。 */
        // request.setStorageLocation("in-201703232118266-5sejdln9o.oss-cn-shanghai.aliyuncs.com");
        /* アプリケーションのIDを指定します。 */
        // request.setAppId("app-100 ****");
        /* ApsaraVideo VODのアクセスリージョンを指定します。 */
        // request.setApiRegionId("cn-shanghai");
        /* ECSインスタンスがデプロイされているリージョンを指定します。 */
        // request.setEcsRegionId("cn-shanghai");
        UploadM3u8FileImpl uploadM3u8File = new UploadM3u8FileImpl();
        UploadWebM3u8Response uploadWebM3u8Response = uploadM3u8File.uploadWebM3u8 (リクエスト);
        System.out.println("code = " + uploadWebM3u8Response.getCode());
        System.out.println("message = " + uploadWebM3u8Response.getMessage());
        System.out.println("videoId = " + uploadWebM3u8Response.getVideoId());
        System.out.println("requestId = " + uploadWebM3u8Response.getRequestId());
    }
}
            

画像のアップロード

サンプルコード
public class UploadImageDemo {
    // Required. Alibaba CloudアカウントのAccessKey IDを入力します。
    private static final String accessKeyId = "<Your accessKeyId>";
    // Required. Alibaba CloudアカウントのAccessKey IDを入力します。
    private static final String accessKeySecret = "<Your accessKeySecret>";
    public static void main(String[] args) {
        // 画像をアップロードします。
        // ローカル画像をアップロードします。
         testUploadImageLocalFile(accessKeyId、accessKeySecret);
        // ストリームアップロードを使用して、ファイルストリームまたはネットワークストリームを画像としてアップロードします。
         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("カバー");
        /* オプション。 イメージのファイル名拡張子を指定します。 有効な値: png、jpg、およびjpeg。 */
        // request.setImageExt("png");
        /* オプション。 画像のタイトルを指定します。 タイトルの長さは128バイトを超えることはできません。 タイトルをUTF-8でエンコードします。 */
        // request.setTitle("画像タイトル");
        /* オプション。 画像のタグを指定します。 タグの長さは最大32バイトです。 最大16個のタグを入力できます。 複数入力する場合は、コンマ (,) で区切ります。 タグをUTF-8でエンコードします。 */
        // request.setTags("タグ1, タグ2");
        /* オプション。 保存場所を指定します。 */
        // request.setStorageLocation("out-4f3952f78c0211e8b30200 **** .oss-cn-shanghai.aliyuncs.com");
        /* オプション。 ストリームアップロードでは、InputStreamパラメーターが必要で、fileNameパラメーターはオプションです。 fileNameパラメーターをソースファイルの名前に設定します。 ファイル名には. pngなどの拡張子を含める必要があります。 */
        文字列fileName = "/Users/demo/png/test.png";
        request.setFileName(fileName);
        /* アップロードの進行状況のデフォルトのコールバックを有効にします。 */
        // request.setPrintProgress(false);
        /* アップロードの進行状況のカスタムコールバックを指定します。 コールバックはVoDProgressListenerを継承する必要があります。 */
        // request.setProgressListener (新しいPutObjectProgressListener());
        /* アプリケーションのIDを指定します。 */
        // request.setAppId("app-100 ****");
        /* ApsaraVideo VODのアクセスリージョンを指定します。 */
        // request.setApiRegionId("cn-shanghai");
        UploadImageImpl uploadImage = new UploadImageImpl();
        UploadImageResponse response = uploadImage.upload (リクエスト);
        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");
        /* オプション。 画像のタイトルを指定します。 タイトルの長さは128バイトを超えることはできません。 タイトルをUTF-8でエンコードします。 */
        // request.setTitle("画像タイトル");
        /* オプション。 画像のタグを指定します。 タグの長さは最大32バイトです。 最大16個のタグを入力できます。 複数入力する場合は、コンマ (,) で区切ります。 タグをUTF-8でエンコードします。 */
        // request.setTags("タグ1, タグ2");
        /* オプション。 保存場所を指定します。 */
        // 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 (新しいPutObjectProgressListener());
        /* アプリケーションのIDを指定します。 */
        // request.setAppId("app-1000000");
        // Upload a file stream.
        // InputStream fileStream = getFileStream(request.getFileName());
        // if (fileStream != null) { 
        // request.setInputStream(fileStream);
        // }
        // Upload a network stream.
        文字列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 (リクエスト);
        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");
        }
    }
    プライベート静的InputStream getFileStream(String fileName) {
        try {
            新しいFileInputStream(fileName) を返します。
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        ヌルを返します。
    }
    プライベート静的InputStream getUrlStream (文字列url) {
        try {
            新しいURL(url) を返します。openStream();
        } catch(IOException e){
            e.printStackTrace();
        }
        ヌルを返します。
    }
}          

補助メディア資産のアップロード

サンプルコード
public class UploadAttachedMediaDemo {
  // Required. Alibaba CloudアカウントのAccessKey IDを入力します。
    private static final String accessKeyId = "<Your accessKeyId>";
    // Required. Alibaba CloudアカウントのAccessKey IDを入力します。
    private static final String accessKeySecret = "<Your accessKeySecret>";
    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";
        /* ファイル名の拡張子を指定します。 */
        文字列mediaExt = "png";
        文字列ファイル名="/Users/demo/png/test.png";
        UploadAttachedMediaRequest request = new UploadAttachedMediaRequest(accessKeyId、accessKeySecret、businessType、mediaExt);
        request.setFileName (ファイル名);
        /* タイトルを指定します。 */
        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");
        UploadAttachedMediaImpl uploader = new UploadAttachedMediaImpl();
        UploadAttachedMediaResponseレスポンス=uploader.upload (リクエスト);
        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";

        /* ファイル名の拡張子を指定します。 */
        文字列mediaExt = "png";

        String filename = "http://test.aliyun.com/test.png";

        UploadAttachedMediaRequestリクエスト;
        // Upload a file stream.

        InputStream fileStream = getFileStream (ファイル名);

        request = new UploadAttachedMediaRequest(accessKeyId、accessKeySecret、businessType、mediaExt);
        request.setInputStream(fileStream);


        // Upload a network stream.

// 文字列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");

        // アップロードを開始します。

        UploadAttachedMediaImpl uploader = new UploadAttachedMediaImpl();

        UploadAttachedMediaResponseレスポンス=uploader.upload (リクエスト);
        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");

        }

    }
    プライベート静的InputStream getFileStream(String fileName) {
        try {
            新しいFileInputStream(fileName) を返します。
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        ヌルを返します。
    }
    プライベート静的InputStream getUrlStream (文字列url) {
        try {
            新しいURL(url) を返します。openStream();
        } catch(IOException e){
            e.printStackTrace();
        }
        ヌルを返します。
    }
}

高度な機能

  • アップロードプログレスバーのサンプルコード

    サンプルディレクトリのPutObjectProgressListener.javaファイルは、アップロードの進行状況のコールバック関数のサンプルコードです。

    クラスはVoDProgressListenerクラスを継承する必要があります。 ProgressEventは、ファイルをOSSにアップロードするときにアップロードの進行状況を通知するために生成されるイベントを示します。 さまざまなイベント通知のビジネス処理ロジックをカスタマイズできます。

    次のサンプルコードに例を示します。

    /**
     * アップロードの進行状況のコールバックのクラスを指定します。
     * コールバックは、アップロードの進行状況に対してコールバックを有効にした場合にのみ有効になります。 
     * OSSマルチパートアップロードが成功または失敗すると、コールバックがトリガーされます。 ビジネス処理ロジックに基づいてイベントコールバックを処理できます。 
     * ビデオまたはオーディオ情報が作成された後、アップロードの進行状況のコールバックのvideoIdパラメーターの値は、現在のアップロードで生成されたビデオIDです。 ビデオIDに基づいて、ビデオファイルとオーディオファイルを管理できます。 
     * 画像情報が作成された後、アップロードの進行状況のコールバックのImageIdパラメーターの値は、現在のアップロードで生成された画像IDです。 イメージIDに基づいてイメージを管理できます。 
     * /
    
    publicクラスPutObjectProgressListenerがVoDProgressListenerを実装 {
        /**
         * OSSにアップロードされたバイト数。
         */
        private long bytesWritten = 0;
        /**
         * ソースファイルの合計サイズ。 単位:バイト
         */
        private long totalBytes = -1;
        /**
         * 現在のアップロードが成功するかどうかを指定します。
         */
        private boolean succeed = false;
        /**
         * ビデオのID。
         */
        プライベートString videoId;
        /**
         * 画像のID。
         */
        プライベート文字列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("ビデオIDのアップロードを開始" + videoId + "......");
                    }
                    if (imageId != null) {
                        System.out.println("imageIdのアップロードを開始" + imageId + "......");
                    }
                    break;
                // イベント通知は、アップロードするファイルの合計サイズを示します。 単位:バイト このイベントは、ローカルファイルのアップロードでのみサポートされます。
                case REQUEST_CONTENT_LENGTH_EVENT:
                    this.totalBytes = bytes;
                    System.out.println(this.totalBytes + "合計バイトはOSSにアップロードされます。");
                    break;
                // イベント通知は、アップロードされたファイルのサイズを示します。 単位:バイト
                case REQUEST_BYTE_TRANSFER_EVENT:
                    this.bytesWritten += bytes;
                    if (this.totalBytes != -1) {
                        intパーセント= (int) (this.bytesWritten * 100.0 / this.totalBytes);
                        System.out.println(bytes + "バイトがこの時点で書き込まれている、アップロードの進行状況:" +
                                パーセント + "%(" + this.bytesWritten + "/" + this.totalBytes + ")");
                    } else {
                        System.out.println(bytes + "バイトがこの時点で書き込まれている、アップロードされたサブ合計:" +
                                "(" this.bytesWritten ")");
                    }
                    break;
                // イベント通知は、すべてのファイルがアップロードされたことを示します。
                case TRANSFER_COMPLETED_EVENT:
                    this.succeed = true;
                    if (videoId != null) {
                        System.out.println("Succeed to uploadvideoId" + videoId + "、" this. bytesWriten + "bytes have been transfer 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 transfer.");
                    }
                    if (imageId != null) {
                        System.out.println("imageIdのアップロードに失敗しました" + imageId "、" this.bytesWritten "bytes have been transfer.");
                    }
                    break;
    
                default:
                    break;
            }
        }
    
        public boolean isSucceed() {
            return succeed;
        }
    
        public void onVidReady(String videoId) {
            setVideoId(videoId);
        }
    
        public void onImageIdReady (文字列imageId) {
            setImageId(imageId);
        }
    
        public文字列getVideoId() {
            videoIdを返します。
        }
    
        public void setVideoId (文字列videoId) {
            this.videoId = videoId;
        }
    
        public String getImageId() {
            imageIdを返します。
        }
    
        public void setImageId (文字列imageId) {
            this.imageId = imageId;
        }
    }
                        
  • 一時トークンの更新に使用されるサンプルコード

    サンプルディレクトリのRefreshSTSTokenImpl.javaファイルは、一時トークンを更新するために使用できるサンプルコードです。

    次のサンプルコードに例を示します。

    /**
     * @ 著者vod
     * STS情報の生成に使用する実装クラスを指定します。
     * @ 日付2019/6/5
     * /
    public class RefreshSTSTokenImplがVoDRefreshSTokenListenerを実装 {
    
        パブリックSTSTokenDTO onRefreshSTSToken() {
            STSTokenDTO stsTokenDTO = new STSTokenDTO();
            stsTokenDTO.setAccessKeyId("<your sts AccessKeyId>");
            stsTokenDTO.setAccessKeySecret("<your sts AccessKeySecret>");
            stsTokenDTO.setSecurityToken("<your sts SecurityToken>");
            stsTokenDTOを返します。
        }
    
    }

トラブルシューティング

開発環境の違いにより、SDKは関連する依存関係を見つけることができない場合があります。 ほとんどの場合、この問題はIntelliJ IDEA開発環境でのコンパイルによって発生します。 必要なリソースパッケージがインポートされている場合は、次の方法を使用して問題の解決を試みることができます。
  • Mavenプロジェクトで、右上隅の [Maven] をクリックします。 次に、mアイコンをクリックし、mvn idea:moduleと入力してリソースをリロードします。 module
  • 上部のナビゲーションバーで、[ビルド] > [プロジェクトの再構築] を選択してプロジェクトを編集します。 再構築
  • aliyun-java-vod-upload-1.4.14.jarパッケージをプロジェクトのリソースディレクトリにコピーします。 ローカル依存関係をMaven依存関係に追加します。 次の図は、ローカルの依存関係を示しています。発行
    <dependency>
            <groupId>com.aliyun.vod</groupId>
            <artifactId> アップロード </artifactId>
            <version>1.4.14</version>
            <scope> システム </scope>
            <systemPath >${ project.basedir}/src/main/resources/aliyun-java-vod-upload-1.4.14.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>log4j-core</artifactId>
            <version>3.10.2</version>
        </dependency>
         <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-vod</artifactId>
            <version>2.15.11</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.28</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> アップロード </artifactId>
            <version>1.4.14</version>
            <scope> システム </scope>
            <systemPath >${ project.basedir}/src/main/resources/aliyun-java-vod-upload-1.4.14.jar</systemPath>
        </dependency>

関連ドキュメント

メディアアップロードのサンプルコードの詳細については、アップロードSDK For javaのパッケージを解凍するディレクトリにあるsample/UploadVideoDemo. Javaファイルをご参照ください。