ApsaraVideo VOD アップロード SDK を使用して、WeChat ミニプログラムから VOD ストレージにメディアファイルをアップロードできます。
注意事項
WeChat ミニプログラム SDK は、オーディオ、ビデオ、画像ファイルのアップロードをサポートしています。補助メディアアセットのアップロードはサポートしていません。
SDK とデモのダウンロード
SDK バージョン: 1.0.3
更新日時: 2023-07-15
パッケージ MD5 ハッシュ: 5145518e0bbb410c156b37c04c447a6f
ダウンロードアドレス: WeChat ミニプログラムアップロード SDK およびサンプルコード
SDK の統合
SDK ファイルをプロジェクトにコピーし、関連ページで依存関係をインポートします。
import VODUpload from 'aliyun-upload-sdk-1.0.3.min.js'基本設定
アップローダーの初期化
SDK インスタンスを初期化する際は、アップローダーを識別するために userId パラメーターを渡す必要があります。このパラメーターは必須であり、空にすることはできません。Alibaba Cloud アカウント ID またはカスタムユーザー ID を使用できます。アカウント ID を確認するには、アカウントセンターにアクセスしてください。userId パラメーターを渡さない場合、または空の値を渡した場合、エラーが発生します。
regionフィールドは、ApsaraVideo VOD でサポートされているリージョン ID のいずれかに設定する必要があります。
var uploader = new VODUpload({
// Alibaba Cloud アカウントの ID。このパラメーターは空にできません。アカウント ID は、アカウントセンターで確認してください。
userId: "25346073170691****",
// ファイルをアップロードする ApsaraVideo VOD のリージョン。デフォルト値: 'cn-shanghai'。その他の有効な値として 'eu-central-1' や 'ap-southeast-1' などがあります。詳細は「概要」をご参照ください。
region: "cn-shanghai",
// ネットワークの問題でアップロードが失敗した場合の再試行回数。デフォルト値: 3。
retryCount: 3,
// ネットワークの問題でアップロードが失敗した場合の再試行間隔。デフォルト値: 2 秒。
retryDuration: 2,
// アップロード開始時のコールバック。
onUploadstarted: function (uploadInfo) {},
// ファイルのアップロード成功時のコールバック。
onUploadSucceed: function (uploadInfo) {},
// ファイルのアップロード失敗時のコールバック。
onUploadFailed: function (uploadInfo, code, message) {},
// アップロードの進捗状況のコールバック。単位: バイト。
onUploadProgress: function (uploadInfo, totalSize, loadedPercent) {},
// アップロード認証情報の有効期限切れ時のコールバック。
onUploadTokenExpired: function (uploadInfo) {},
// 全ファイルのアップロード完了時のコールバック。
onUploadEnd: function (uploadInfo) {},
});
認証情報の設定
クライアント側全体のアップロードプロセスを確認し、希望する方法に対応する承認サービスをデプロイしてください。
「アップロード URL と認証情報」方式を使用する場合は、承認サービスからアップロード URL と認証情報を取得する必要があります。
「STS トークン」方式を使用する場合は、承認サービスからSTS トークンを取得する必要があります。
すべての承認情報は、onUploadstarted コールバックで設定します。認証情報が期限切れになると、onUploadTokenExpired コールバックがトリガーされます。このコールバック内で適切なメソッドを呼び出して、認証情報を更新してください。
アップロード URL と認証情報
setUploadAuthAndAddress メソッドを呼び出します。認証情報が期限切れになると、onUploadTokenExpired コールバックがトリガーされます。resumeUploadWithAuth メソッドを呼び出して、新しい認証情報を設定し、アップロードを再開します。
// アップロード開始のコールバック
onUploadstarted: function (uploadInfo) {
console.log('Starting file upload...');
console.log("onUploadStarted:" + JSON.stringify(uploadInfo))
var url = "https://alivc-demo.aliyuncs.com/demo/getVideoUploadAuth?title=" + uploadInfo.url + "&fileName=" + uploadInfo.url + "&fileSize=" + uploadInfo.fileSize + "&description=description&coverURL=" + uploadInfo.coverUrl + "&tags=tags";
wx.request({
'url': url,
success: (res => {
if (res.statusCode === 200) {
var akInfo = res.data.data;
uploader.setUploadAuthAndAddress(uploadInfo, akInfo.uploadAuth, akInfo.uploadAddress, akInfo.videoId);
} else {
console.log(res)
uploader.stopUpload();
}
}),
fail: (res => {
uploader.stopUpload();
console.log(res)
})
});
},
// アップロード認証情報の有効期限が切れた場合
onUploadTokenExpired: function (uploadInfo) {
const url = "https://alivc-demo.aliyuncs.com/demo/refreshVideoUploadAuth?videoId=" + uploadInfo.videoId;
wx.request({
'url': url,
success: (res => {
if (res.statusCode === 200) {
var akInfo = res.data.data;
uploader.resumeUploadWithAuth(akInfo.uploadAuth);
} else {
console.log(res)
uploader.stopUpload();
}
}),
fail: (res => {
uploader.stopUpload();
console.log(res)
})
});
},メソッドの説明:
uploader.setUploadAuthAndAddress(uploadInfo, uploadAuth, uploadAddress, videoId)
uploader.resumeUploadWithAuth(uploadAuth)パラメーター | 説明 |
uploadInfo | onUploadstarted コールバックの最初のパラメーターから値を取得できます。 |
uploadAuth | CreateUploadVideo 操作によって返されるアップロード資格情報。 |
uploadAddress | CreateUploadVideo 操作によって返されるアップロード URL。 |
videoId | CreateUploadVideo 操作によって返される音声または動画の ID。 |
STS トークン
setSTSToken メソッドを呼び出します。STS トークンが期限切れになると、onUploadTokenExpired コールバックがトリガーされます。resumeUploadWithSTSToken メソッドを呼び出して、新しい STS トークンを設定し、アップロードを再開します。
/* コールバックメソッド - アップロード開始 */
onUploadstarted: function (uploadInfo) {
console.log('Starting file upload...');
console.log("onUploadStarted:" + JSON.stringify(uploadInfo))
wx.request({
url: "https://alivc-demo.aliyuncs.com/demo/getSts",
// data: data,
// header: header,
// method: method,
success: (res => {
if (res.statusCode === 200) {
var akInfo = res.data.data;
uploader.setSTSToken(uploadInfo, akInfo.accessKeyId, akInfo.accessKeySecret, akInfo.securityToken);
} else {
console.log(res)
}
}),
fail: (res => {
onError(res);
})
});
},
// アップロード認証情報の有効期限が切れた場合
onUploadTokenExpired: function (uploadInfo) {
const url = "https://alivc-demo.aliyuncs.com/demo/getSts";
wx.request({
'url': url,
success: (res => {
if (res.statusCode === 200) {
var akInfo = res.data.data;
uploader.resumeUploadWithSTSToken(akInfo.accessKeyId, akInfo.accessKeySecret, akInfo.securityToken);
} else {
console.log(res)
uploader.stopUpload();
}
}),
fail: (res => {
uploader.stopUpload();
console.log(res)
})
});
},
メソッドの説明:
uploader.setSTSToken(uploadInfo, accessKeyId, accessKeySecret, secretToken)
uploader.resumeUploadWithSTSToken(accessKeyId, accessKeySecret, secretToken)パラメーター | 説明 |
uploadInfo | onUploadstarted コールバックの最初のパラメーターから値を取得できます。 |
accessKeyId | STS トークンの |
accessKeySecret | STS トークンの |
secretToken | STS トークンの |
ファイルの追加
<view class="weui-uploader__input-box">
<view class="weui-uploader__input" bindtap="chooseVideo"></view>
</view>// ビデオの選択
chooseVideo: function (e) {
var that = this;
wx.chooseVideo({
sourceType: ['album', 'camera'],
maxDuration: 60,
compressed: false,
camera: 'back',
success: function (res) {
var file = {url: res.tempFilePath, coverUrl: res.thumbTempFilePath};
var uploader = that.data.uploader;
var paramData = '{"Vod":{}}';
uploader.addFile(file, null, null, null, paramData);
}
})
},メソッドの説明:
uploader.addFile(file,endpoint,bucket,object,paramData)パラメーター | 必須 | タイプ | 説明 |
file | はい | ファイル | アップロードするメディアファイル。 |
endpoint | いいえ | 文字列 | OSS エンドポイント。null を指定した場合、実際の値は AppServer によって決定されます。 |
bucket | いいえ | 文字列 | ファイルをアップロードするバケット。null を指定した場合、実際の値は AppServer によって決定されます。 |
object | いいえ | 文字列 | ファイルをアップロードするオブジェクト。null を指定した場合、実際の値は AppServer によって決定されます。 |
paramData | いいえ | 文字列 | アップロードする動画または音声ファイルに関する情報 (タイトル、説明、トランスコード設定、コールバック設定など)。STS トークンを使用して動画または音声ファイルを ApsaraVideo VOD にアップロードする場合、
|
アップロードの開始
uploader.startUpload();ファイルのアップロードが開始されると、
onUploadProgressコールバックが呼び出され、アップロードの進行状況が同期されます。ファイルのアップロードが成功すると、
onUploadSucceedコールバックが呼び出され、アップロード結果が返されます。
高度な機能
アップロードアクセラレーションの使用
数ギガバイトや数テラバイトの大きなファイルをアップロードする場合や、中国本土リージョンから Singapore リージョンのストレージアドレスへのアップロードなど、リージョンをまたいでビデオをアップロードする場合には、アップロードアクセラレーション機能を有効にできます。
アップロードアクセラレーション機能を有効にするには、チケットを起票する必要があります。チケットには、Alibaba Cloud アカウントの UID と、アップロードアクセラレーションを使用したいストレージのアドレスを記載してください。
方法1:アップロード URL と認証情報
この方法でファイルをアップロードする場合、CreateUploadVideo API を呼び出し、UserData パラメーターでキーと値のペアを指定してアクセラレーション設定を構成します。サンプルコード:
UserData={
"AccelerateConfig": {
"Type": "oss",
"Domain": "https://oss-accelerate.aliyuncs.com"
}
}方法2:STS トークン
この方法でファイルをアップロードする場合、addFile メソッドを呼び出し、paramData パラメーターに UserData プロパティを追加して、アップロード内容を構成します。サンプルコード:
uploader.addFile(file,null,null,null,'{"Vod":{"UserData":{"AccelerateConfig":{"Type":"oss","Domain":"https://oss-accelerate.aliyuncs.com"}}}}');UserDataの説明
名前 | タイプ | 必須 | 説明 |
userData | string | いいえ | コールバック設定やアップロードアクセラレーション設定などのカスタム設定。値は JSON 文字列である必要があります。 |
パラメーターの説明は次のとおりです。
パラメーター | タイプ | 説明 |
Type | string | アップロードアクセラレーションを有効にするファイルタイプ。値は |
Domain | string | バケットの高速化ドメイン名。デフォルトで HTTPS が使用されます。 説明 アップロードアクセラレーションを有効にした後に割り当てられる高速化エンドポイント (例: |
UserData の設定方法の詳細は、「リクエストパラメーターの説明」をご参照ください。
アップロードの停止
stopUpload は、ファイルがアップロード中の場合にのみ呼び出すことができます。それ以外の場合、stopUpload は効果がありません。
uploader.stopUpload();キュー管理
次のメソッドを呼び出して、アップロード済みまたはアップロード中のファイルを管理できます:
アップロードリストのクエリ
返されるデータには、addFile を呼び出してアップロードされたファイルに関する情報が含まれます。「file:」は、リスト内の各要素がファイルであることを示します。トラバースすることで、管理したいファイルのインデックスを取得できます。
var list = uploader.listFiles(); for (var i=0; i<list.length; i++) { console.log("file:" + list[i].file.name); }アップロードするファイルの削除
uploader.deleteFile(index);//削除するファイルのインデックス。インデックスは listFiles 操作によって返されます。単一ファイルのアップロードのキャンセル
説明cancelFileを呼び出すと、コンソールにoss is cancel as errorメッセージが表示されます。これにより、アップロードされたパートがストレージ領域を占有するのを防ぎ、不要なコストを節約できます。キャンセルされたアップロードを再開するには、アップロードを再開する前に
uploader.resumeFile(index);を使用してファイルを復元する必要があります。
uploader.cancelFile(index);単一ファイルのアップロードの再開
uploader.resumeFile(index);アップロードリストのクリア
uploader.cleanList();
トラブルシューティング
WeChat ミニプログラム SDK の使用中にエラーが発生した場合は、エラーコードに基づいて原因を特定してください。詳細については、「エラーコード」をご参照ください。