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

ApsaraVideo VOD:Android 向けアップロード SDK を使用したファイルのアップロード

最終更新日:Feb 10, 2026

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

前提条件

  • ご利用の Android デバイスが Android 4.0 以降を実行していること。

  • 対応バージョン:Android 4.0(API レベル 14)以降。

制限事項

  • Android 向けアップロード SDK は、音声および動画ファイルのアップロードのみをサポートしています。補助メディアアセットのアップロードはサポートしていません。

SDK の統合

1. Android SDK のインストール

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

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

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

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

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

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

基本構成

1. 認証情報の取得

まず、「クライアントサイドアップロード」で説明されているクライアントサイドアップロードのワークフローを確認してください。その後、選択した権限付与方式に基づいて、権限付与サービスを展開します。

  1. アップロード URL および認証情報方式を選択する場合、権限付与サービス内でアップロード URL および認証情報を取得します。詳細については、「アップロード URL および認証情報の取得」をご参照ください。

  2. STS トークン方式を選択する場合、権限付与サービス内で 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("成功 ------------------" + info.getFilePath());
        }
    
        @Override
        public void onUploadFailed(UploadFileInfo info, String code, String message) {
            OSSLog.logError("失敗 ------------------ " + info.getFilePath() + " " + code + " " + message);
        }
    
        @Override
        public void onUploadProgress(UploadFileInfo info, long uploadedSize, long totalSize) {
            OSSLog.logDebug("進行状況 ------------------ " + info.getFilePath() + " " + uploadedSize + " " + totalSize);
        }
    
        @Override
        public void onUploadTokenExpired() {
            OSSLog.logError("有効期限切れ ------------- ");
            // RefreshUploadVideo を呼び出してアップロード認証情報を更新します。
            uploadAuth = "新しいアップロード認証情報";
            uploader.resumeWithAuth(uploadAuth);
        }
    
        @Override
        public void onUploadRetry(String code, String message) {
            OSSLog.logError("再試行 ------------- ");
        }
    
        @Override
        public void onUploadRetryResume() {
            OSSLog.logError("再試行後の再開 ------------- ");
        }
    
        @Override
        public void onUploadStarted(UploadFileInfo uploadFileInfo) {
            OSSLog.logError("アップロード開始 ------------- ");
            // 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 コールバックが発生します。新しい STS トークンを使用してアップロードを再開するには、resumeWithToken(accessKeyId, accessKeySecret, secretToken, expireTime) メソッドを呼び出します。

    コードを表示

    // VODUploadClient オブジェクトの作成
    uploader = new VODUploadClientImpl(getApplicationContext());
    // コールバックの設定
    VODUploadCallback callback = new VODUploadCallback() {
                public void onUploadSucceed(UploadFileInfo info) {
                    OSSLog.logDebug("成功 ------------------" + info.getFilePath());
                }
                public void onUploadFailed(UploadFileInfo info, String code, String message) {
                    OSSLog.logError("失敗 ------------------ " + info.getFilePath() + " " + code + " " + message);
                }
                public void onUploadProgress(UploadFileInfo info, long uploadedSize, long totalSize) {
                    OSSLog.logDebug("進行状況 ------------------ " + info.getFilePath() + " " + uploadedSize + " " + totalSize);
                }
                public void onUploadTokenExpired() {
                    OSSLog.logError("有効期限切れ ------------- ");
                        // 新しい STS トークンを取得した後に resumeWithToken を呼び出します。
                        uploader.resumeWithToken(accessKeyId, accessKeySecret, secretToken, expireTime);
                }
                public void onUploadRetry(String code, String message) {
                    OSSLog.logError("再試行 ------------- ");
                }
                public void onUploadRetryResume() {
                    OSSLog.logError("再試行後の再開 ------------- ");
                }
                public void onUploadStarted(UploadFileInfo uploadFileInfo) {
                    OSSLog.logError("アップロード開始 ------------- ");
                }
            };
    // アップロードインスタンスの初期化。STS トークンが有効期限切れになると、onUploadTokenExpired コールバックが発生します。resumeWithToken を呼び出して新しい STS トークンでアップロードを再開します。再開可能なアップロードはデフォルトで有効です。
    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 を呼び出してアップロード 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;
// カテゴリ ID。
Integer 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 パラメーターが返されます。このパラメーターの値は動画 ID です。その後、動画を再生するためのストリーミング URL を取得できます。詳細については、「再生認証情報を使用した動画の再生」をご参照ください。

  • 画像が正常にアップロードされると、imageUrl パラメーターが返されます。このパラメーターの値は画像 URL です。URL 署名が有効になっている場合、画像 URL は指定された期間後に有効期限切れになります。詳細については、「URL 署名の設定」をご参照ください。

6. 破棄

release() メソッドを呼び出してアップロードインスタンスを解放します。これにより、メモリおよびスレッドのリークを防止できます。

void release();

高度な機能

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

VODUploadClient アップロードインスタンスは、アップロードアクセラレーションをサポートしています。

ギガバイトまたはテラバイト単位の大容量ファイルをアップロードする場合や、中国本土から シンガポール ストレージリージョンへのアップロードなど、リージョンをまたいでファイルをアップロードする場合は、アップロードアクセラレーション機能を有効にできます。 詳細については、「アップロードアクセラレーションを有効にする」をご参照ください。 アップロードアクセラレーションを有効にした後、(JSON 文字列として渡される) 適切な key-value ペアを含む、対応する UserData 文字列の割り当てを、アップロードインスタンスの vodInfo 構成に追加する必要があります。 構文の例:

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

パラメーター

名前

説明

Type

string

アップロードアクセラレーションの種類。OSS のみがサポートされています。

Domain

string

バケットのアクセラレーテッドドメイン名。デフォルト値:https。

説明

アップロードアクセラレーションを有効化した後に割り当てられたアクセラレーテッドエンドポイント(例:vod-*******.oss-accelerate.aliyuncs.com)。

キュー管理

VODUploadClient アップロードインスタンスは、複数ファイルの順次アップロードをサポートしています。以下のメソッドを使用してアップロードキューを管理できます。

説明

VODUploadClient オブジェクトは、複数ファイルの同時アップロードをサポートしています。ただし、アップロード URL および認証情報を使用する場合、各ファイルを個別に構成する必要があります。マルチファイルアップロードのコードは複雑であるため、1 回に 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 コールバックが発生します。AppServer から新しいアップロード認証情報を取得し、新しい認証情報を使用してアップロードを再開するためのメソッドを呼び出す必要があります。

    説明

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

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

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

タイムアウト処理

VODUploadClient アップロードインスタンスでは、アップロードタイムアウト時の最大再試行回数を設定できます。

/**
アップロードタイムアウト時の最大再試行回数を設定します。デフォルト値:INT_MAX。
 */
void setVodHttpClientConfig(VodHttpClientConfig var);

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

アップロードインスタンス(VODUploadClient)では、マルチパートアップロードのファイルサイズしきい値を指定できます。ファイルサイズが partSize 値を超える場合、マルチパートアップロードが実行されます。

/**
 パートサイズ。デフォルト値:1024 × 1024。単位:バイト。ファイルサイズが 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 は、再開可能なアップロードをサポートしています。以下のメソッドが true に設定されていることを確認してください。

/**
 * 再開可能なアップロードのためのアップロード進行状況の記録を有効化します。デフォルト値:true。このパラメーターが true に設定されている場合にのみ、アップロード SDK が中断されたアップロードを自動的に再開します。false に設定した場合、再開可能なアップロードは無効になります。
 */
void setRecordUploadProgressEnabled(boolean var1);

リージョン設定

VODUploadClient アップロードインスタンスでは、ApsaraVideo VOD サービスのリージョンを設定できます。

/**
 ApsaraVideo VOD サービスのリージョンを指定します。デフォルト値:cn-shanghai。
 */
void setRegion(String var);