ApsaraVideo VOD を使用すると、サードパーティプラットフォームから ApsaraVideo VOD へ、および Alibaba Cloud アカウント間でビデオリソースを移行できます。このトピックでは、これらの移行を実行する方法について説明します。
移行シナリオとメソッド
ApsaraVideo VOD は複数の移行メソッドをサポートしています。個人ウェブサイトやサードパーティクラウドサービスから、Alibaba Cloud アカウント内またはアカウント間で OSS リソースを、そして Alibaba Cloud アカウント間で ApsaraVideo VOD リソースを移行できます。
移行が成功すると、ApsaraVideo VOD はビデオ ID、再生 URL、サムネイル URL などの新しいビデオ情報を生成します。移行前と移行後のビデオ情報を手動で関連付ける必要があります。
移行シナリオ | 移行メソッド | 移行ツール |
サードパーティリソースを ApsaraVideo VOD に移行する |
| |
Alibaba Cloud アカウント内の OSS リソースを ApsaraVideo VOD に移行する |
| |
Alibaba Cloud アカウント間で OSS リソースを ApsaraVideo VOD に移行する |
| |
Alibaba Cloud アカウント間で ApsaraVideo VOD リソースを移行する |
|
事前準備
Alibaba Cloud アカウントが作成され、本人確認が完了している必要があります。Alibaba Cloud アカウントを作成するには、Alibaba Cloud 公式ウェブサイトにアクセスしてください。詳細については、「Alibaba Cloud アカウントの作成」をご参照ください。
ApsaraVideo VOD API オペレーションを呼び出すために、本人確認を完了するための AccessKey ペアを取得します。AccessKey ペアの取得方法の詳細については、「AccessKey ペアの作成」をご参照ください。
説明移行を実行するために Resource Access Management (RAM) ユーザーを使用する場合は、AccessKey ペアを取得する前に RAM ユーザーを作成する必要があります。詳細については、「RAM ユーザーとして ApsaraVideo VOD にアクセスする」をご参照ください。
(推奨) URL に基づくリソースの一括アップロード
シナリオ
移行するファイルがローカルサーバーやデバイスに保存されておらず、インターネット経由で公開アクセス可能な場合は、URL ベースの一括アップロードを使用できます。このメソッドを使用すると、内部ネットワーク経由で多数のファイルを迅速にアップロードし、トラフィック使用量を削減できます。
使用制限
URL ベースの一括アップロードは、中国 (上海)、中国 (北京)、中国 (深セン)、シンガポール、および米国 (シリコンバレー) リージョンでのみサポートされています。その他のリージョンでは、他の移行メソッドを使用する必要があります。エンドポイントの詳細については、「ApsaraVideo VOD リージョン ID」をご参照ください。
注意事項
URL ベースのアップロードジョブは非同期です。ジョブを送信した後、完了までに数時間から数日かかる場合があります。高い適時性が必要な場合は、代わりにアップロード SDK を使用してください。
URL ベースのアップロードジョブを送信するたびに、ApsaraVideo VOD は新しいメディア ID を持つ新しいメディアリソースを作成します。
移行プロセス
操作手順
ApsaraVideo VOD サーバー側 SDK を統合します。
この例では、Java 用 ApsaraVideo VOD SDK を使用します。他のプログラミング言語での SDK の使用方法の詳細については、「サーバー側 SDK」をご参照ください。
Java 用 SDK をダウンロードするには、「サーバー側 SDK」をご参照ください。Java 用 SDK をインストールするには、「インストール」をご参照ください。
移行するリソースを準備します。
説明移行するすべてのファイルのダウンロード URL を準備します。URL に署名が必要な場合は、ダウンロード期間中も有効であることを確認する必要があります。
ダウンロード URL は、ファイル名とファイル名拡張子を含む完全なパスである必要があります (例:
https://****.mp4)。
ApsaraVideo VOD サーバー側 SDK を使用して UploadMediaByURL オペレーションを呼び出し、リソースを一括アップロードします。
次の例は、Java でオペレーションを呼び出す方法を示しています。他のプログラミング言語の例については、「UploadMediaByURL」をご参照ください。
OpenAPI Explorer を使用してオンラインデバッグを実行することもできます。
アップロード結果を取得します。
方法 1: イベント通知を使用する
ApsaraVideo VOD は HTTP コールバックと MNS コールバックをサポートしています。イベント通知を構成すると、メディア処理が完了したとき (例: アップロードまたはトランスコードが完了したとき) に ApsaraVideo VOD から通知が送信されます。構成の詳細については、「イベント通知」をご参照ください。
URL を使用したバッチアップロードのイベントタイプは、「UploadByURLComplete」です。コールバック応答から、ジョブのステータスなどの情報を取得できます。
アップロード成功時のコールバック例
{ "Status": "success", "EventTime": "2017-03-20T07:49:17Z", "EventType": "UploadByURLComplete", "VideoId": "43q9fjdun3f****", "JobId": "4c815bjs83j1****", "SourceURL ": "http://example.aliyundoc.com/27ffc438-164d55217ef-0005-6884-51a-1****.mp4", "Size":"123456" }アップロード失敗時のコールバック例
{ "Status": "fail", "EventTime": "2017-03-20T07:49:17Z", "EventType": "UploadByURLComplete", "ErrorCode ": "URLInvalidError ", "ErrorMessage ": "download video failed by the url, please check it", "JobId": "4c815bjsued****" , "SourceURL ": "http://example.aliyundoc.com/27ffc438-164d55217ef-0005-6884-51a-1****.mp4", }
方法 2: API オペレーションを呼び出す
GetURLUploadInfos オペレーションを呼び出して、URL ベースのアップロードジョブのステータスを照会します。
自社構築のアップロードサービスを使用してリソースをアップロードする
サービスリージョンで URL ベースの一括アップロードがサポートされていない場合、または高いアップロード適時性が必要な場合は、ファイルをダウンロードして ApsaraVideo VOD アップロード SDK を使用してアップロードできます。アップロードサービスを Elastic Compute Service (ECS) インスタンスにデプロイする場合、ECS インスタンスのリージョンに基づいて、内部ネットワークまたはインターネット経由でアップロードすることを選択できます。
内部ネットワーク経由でのダウンロードとアップロード
シナリオ
アップロードサービスがソースビデオファイルと同じリージョンの ECS インスタンスで実行されている場合、Alibaba Cloud アカウント内またはアカウント間で OSS リソースを、または Alibaba Cloud アカウント間で ApsaraVideo VOD リソースを内部ネットワーク経由で移行できます。
移行プロセス
前提条件
アップロードサービスは、ソースビデオファイルと同じリージョンの ECS インスタンスで実行されます。
操作手順
移行する OSS または ApsaraVideo VOD リソースの内部ネットワークアドレスを準備して保存します。
説明リソース URL に署名が必要な場合は、ダウンロード期間中も有効であることを確認する必要があります。
ビデオオンデマンドリソース
GetMezzanineInfo オペレーションを呼び出して、オブジェクトの OSS アドレスを取得します。
OutputTypeパラメーターをossに設定します。OSS リージョンの後に
-internalを追加して、OSS アドレスを内部ネットワークアドレスに変換します。
OSS リソース
ファイルをリストしてオブジェクトのリストを取得し、そこから特定のリソースのソースアドレスを取得して保存できます。
OSS リージョンの後に
-internalを追加して、OSS アドレスを内部ネットワークアドレスに変換します。
次の例は、変更前と変更後のアドレスを示しています。
OSS オリジン URL
変更されたプライベートネットワークアドレス
outin-67870fd5b29****98a3900163e1c35d5.oss-cn-shanghai.aliyuncs.com/customerTrans/2a13b91506f9158f****7317f4a9d4c9/30f24681-1718d5c6237-**4bd.mp4
outin-67870fd5b29****98a3900163e1c35d5.oss-cn-shanghai-internal.aliyuncs.com/customerTrans/2a13b91506f9158f****7317f4a9d4c9/30f24681-1718d5c6237-**4bd.mp4
内部ネットワークアドレスの詳細については、「OSS の内部エンドポイントを使用して ECS インスタンスから OSS リソースにアクセスする」をご参照ください。
アップロードサービスを設定します。
説明アップロードサービスを ApsaraVideo VOD OSS バケットと同じリージョンの ECS インスタンスにデプロイします。中国本土では、OSS バケットのデフォルトリージョンは中国 (上海) です。デプロイ後、
regionIdパラメーターをこのリージョンに設定する必要があります。アップロード SDK を使用すると、アップロードは自動的に内部ネットワークを使用します。サンプルコードについては、「アップロードサービスを設定する」をご参照ください。ApsaraVideo VOD アップロード SDK を使用することを推奨します。
ステップ 2 のアップロードコードを実行して、ビデオを ApsaraVideo VOD にアップロードします。
アップロードリクエストでは、内部ネットワークアドレスをファイルパスとして使用します。
インターネット経由でのダウンロードとアップロード
シナリオ
アップロードサービスを ECS インスタンスにデプロイしない場合、または ECS インスタンスとソースビデオファイルが異なるリージョンにある場合は、インターネットを使用してファイルをダウンロードおよびアップロードできます。
移行プロセス
操作手順
移行するリソースのソースファイルアドレスを準備して保存します。
説明リソース URL に署名が必要な場合は、ダウンロード期間中も有効であることを確認する必要があります。
ソースファイルアドレスは、ファイル名とファイル名拡張子を含む完全なパスである必要があります (例:
https://****.mp4)。
ビデオオンデマンドリソース
SearchMedia オペレーションを呼び出して、移行するビデオ ID をフィルターします。
GetMezzanineInfo オペレーションを呼び出して、移行するすべてのビデオのソースファイルアドレスを取得します。
説明この例では、GetMezzanineInfo オペレーションを使用してソースファイルアドレスを取得します。ApsaraVideo VOD コンソールから取得することもできます。詳細については、「メディアアセットのエクスポート」をご参照ください。
トランスコード済みストリームをソースファイルとして使用する場合は、ApsaraVideo VOD を使用して生成できます。詳細については、「メディアアセット管理」をご参照ください。
OSS リソース
移行するオブジェクトをリストし、そのソースファイルアドレスを取得します。詳細については、「オブジェクトのリスト」をご参照ください。
サードパーティリソース (個人ウェブサイトまたはクラウドに保存されているビデオなどのデータ)
移行するすべてのファイルのダウンロード URL を準備して保存します。
アップロードサービスを設定します。
サンプルコードについては、「アップロードサービスを設定する」をご参照ください。ApsaraVideo VOD アップロード SDK を使用することを推奨します。
説明ソースファイル URL とアップロードされたビデオ ID の間のマッピングを追跡するには、アップロードプログラムにそれらを記録できます。たとえば、それらをログに記録したり、アップロード中にメディアアセットメタデータに書き込んだりできます。ご利用のユースケースに合ったメソッドを選択してください。UploadMediaByURL オペレーションを使用する場合、応答にはソースファイル URL が含まれます。この情報を必要に応じて使用できます。
ステップ 2 のアップロードコードを実行して、ビデオを ApsaraVideo VOD にアップロードします。
アップロードリクエストでは、ソースファイルアドレスを直接使用します。
(オプション) ApsaraVideo VOD リソースを整理します。
移行が成功した後、ソースファイル URL とアップロードされたビデオ ID の間のマッピングを使用してリソースを整理できます。
OSS バケットを ApsaraVideo VOD に追加してリソースを登録する
シナリオ
リソースが同じ Alibaba Cloud アカウント下の OSS バケットに保存されている場合、そのバケットを ApsaraVideo VOD に追加してリソースを登録できます。このメソッドを使用すると、リソースを再アップロードする必要がありません。
使用制限
標準ストレージクラスの OSS バケットのみがサポートされています。
リージョンあたり最大 10 個の OSS バケットを追加できます。
操作手順
移行するリソースを含む OSS バケットを ApsaraVideo VOD に追加します。
ステップバイステップの手順とパラメーターの説明については、「ストレージバケットの管理」をご参照ください。
API オペレーションを呼び出して、OSS リソースを ApsaraVideo VOD に登録します。
OSS API または SDK を使用して、バケット内のすべてのオブジェクトをリストします。詳細については、「オブジェクトのリスト」をご参照ください。
RegisterMedia オペレーションを呼び出してメディアファイルを登録し、メディア ID を生成します。
RegisterMetadatasパラメーターのFileURLを、OSS ドメイン名を含むオブジェクトの完全なパスに設定します。例:https://oss-cn-hangzhou.aliyuncs.com/video/example.mp4
アップロードサービスを設定する
サードパーティリソースまたは Alibaba Cloud アカウント間のリソースを移行するには、元のビデオをダウンロードして ApsaraVideo VOD にアップロードする必要があります。ApsaraVideo VOD は、アップロード SDK とサーバー側 API の 2 つのアップロードツールを提供します。どちらのツールを使用してもアップロードサービスを実装できます。アップロード SDK は同期アップロードを実行し、より効率的であるため、アップロード SDK を使用することを推奨します。サーバー側 API の使用は複雑でエラーが発生しやすいため推奨されません。
アップロードサービスを設定する手順
アップロード SDK またはサーバー側 SDK を統合します。
プログラミング言語に基づいて SDK を選択します。アップロード SDK の統合方法の詳細については、「アップロード SDK の概要」をご参照ください。サーバー側 SDK の統合方法の詳細については、「サーバー側 SDK」をご参照ください。
アップロードサービスコードを記述します。以下の例をご参照ください。
アップロード SDK コードサンプル (推奨)
次の例では Java を使用します。他のプログラミング言語の例については、「アップロード SDK の概要」をご参照ください。
import com.aliyun.vod.upload.impl.UploadVideoImpl;
import com.aliyun.vod.upload.req.UploadStreamRequest;
import com.aliyun.vod.upload.resp.UploadStreamResponse;
import java.io.*;
import java.net.URL;
/**
* アップロード SDK を使用してビデオファイルをアップロードします。
*/
public class UploadStreamDemo {
/**
* ストリームアップロードオペレーション。
*
* @param accessKeyId
* @param accessKeySecret
* @param title
* @param fileName
* @param inputStream
*/
private static void testUploadStream(String accessKeyId, String accessKeySecret, String title, String fileName, InputStream inputStream) {
UploadStreamRequest request = new UploadStreamRequest(accessKeyId, accessKeySecret, title, fileName, inputStream);
/* イベント通知のカスタムコールバック設定を指定します。パラメータの詳細については、基本データ型をご参照ください。 */
//request.setUserData(""{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackURL\":\"http://example.aliyundoc.com\"}}"");
/* オプション。ビデオのカテゴリ ID を指定します。 */
//request.setCateId(0);
/* オプション。ビデオのタグを指定します。複数のタグはコンマ (,) で区切ります。 */
//request.setTags("Tag 1,Tag 2");
/* オプション。ビデオの説明を指定します。 */
//request.setDescription("Video description");
/* オプション。サムネイルの URL を指定します。例: http://****.example.com/image_01.jpg。 */
//request.setCoverURL("<Your CoverURL>");
/* オプション。テンプレートグループの ID を指定します。 */
//request.setTemplateGroupId("8c4792cbc8694e****fd5330e56a33d");
/* オプション。ワークフローの ID を指定します。 */
//request.setWorkflowId("d4430d07361f****1339577859b0177b");
/* オプション。ストレージリージョンを指定します。 */
//request.setStorageLocation("outin-20170323****266-5sejdln9o.oss-cn-shanghai.aliyuncs.com");
/* VOD のアクセスリージョンを指定します。 */
request.setApiRegionId("cn-shanghai");
/* ECS インスタンスがデプロイされているリージョンを指定します。 */
// request.setEcsRegionId("cn-shanghai");
UploadVideoImpl uploader = new UploadVideoImpl();
UploadStreamResponse response = uploader.uploadStream(request);
System.out.print("RequestId=" + response.getRequestId() + "\n"); // VOD に送信されるリクエストの ID を指定します。
if (response.isSuccess()) {
System.out.print("VideoId=" + response.getVideoId() + "\n");
} else { // 指定したコールバック URL が無効な場合でも、アップロードプロセスには影響しません。ビデオ ID とエラーコードが返されます。ビデオ ID が空の場合、アップロードは失敗します。返されたエラーコードに基づいて原因を分析してください。
System.out.print("VideoId=" + response.getVideoId() + "\n");
System.out.print("ErrorCode=" + response.getCode() + "\n");
System.out.print("ErrorMessage=" + response.getMessage() + "\n");
}
}
public static void main(String[] args) {
/**
* ソースビデオの URL を指定し、ビデオに関する情報を渡して、ビデオをアップロードします。
*/
InputStream inputStream = null;
// ビデオの URL。例: http://example.aliyundoc.com/video/****.mp4。
String url = "<Your File URL>";
try {
inputStream = new URL(url).openStream();
} catch (IOException e) {
e.printStackTrace();
}
// Alibaba Cloud アカウントの AccessKey ペアは、すべての API オペレーションを呼び出す権限を持っています。API オペレーションを呼び出す、またはルーチン O&M を実行するには、RAM ユーザーの AccessKey ペアを使用することを推奨します。
// AccessKey ペア (AccessKey ID と AccessKey Secret) をプロジェクトコードに含めないことを推奨します。そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
// この例では、ApsaraVideo VOD は環境変数から AccessKey ペアを読み取り、API アクセスの本人確認を実装します。サンプルコードを実行する前に、環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET を設定してください。
String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
// 以下のコードでは、AccessKey ID と AccessKey Secret は取得した AccessKey ペアです。<Your Video Title> はビデオのタイトルです。<Your Video with File Extension> は、video-1.mp4 のようなファイル名拡張子を含むビデオファイルの名前です。
testUploadStream(accessKeyId, accessKeySecret, "<Your Video Title>", "<Your Video with File Extension>", inputStream);
}
}サーバー側 API コードサンプル (非推奨)
サーバー側 API を使用してアップロードサービスを設定するには、アップロードロジック全体を自分で実装する必要があります。これには、ApsaraVideo VOD からアップロード URL と認証情報を取得し、認証情報と URL を Base64 デコードし、OSS SDK を使用してメディアファイルをアップロードすることが含まれます。このメソッドは複雑でエラーが発生しやすいため推奨されません。代わりにアップロード SDK を使用することを推奨します。完全なアップロードロジックについては、「ApsaraVideo VOD API を呼び出してメディアファイルをアップロードする」をご参照ください。