VODは、Androidプラットフォームでビデオをアップロードするシナリオ向けに、AndroidアップロードSDKを提供しています。アップロードのフローについては、クライアントからのアップロードガイド をご参照ください。
Demo/app/src/main/java/com/tencent/ugcupload/demo/videoupload
ディレクトリにあります。Demo/app/src/main/java/com/tencent/ugcupload/demo/videoupload
をプロジェクトディレクトリにコピーして、package名を手動で変更する必要があります。Demo/app/build.gradle
を参照して、プロジェクトに依存関係を追加します。 implementation 'com.qcloud.cos:cos-android-nobeacon:5.8.5'
implementation 'com.qcloud.cos:quic:1.5.38'
説明:手動統合 を参照して、対応するバージョンの依存ライブラリを統合することもできます。
AndroidManifest.xml
に次の許可ステートメントを追加することができます。 <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<receiver android:name=".videoupload.impl.TVCNetWorkStateReceiver">
<intent-filter>
<!--ネットワーク変更を検出するaction-->
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
TXUGCPublish mVideoPublish = new TXUGCPublish(this.getApplicationContext(), "independence_android")
mVideoPublish.setListener(new TXUGCPublishTypeDef.ITXVideoPublishListener() {
@Override
public void onPublishProgress(long uploadBytes, long totalBytes) {
mProgress.setProgress((int) (100*uploadBytes/totalBytes));
}
@Override
public void onPublishComplete(TXUGCPublishTypeDef.TXPublishResult result) {
mResultMsg.setText(result.retCode + " Msg:" + (result.retCode == 0 ? result.videoURL : result.descMsg));
}
});
TXUGCPublishTypeDef.TXPublishParam param = new TXUGCPublishTypeDef.TXPublishParam();
param.signature = "xxx";
param.videoPath = "xxx";
signature
の計算ルールについては、クライアントからのアップロード署名 をご参照ください。
int publishCode = mVideoPublish.publishVideo(param);
TXUGCPublish mVideoPublish = new TXUGCPublish(this.getApplicationContext(), "independence_android")
mVideoPublish.setListener(new TXUGCPublishTypeDef.ITXMediaPublishListener() {
@Override
public void onMediaPublishProgress(long uploadBytes, long totalBytes) {
mProgress.setProgress((int) (100*uploadBytes/totalBytes));
}
@Override
public void onMediaPublishComplete(TXUGCPublishTypeDef.TXMediaPublishResult mediaResult) {
mResultMsg.setText(result.retCode + " Msg:" + (result.retCode == 0 ? result.videoURL : result.descMsg));
}
});
TXUGCPublishTypeDef.TXMediaPublishParam param = new TXUGCPublishTypeDef.TXMediaPublishParam();
param.signature = "xxx";
param.mediaPath = "xxx";
signature
の計算ルールについては、クライアントからのアップロード署名 をご参照ください。
int publishCode = mVideoPublish.publishMedia(param);
説明:
- アップロード方法は、ファイルのサイズに応じて、通常アップロードとマルチパートアップロードが自動的に選択されます。マルチパートアップロードの各手順を気にすることなく、マルチパートアップロードを行うことができます。
- 指定のサブアプリケーションにアップロードしたい場合は、サブアプリケーションシステム - クライアントからのアップロードをご参照ください。
アップロードパラメータとしてカバーへのパスを追加します。
TXUGCPublishTypeDef.TXPublishParam param = new TXUGCPublishTypeDef.TXPublishParam();
param.signature = "xxx";
param.videoPath = "xxx";
param.coverPath = "xxx";
signature
の計算ルールについては、クライアントからのアップロード署名 をご参照ください。
アップロードをキャンセルするには、TXUGCPublish
のcanclePublish()
インターフェースを呼び出します。
mVideoPublish.canclePublish();
アップロードを再開するには、同じアップロードパラメータを使用し(ビデオパスとカバーパスは変更されません)TXUGCPublish
のpublishVideo
を再度呼び出します。
VODはビデオのアップロード中、中断からの再開をサポートします。アップロードが予期せず終了した場合に、中断ポイントからアップロードを再開できるため、アップロード時間を短縮できます。
中断からの再開の有効期限は1日です。つまり同じビデオのアップロードが中断された場合、1日以内に再度アップロードすると中断ポイントからそのままアップロードできます。1日を超えるとデフォルトでは、完全なビデオを再度アップロードします。
アップロードパラメータのenableResume
は、中断からの再開のスイッチであり、デフォルトで有効になっています。
実際のアップロード中に発生するエラーのほとんどは、ネットワーク接続の障害またはタイムアウトに起因しています。このような問題を最適化するために、最適化された事前アップロードロジックを追加しました。事前アップロードには、HTTPDNSの解決 、推奨されるアップロードリージョンの取得および最適なアップロードリージョンの検出が含まれます。
Appを起動するときにTXUGCPublishOptCenter.getInstance().prepareUpload(signature)
を呼び出すことをお勧めします。事前アップロードモジュールは、<ドメイン名,IP>
マッピングテーブルと最適なアップロードリージョンをローカルにキャッシュします。ネットワークスイッチが検出されると、キャッシュを自動的にパージして更新します。
注意:必ず
AndroidManifest.xml
にネットワーク監視モジュールを登録してください。
<receiver android:name=".videoupload.impl.TVCNetWorkStateReceiver">
<intent-filter>
<!--ネットワーク変更を検出するaction-->
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
signature
の計算ルールについては、クライアントからのアップロード署名 をご参照ください。
アップロードパラメータのTXPublishParamの中のenableHTTPSをtrueに設定すれば完了です。デフォルトではfalseになっています。
TXUGCPublishTypeDef.TXPublishParam param = new TXUGCPublishTypeDef.TXPublishParam();
param.enableHttps = true;
アップロードオブジェクトの初期化:TXUGCPublish
パラメータ名 | パラメータの説明 | タイプ | 入力必須 |
---|---|---|---|
context | applicationコンテキスト。 | Context | はい |
customKey | ユーザーを区別するために使用されます。今後の問題特定を容易にするためにAppのアカウントIDを使用することをお勧めします。 | String | いいえ |
VOD appIdの設定:TXUGCPublish.setAppId
パラメータ名 | パラメータの説明 | タイプ | 入力必須 |
---|---|---|---|
appId | VOD appId。 | int | はい |
アップロードビデオ:TXUGCPublish.publishVideo
パラメータ名 | パラメータの説明 | タイプ | 入力必須 |
---|---|---|---|
param | アップロードパラメータ。 | TXUGCPublishTypeDef.TXPublishParam | はい |
アップロードパラメータ:TXUGCPublishTypeDef.TXPublishParam
パラメータ名 | パラメータの説明 | タイプ | 入力必須 |
---|---|---|---|
signature | クライアントからのアップロード署名。 | String | はい |
videoPath | ローカルビデオファイルパス。 | String | はい |
coverPath | ローカルカバーファイルパス。デフォルトではカバーファイルは含まれません。 | String | いいえ |
enableResume | 中断ポイントからの再開の有効無効を指定。デフォルトでは有効になっています。 | boolean | いいえ |
enableHttps | HTTPSの有効無効を指定。デフォルトでは無効になっています。 | boolean | いいえ |
fileName | Tencent Cloudにアップロードされたビデオファイル名です。空のままの場合、デフォルトでローカルファイル名が使用されます。 | String | いいえ |
アップロードコールバックの設定:TXUGCPublish.setListener
パラメータ名 | パラメータの説明 | タイプ | 入力必須 |
---|---|---|---|
listener | アップロードの進行状況と結果のコールバックを監視します。 | TXUGCPublishTypeDef.ITXVideoPublishListener | はい |
進行状況コールバック:TXUGCPublishTypeDef.ITXVideoPublishListener.onPublishProgress
変数名 | 変数の説明 | タイプ |
---|---|---|
uploadBytes | アップロード済みのバイト数。 | long |
totalBytes | 合計バイト数。 | long |
結果コールバック:TXUGCPublishTypeDef.ITXVideoPublishListener.onPublishComplete
変数名 | 変数の説明 | タイプ |
---|---|---|
result | アップロード結果。 | TXUGCPublishTypeDef.TXPublishResult |
アップロード結果:TXUGCPublishTypeDef.TXPublishResult
メンバー変数名 | 変数の説明 | タイプ |
---|---|---|
retCode | 結果コード。 | int |
descMsg | アップロード失敗のエラー説明。 | String |
videoId | VODビデオファイルID。 | String |
videoURL | ビデオストレージアドレス。 | String |
coverURL | カバーストレージアドレス。 | String |
事前アップロード:TXUGCPublishOptCenter.prepareUpload
パラメータ名 | パラメータの説明 | タイプ | 入力必須 |
---|---|---|---|
signature | クライアントからのアップロード署名。 | String | はい |
アップロードオブジェクトの初期化:TXUGCPublish
パラメータ名 | パラメータの説明 | タイプ | 入力必須 |
---|---|---|---|
context | applicationコンテキスト。 | Context | はい |
customKey | ユーザーを区別するために使用されます。今後の問題特定を容易にするためにAppのアカウントIDを使用することをお勧めします。 | String | いいえ |
VOD appIdの設定:TXUGCPublish.setAppId
パラメータ名 | パラメータの説明 | タイプ | 入力必須 |
---|---|---|---|
appId | VOD appId。 | int | はい |
アップロード画像:TXUGCPublish.publishMedia
パラメータ名 | パラメータの説明 | タイプ | 入力必須 |
---|---|---|---|
param | アップロードパラメータ。 | TXUGCPublishTypeDef.TXMediaPublishParam | はい |
アップロードパラメータ:TXUGCPublishTypeDef.TXMediaPublishParam
パラメータ名 | パラメータの説明 | タイプ | 入力必須 |
---|---|---|---|
signature | クライアントからのアップロード署名。 | String | はい |
mediaPath | ローカル画像ファイルパス。 | String | はい |
enableResume | 中断ポイントからの再開の有効無効を指定。デフォルトでは有効になっています。 | boolean | いいえ |
enableHttps | HTTPSの有効無効を指定。デフォルトでは無効になっています。 | boolean | いいえ |
fileName | Tencent Cloudにアップロードされたビデオファイル名です。空のままの場合、デフォルトでローカルファイル名が使用されます。 | String | いいえ |
アップロードコールバックの設定:TXUGCPublish.setListener
パラメータ名 | パラメータの説明 | タイプ | 入力必須 |
---|---|---|---|
listener | アップロードの進行状況と結果のコールバックを監視します。 | TXUGCPublishTypeDef.ITXMediaPublishListener | はい |
進行状況コールバック:TXUGCPublishTypeDef.ITXMediaPublishListener.onPublishProgress
変数名 | 変数の説明 | タイプ |
---|---|---|
uploadBytes | アップロード済みのバイト数。 | long |
totalBytes | 合計バイト数。 | long |
結果コールバック:TXUGCPublishTypeDef.ITXMediaPublishListener.onPublishComplete
変数名 | 変数の説明 | タイプ |
---|---|---|
result | アップロード結果。 | TXUGCPublishTypeDef.TXPublishResult |
アップロード結果:TXUGCPublishTypeDef.TXMediaPublishResult
メンバー変数名 | 変数の説明 | タイプ |
---|---|---|
retCode | 結果コード。 | int |
descMsg | アップロード失敗のエラー説明。 | String |
mediaId | VODビデオファイルID。 | String |
mediaURL | メディアリソースストレージアドレス。 | String |
事前アップロード:TXUGCPublishOptCenter.prepareUpload
パラメータ名 | パラメータの説明 | タイプ | 入力必須 |
---|---|---|---|
signature | クライアントからのアップロード署名。 | String | はい |
SDKは、TXUGCPublishTypeDef.ITXVideoPublishListene\ITXMediaPublishListener
インターフェースを介してビデオのアップロードのステータスを監視します。従って、TXUGCPublishTypeDef.TXPublishResult\TXMediaPublishResult
のretCode
を使用して、ビデオのアップロード状況を確認することができます。
ステータスコード | TVCConstantsにおいて対応する定数 | 意味 |
---|---|---|
0 | NO_ERROR | アップロードに成功しました。 |
1001 | ERR_UGC_REQUEST_FAILED | アップロードリクエストが失敗しました。通常、クライアントの署名が期限切れまたは無効になっており、Appに別の署名を再申請する必要があります。 |
1002 | ERR_UGC_PARSE_FAILED | リクエスト情報の解析に失敗しました。 |
1003 | ERR_UPLOAD_VIDEO_FAILED | ビデオのアップロードに失敗しました。 |
1004 | ERR_UPLOAD_COVER_FAILED | カバーのアップロードに失敗しました。 |
1005 | ERR_UGC_FINISH_REQUEST_FAILED | アップロード終了リクエストに失敗しました。 |
1006 | ERR_UGC_FINISH_RESPONSE_FAILED | アップロード終了の応答に失敗しました。 |
1007 | ERR_CLIENT_BUSY | クライアントはビジーです(オブジェクトはそれ以上のリクエストを処理できません)。 |
1008 | ERR_FILE_NOEXIT | アップロードファイルが存在しません。 |
1009 | ERR_UGC_PUBLISHING | ビデオのアップロード中です。 |
1010 | ERR_UGC_INVALID_PARAM | アップロードパラメータが空です。 |
1012 | ERR_UGC_INVALID_SIGNATURE | ビデオアップロードのsignatureが空です。 |
1013 | ERR_UGC_INVALID_VIDOPATH | ビデオファイルのパスが空です。 |
1014 | ERR_UGC_INVALID_VIDEO_FILE | 現在のパスにビデオファイルが存在しません。 |
1015 | ERR_UGC_FILE_NAME | 動画アップロードファイル名が長すぎる(40を超える)か、または特殊文字が含まれています。 |
1016 | ERR_UGC_INVALID_COVER_PATH | ビデオファイルのカバーパスが間違っており、ファイルが存在しません。 |
1017 | ERR_USER_CANCEL | ユーザーがアップロードをキャンセルしました。 |
1018 | ERR_UPLOAD_VOD | 5M未満のファイルのVODへの直接アップロードに失敗しました。 |
この記事はお役に立ちましたか?