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

ApsaraVideo VOD:Android SDK を使用してファイルをアップロードする

最終更新日:Jan 10, 2026

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

前提条件

  • ご利用のデバイスで Android 4.0 以降が実行されている必要があります。

  • サポートされているバージョン: Android 4.0 (API 14) 以降。

制限事項

  • Android SDK は、オーディオファイルとビデオファイルのアップロードのみをサポートしています。 補助メディアアセットのアップロードはサポートしていません。

SDK の統合

1. Android SDK のインストール

Android SDK の依存関係をプロジェクトの app/build.gradle ファイルに追加します。

dependencies {
    implementation 'com.aliyun.video.android:upload:1.7.3'
}

Alibaba Cloud Maven リポジトリの URL をルートディレクトリの build.gradle ファイルに追加します。

allprojects {
    repositories {
        maven { url "https://maven.aliyun.com/nexus/content/repositories/releases" }
    }
}

2. OSS Android SDK のインストール

Android 用 VOD アップロード SDK は OSS SDK に依存しています。OSS Android SDK もインストールする必要があります。詳細については、「OSS Android SDK のインストール」をご参照ください。依存関係を Gradle プロジェクトに追加します。

基本設定

1. 認証情報を取得する

まず、クライアントサイドアップロードの全体的なプロセスを理解します。次に、選択した権限付与方法に基づいて権限付与サービスをデプロイします。

  1. アップロード URL と認証情報を使用する場合は、権限付与サービスからアップロード URL と認証情報を取得します。

  2. Security Token Service (STS) トークンを使用する場合は、権限付与サービスから STS トークンを取得します。

2. アップロードインスタンスの初期化

アップロード URL と認証情報または STS トークンのいずれかを使用して、アップロードインスタンスを初期化します。

アップロード URL と認証情報を使用する方法 (推奨)

  1. アップロードインスタンス (VODUploadClient) の初期化コールバックを宣言します。

    uploader = new VODUploadClientImpl(getApplicationContext());
  2. アップロードインスタンス (VODUploadClient) を初期化します。

    説明
    • アップロード URL と認証情報を使用する方法では、init メソッドを呼び出して初期化を実行します。

    • アップロードの開始後にトリガーされる onUploadStarted コールバックで、setUploadAuthAndAddress(uploadFileInfo, uploadAuth, uploadAddress) メソッドを呼び出してアップロード URL と認証情報を設定します。

    • オーディオまたはビデオファイルをアップロードする際に、アップロード URL と認証情報の有効期限が切れると、onUploadTokenExpired コールバックがトリガーされます。 新しいアップロード認証情報をセットしてアップロードを再開するには、resumeWithAuth(uploadAuth) メソッドを呼び出す必要があります。

    コードを展開して表示

    // VODUploadClient の作成
    final VODUploadClient uploader = new VODUploadClientImpl(getApplicationContext());
    // コールバックの設定
    VODUploadCallback callback = new VODUploadCallback(){
        @Override
        public void onUploadSucceed(UploadFileInfo info) {
            OSSLog.logDebug("onsucceed ------------------" + info.getFilePath());
        }
    
        @Override
        public void onUploadFailed(UploadFileInfo info, String code, String message) {
            OSSLog.logError("onfailed ------------------ " + info.getFilePath() + " " + code + " " + message);
        }
    
        @Override
        public void onUploadProgress(UploadFileInfo info, long uploadedSize, long totalSize) {
            OSSLog.logDebug("onProgress ------------------ " + info.getFilePath() + " " + uploadedSize + " " + totalSize);
        }
    
        @Override
        public void onUploadTokenExpired() {
            OSSLog.logError("onExpired ------------- ");
            // RefreshUploadVideo 操作を呼び出して、アップロード認証情報を更新します。
            uploadAuth = "Set this to the value of the refreshed credential";
            uploader.resumeWithAuth(uploadAuth);
        }
    
        @Override
        public void onUploadRetry(String code, String message) {
            OSSLog.logError("onUploadRetry ------------- ");
        }
    
        @Override
        public void onUploadRetryResume() {
            OSSLog.logError("onUploadRetryResume ------------- ");
        }
    
        @Override
        public void onUploadStarted(UploadFileInfo uploadFileInfo) {
            OSSLog.logError("onUploadStarted ------------- ");
            // uploadAuth と uploadAddress は、アップロード認証情報と URL です。
            uploader.setUploadAuthAndAddress(uploadFileInfo, uploadAuth, uploadAddress);
        }
    };
    // アップロードの初期化
    uploader.init(callback);

STS トークンを使用する方法

  1. アップロードインスタンス (VODUploadClient) の初期化コールバックを宣言します。

    uploader = new VODUploadClientImpl(getApplicationContext());
  2. アップロードインスタンス (VODUploadClient) を初期化します。

    説明
    • STS トークンを使用する方法では、init(accessKeyId, accessKeySecret, secretToken, expireTime, callback) メソッドを呼び出して初期化を実行します。

    • secretToken 初期化パラメーターは、リクエストした一時的な STS 認証情報です。

    • 一時的な STS 認証情報の有効期限が切れると、OnUploadTokenExpired コールバックがトリガーされます。resumeWithToken(accessKeyId, accessKeySecret, secretToken, expireTime) メソッドを呼び出して新しい STS 認証情報を設定し、アップロードを再開する必要があります。

    コードを展開して表示

    // VODUploadClient オブジェクトの作成
    uploader = new VODUploadClientImpl(getApplicationContext());
    // コールバックの設定
    // コールバックの設定
    VODUploadCallback callback = new VODUploadCallback() {
                public void onUploadSucceed(UploadFileInfo info) {
                    OSSLog.logDebug("onsucceed ------------------" + info.getFilePath());
                }
                public void onUploadFailed(UploadFileInfo info, String code, String message) {
                    OSSLog.logError("onfailed ------------------ " + info.getFilePath() + " " + code + " " + message);
                }
                public void onUploadProgress(UploadFileInfo info, long uploadedSize, long totalSize) {
                    OSSLog.logDebug("onProgress ------------------ " + info.getFilePath() + " " + uploadedSize + " " + totalSize);
                        }
                    }
                }
                public void onUploadTokenExpired() {
                    OSSLog.logError("onExpired ------------- ");
                        // 新しい STS トークンを取得した後、resumeWithToken を呼び出します
                        uploader.resumeWithToken(accessKeyId, accessKeySecret, secretToken, expireTime);
                }
                public void onUploadRetry(String code, String message) {
                    OSSLog.logError("onUploadRetry ------------- ");
                }
                public void onUploadRetryResume() {
                    OSSLog.logError("onUploadRetryResume ------------- ");
                }
                public void onUploadStarted(UploadFileInfo uploadFileInfo) {
                    OSSLog.logError("onUploadStarted ------------- ");
                }
            };
    // 初期化します。一時的な認証情報が有効期限切れになった場合は、onUploadTokenExpired イベントで resumeWithToken を使用して更新します。デフォルトでは、再開可能なアップロードがサポートされています。
    uploader.init(accessKeyId, accessKeySecret, secretToken, expireTime, callback);

3. アップロードステータスコールバッククラスの設定

VODUploadCallback オブジェクトを設定します。このオブジェクトは、アップロードステータスのコールバッククラスです。以下のコールバックメソッドを設定できます。

コードを展開して表示

/**
 アップロード成功のコールバック。
 @param info アップロードされたファイルの情報。
 */
void onUploadSucceed(UploadFileInfo info);
/**
 アップロード失敗のコールバック。
 @param info アップロードされたファイルの情報。
 @param code エラーコード。
 @param message エラーメッセージ。
 */
 void onUploadFailed(UploadFileInfo info, String code, String message);
/**
 アップロード進捗のコールバック。
 @param fileInfo アップロードされたファイルの情報。
 @param uploadedSize アップロードされた部分のサイズ。
 @param totalSize ファイルの合計サイズ。
 */
 void onUploadProgress(UploadFileInfo fileInfo, long uploadedSize, long totalSize);
/**
 アップロード URL と認証情報が期限切れになった場合のコールバック。
 アップロード URL と認証情報を使用する場合、resumeWithAuth メソッドを呼び出してアップロードを続行する必要があります。
 STS トークンを使用する場合、resumeWithToken メソッドを呼び出してアップロードを続行する必要があります。
 */
 void onUploadTokenExpired();
/**
 アップロードリトライのコールバック。
 */
 void onUploadRetry(String code, String message);
/**
 リトライ後にアップロードを再開する際のコールバック。
 */
 void onUploadRetryResume ();
/**
 アップロード開始のコールバック。
 アップロード URL と認証情報を使用する場合、setUploadAuthAndAddress:uploadAuth:uploadAddress: メソッドを呼び出してアップロード URL と認証情報を設定する必要があります。
 @param fileInfo アップロードされたファイルの情報。
 */
  void onUploadStarted(UploadFileInfo fileInfo);

4. アップロードリクエスト関数の作成

オーディオおよびビデオファイルのパラメーター

アップロードリクエスト関数を作成して、音声ファイルまたは動画ファイルをアップロードリストに追加します。

String filePath = "ファイルパス";
VodInfo vodInfo = new VodInfo();
vodInfo.setTitle("タイトル" + index);
vodInfo.setDesc("説明。" + index);
vodInfo.cateId (19);
vodInfo.tags("スポーツ");
uploader.addFile(filePath,vodInfo);

イメージファイルのパラメーター

アップロードリクエスト関数を作成して、イメージファイルをアップロードリストに追加します。

String filePath = "イメージファイルのパス";
VodInfo vodInfo = new VodInfo();
vodInfo.setTitle("タイトル" + index);
vodInfo.setDesc("説明。" + index);
vodInfo.cateId (19);
vodInfo.tags("スポーツ");
uploader.addFile(filePath,vodInfo);

vodInfo の説明

// タイトル。
String title;
// タグ。
List tags;
// 説明。
String desc;
// カテゴリ。
idInteger cateId;
// サムネイル URL。https:// で始まる完全な URL である必要があります。
String coverUrl;
説明

ファイルを追加すると、SDK はファイルを UploadFileInfo オブジェクトにカプセル化します。構造は次のとおりです。

// ファイルのローカルパス。
String filePath;
// エンドポイント。
String endpoint;
// バケット。
String bucket;
// オブジェクト。
String object;
// VodInfo。
VodInfo vodInfo;

5. アップロードの開始

  1. start() メソッドを呼び出してアップロードを開始します。

    void start();

    このメソッドが呼び出されると、onUploadStarted コールバックがトリガーされます。 アップロード URL と認証情報を使用してファイルをアップロードする場合は、このコールバックメソッドでアップロード URL と認証情報を設定する必要があります。 次のサンプルコードに例を示します:

    void setUploadAuthAndAddress(UploadFileInfo uploadFileInfo, String uploadAuth, String uploadAddress)

  2. ファイルのアップロードが開始されると、onUploadProgress コールバックがアップロードの進捗を同期します。

  3. ファイルがアップロードされると、onUploadSucceed コールバックはアップロード結果を返します。コールバックには videoId プロパティと imageUrl プロパティが含まれています。

結果

  • 動画がアップロードされると、`videoId` が返されます。`videoId` を取得した後、動画を再生するには再生 URL を取得する必要があります。詳細については、「再生認証情報の取得」をご参照ください。

  • イメージがアップロードされると、`imageUrl` が返されます。URL 署名を有効にすると、`imageUrl` には生存時間 (TTL) が設定されます。詳細については、「URL 署名」をご参照ください。

6. インスタンスの破棄

release() メソッドを呼び出してアップロードインスタンスを破棄します。これにより、メモリとスレッドのリークを防ぎます。

void release();

高度な機能

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

アップロードインスタンス (VODUploadClient) を使用して、アップロードアクセラレーションを設定できます。

GB または TB 単位の大きなファイルをアップロードする必要がある場合や、中国本土からシンガポールストレージリージョンのストレージの場所に動画をアップロードするなどのリージョン間アップロードを実行する場合は、アップロードアクセラレーション機能を有効にできます。この機能を有効にする方法の詳細については、「この機能を有効にする方法」をご参照ください。機能を有効にした後、アップロードインスタンスの `vodInfo` 構成の UserData 文字列に、対応する key-value ペアを追加する必要があります。このペアは JSON 文字列として渡す必要があります。次のサンプルコードに例を示します。

vodInfo.setUserData("{\"Type\":\"oss\",\"Domain\":\"oss-accelerate.aliyuncs.com\"}");

パラメーターの説明

名前

タイプ

説明

Type

string

有効にするアップロードアクセラレーションのタイプ。oss のみがサポートされています。

Domain

string

ユーザーのバケットのアクセラレーションエンドポイント。 デフォルトのプロトコルは HTTPS です。

説明

機能を有効にした後に割り当てられるアクセラレーションエンドポイント (vod-*******.oss-accelerate.aliyuncs.com など) を使用します。

キュー管理

アップロードインスタンス (VODUploadClient) を使用すると、複数のファイルを追加して順次アップロードし、次のメソッドでアップロードキューを管理できます。

説明

VODUploadClient は複数のファイルのアップロードをサポートしていますが、アップロード認証情報と URL を使用する場合は、各ファイルを個別に設定する必要があります。複数ファイルのアップロードのコードの複雑さを軽減するために、アップロードごとに 1 つのファイルのみを追加することを推奨します。

  • キューからアップロードファイルを削除します。指定されたファイルがアップロード中の場合、アップロードはキャンセルされ、キュー内の次のファイルが自動的にアップロードされます。

    void deleteFile(int index)
  • アップロードキューをクリアします。ファイルがアップロード中の場合、そのアップロードはキャンセルされます。

    void clearFiles()
  • アップロードファイルキューを取得します。

    List<UploadFileInfo> listFiles()
  • ファイルをキャンセル済みとしてマークします。ファイルはアップロードリストに残ります。指定されたファイルがアップロード中の場合、アップロードはキャンセルされ、キュー内の次のファイルが自動的にアップロードされます。

    cancelFile(int index)
  • キャンセルされたファイルのアップロードを再開します。アップロードは自動的に開始されます。

    resumeFile(int index)

アップロードコントロール

VODUploadClient アップロードインスタンスは、アップロードをコントロールするための次のメソッドを提供します。

  • アップロードを停止します。ファイルがアップロード中の場合、そのアップロードはキャンセルされます。

    void stop();
    説明

    アップロードを停止した後、resumeFile を呼び出してファイルのアップロードを再開するか、キューをクリアしてファイルを再度追加してアップロードを再開できます。

  • アップロードを一時停止します。

    void pause();
  • アップロードを再開します。

    void resume();

コールバック処理

VODUploadClient アップロードインスタンスは、次のコールバックをサポートしています。

  • アップロードの失敗

    アップロードが失敗した場合、onUploadFailed コールバックがトリガーされます。このコールバックメソッドでは、code および message パラメーターから失敗の原因を確認し、ページにプロンプトを表示できます。エラーコードの詳細については、「エラーコード」および「OSS エラーコード」をご参照ください。

  • アップロード URL と認証情報の期限切れ

    アップロード認証情報が有効期限切れになった場合、onUploadTokenExpired コールバックがトリガーされます。このコールバックメソッドでは、ご利用のアプリサーバーから新しいアップロード認証情報をリクエストし、`resumeWithAuth(uploadAuth)` メソッドを呼び出してアップロードを再開できます。

    説明

    コールバックで新しいアップロード認証情報を設定する必要があります。

  • アップロードのタイムアウト

    アップロードがタイムアウトした場合、uploadRetry コールバックがトリガーされ、アップロードが自動的にリトライされます。このコールバックメソッドでは、ページにプロンプトを表示するか、cancel メソッドを呼び出してアップロードを停止できます。maxRetryCount プロパティを設定して、リトライの最大回数を指定することもできます。タイムアウトのリトライ後にアップロードを再開できる場合、uploadRetryResume コールバックがトリガーされ、アップロードが続行されます。

タイムアウト処理

アップロードインスタンス (VODUploadClient) を使用して、リトライの最大回数を設定できます。

/**
タイムアウト時の最大リトライ回数を設定します。デフォルト値は INT_MAX です。
 */
void setVodHttpClientConfig(VodHttpClientConfig var);

マルチパートアップロード設定

アップロードインスタンス (VODUploadClient) を使用すると、ファイルサイズのしきい値を設定してマルチパートアップロードを有効にできます。ファイルが partSize に指定されたサイズより大きい場合、ファイルはパート単位でアップロードされます。

/**
 パートサイズ。デフォルト値は 1,024 × 1,024 バイトです。ファイルが partSize で指定されたサイズより大きい場合、マルチパートアップロードが使用されます。
*/
void setPartSize(long partSize);

ストレージの場所の指定

アップロードインスタンス (VODUploadClient) を使用して、ファイルのストレージの場所を指定できます。ストレージの場所を指定しない場合、ファイルはデフォルトのストレージの場所にアップロードされます。事前にストレージの場所を有効化または設定する必要があります。詳細については、「ストレージ」をご参照ください。

/**
* ファイルのストレージの場所を指定します。ApsaraVideo VOD コンソールにログインし、[設定管理] > [メディアアセット管理] > [ストレージ] を選択して、ストレージの場所を表示します。
*/
void setStorageLocation(String storageLocation);

トランスコーディングの設定

アップロードインスタンス (VODUploadClient) でトランスコーディングテンプレートグループ ID を指定することで、トランスコーディングを設定できます。

/**
* トランスコーディングテンプレートグループ ID を設定します。ApsaraVideo VOD コンソールにログインし、[設定管理] > [メディア処理] > [トランスコーディングテンプレートグループ] を選択して、トランスコーディングテンプレートグループ ID を表示します。
*/
void setTemplateGroupId(String templateGroupId);

アップロードインスタンス (VODUploadClient) を使用して、ワークフロー ID を指定することでワークフローを設定できます。

/**
* ワークフロー ID を設定します。ApsaraVideo VOD コンソールにログインし、[設定管理] > [メディア処理] > [ワークフロー] を選択して、ワークフロー ID を表示します。
*/
void setWorkflowId(String workflowId);
重要

トランスコーディングテンプレートグループ ID とワークフロー ID の両方を指定した場合、ワークフロー設定が優先されます。

再開可能なアップロード

クライアントサイドアップロード SDK は、再開可能なアップロードをサポートしています。この機能を有効にするには、次のメソッドの値が `YES` であることを確認してください。

/**
 * 再開可能なアップロードのためにアップロードの進捗を記録するかどうかを指定します。デフォルト値は YES です。このパラメーターが YES に設定されている場合にのみ、アップロード SDK は再開可能なアップロードを自動的に実装します。このパラメーターを NO に設定すると、再開可能なアップロード機能は無効になります。
 */
void setRecordUploadProgressEnabled(boolean var1);

VOD サービスリージョンの設定

アップロードインスタンス (VODUploadClient) を使用して、ストレージリージョンを設定できます。

/**
 VOD リージョン。 デフォルト値は "cn-shanghai" です。
 */
void setRegion(String var);