このトピックでは、Android 向けアップロード SDK を使用して、ローカルデバイス上のメディアファイルを ApsaraVideo VOD ストレージにアップロードする方法について説明します。
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. 認証情報の取得
まず、「クライアントサイドアップロード」で説明されているクライアントサイドアップロードのワークフローを確認してください。その後、選択した権限付与方式に基づいて、権限付与サービスを展開します。
-
アップロード URL および認証情報方式を選択する場合、権限付与サービス内でアップロード URL および認証情報を取得します。詳細については、「アップロード URL および認証情報の取得」をご参照ください。
-
STS トークン方式を選択する場合、権限付与サービス内で STS トークンを取得します。詳細については、「STS トークンの取得」をご参照ください。
2. アップロードインスタンスの初期化
必要に応じて、アップロード URL および認証情報方式または STS トークン方式を使用してアップロードインスタンスを初期化します。
アップロード URL および認証情報方式(推奨)
-
アップロードインスタンス(VODUploadClient)の初期化コールバックを宣言します。
uploader = new VODUploadClientImpl(getApplicationContext());
-
アップロードインスタンス(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 トークン方式
-
アップロードインスタンス(VODUploadClient)の初期化コールバックを宣言します。
uploader = new VODUploadClientImpl(getApplicationContext());
-
アップロードインスタンス(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. アップロードの開始
-
start() メソッドを呼び出してアップロードを開始します。
void start();
このメソッドは onUploadStarted コールバックをトリガーします。アップロード URL および認証情報方式を使用する場合は、このコールバック内でアップロード URL および認証情報を設定します。サンプルコード:
void setUploadAuthAndAddress(UploadFileInfo uploadFileInfo, String uploadAuth, String uploadAddress)
-
アップロードが開始されると、onUploadProgress コールバックが発生し、アップロードの進行状況を報告します。
-
アップロードが成功すると、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 アップロードインスタンスは、以下のアップロード制御メソッドをサポートしています。
コールバック処理
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);