ApsaraVideo VOD では、サードパーティ製プラットフォームから VOD にリソースを移行したり、異なる Alibaba Cloud アカウント間でビデオリソースを移行したりできます。このトピックでは、リソースを移行する方法について説明します。
移行シナリオと方法
ApsaraVideo VOD は複数の移行方法をサポートしています。パーソナル Web サイトやサードパーティのクラウドサービスに保存されているリソースを ApsaraVideo VOD に移行したり、Object Storage Service (OSS) に保存されているリソースを Alibaba Cloud アカウント内または異なる Alibaba Cloud アカウント間で ApsaraVideo VOD に移行したり、ApsaraVideo VOD のリソースを異なる Alibaba Cloud アカウント間で移行したりできます。
ビデオを ApsaraVideo VOD に移行すると、ビデオ ID、再生 URL、サムネイル URL などのビデオ情報が ApsaraVideo VOD で生成されます。移行前のビデオ情報と移行後のビデオ情報を関連付ける必要があります。
シナリオ | 方法 | ツール |
サードパーティ製リソースを ApsaraVideo VOD に移行する |
| |
Alibaba Cloud アカウント内で OSS リソースを ApsaraVideo VOD に移行する |
| |
Alibaba Cloud アカウント間で OSS リソースを ApsaraVideo VOD に移行する |
| |
Alibaba Cloud アカウント間で ApsaraVideo VOD のリソースを移行する |
|
始める前に
Alibaba Cloud アカウントが作成され、実名登録が完了していること。Alibaba Cloud 公式 Web サイトにアクセスして、Alibaba Cloud アカウントを作成します。詳細については、「Alibaba Cloud アカウントを作成する」をご参照ください。
ApsaraVideo VOD API 操作を呼び出すことができるように、ID 検証を完了するための AccessKey ペアを取得します。AccessKey ペアの取得方法については、「AccessKey ペアを取得する」をご参照ください。
説明RAM ユーザーとしてリソースを移行するには、AccessKey ペアを取得する前に RAM ユーザーを作成する必要があります。詳細については、「RAM ユーザーを作成し、権限を付与する」をご参照ください。
(推奨) URL に基づいてリソースを一括アップロードする
シナリオ
オンプレミスサーバーまたはデバイスに保存されていないリソースを移行する場合、これらのリソースがパブリックにアクセス可能な場合は、URL に基づいてリソースを一括移行することをお勧めします。この方法では、内部ネットワーク経由で大量のファイルをすばやくアップロードし、トラフィックの使用量を削減できます。
制限事項
リソースは、中国 (上海)、中国 (北京)、中国 (深セン)、 シンガポール、および米国 (シリコンバレー) リージョンでのみ、URL に基づいてバッチでアップロードできます。他のリージョンでは、他の方法を使用してリソースを移行できます。詳細については、「ApsaraVideo VOD のリージョン ID」をご参照ください。
使用上の注意
URL ベースのアップロードジョブは非同期です。URL ベースのアップロードジョブを送信した後、完了までに数時間、場合によっては数日かかることがあります。高い適時性を求める場合は、アップロード SDK を使用することをお勧めします。
URL を使用してアップロードジョブを送信するたびに、ApsaraVideo VOD で新しいメディア ID が生成されます。
移行プロセス
手順
ApsaraVideo VOD SDK を統合します。
この例では、Java 用 ApsaraVideo VOD SDK を使用しています。他のプログラミング言語で ApsaraVideo VOD SDK を使用する方法については、「使用上の注意」をご参照ください。
Java 用 SDK のダウンロードとインストール方法の詳細については、「SDK の概要とダウンロード」および「インストール」をご参照ください。
移行するリソースを準備します。
説明移行するすべてのファイルのダウンロード URL を準備する必要があります。URL 署名が有効になっている場合は、ダウンロード中に URL が有効であることを確認してください。
ダウンロード URL には、
https://****.mp4などのファイル名とファイル名拡張子を含める必要があります。
ApsaraVideo VOD SDK を使用して UploadMediaByURL 操作を呼び出し、リソースを一括アップロードします。
次の例では、Java 用 ApsaraVideo VOD SDK を使用しています。他のプログラミング言語で ApsaraVideo VOD SDK を使用して API 操作を呼び出す方法については、「ソースファイルの URL を使用して複数のメディアファイルを一度にアップロードする」をご参照ください。
OpenAPI Explorer を使用して、オンラインデバッグを実行できます。
次のいずれかの方法を使用して、アップロード結果を取得します。
方法 1: イベント通知を使用する
ApsaraVideo VOD は、HTTP コールバックと MNS コールバックをサポートしています。イベント通知を構成すると、ApsaraVideo VOD は、指定したコールバック方法に基づいてメディアファイルが処理されたときに通知を送信します。たとえば、ApsaraVideo VOD は、メディアファイルがアップロードまたはトランスコードされたときに通知します。詳細については、「概要」をご参照ください。
UploadByURLComplete コールバックから、ジョブステータスなどの URL ベースのバッチアップロードジョブに関する情報を取得できます。詳細については、「UploadByURLComplete (ビデオアップロード用)」をご参照ください。コールバックから、アップロードステータスなどの情報を取得できます。
アップロード成功のコールバック例
{ "Status": "success", "EventTime": "2017-03-20T07:49:17Z", "EventType": "UploadByURLComplete", "VideoId": "43q9fjdun3f****", "JobId": "4c815bjs83j1****", "SourceURL ": "http://example-bucket-****.oss-cn-shanghai.aliyuncs.com/27ffc438-164d55217ef-0005-6884-51a-1****.mp4", "Size":"123456" }アップロード失敗のコールバック例
{ "Status": "fail", "EventTime": "2017-03-20T07:49:17Z", "EventType": "UploadByURLComplete", "ErrorCode ": "URLInvalidError ", "ErrorMessage ": "URL によるビデオのダウンロードに失敗しました。確認してください", "JobId": "4c815bjsued1****" , "SourceURL ": "http://example-bucket-****.oss-cn-shanghai.aliyuncs.com/27ffc438-164d55217ef-0005-6884-51a-1****.mp4" }
方法 2: API 操作を呼び出す
GetURLUploadInfos 操作を呼び出して、ジョブステータスなどの URL ベースのバッチアップロードジョブに関する情報をクエリできます。詳細については、「GetURLUploadInfos」をご参照ください。
自作のアップロードサービスを使用してリソースをアップロードする
サービスリージョンで URL ベースのバッチアップロードがサポートされていない場合、またはアップロードの適時性が高い必要がある場合は、リソースをローカルデバイスにダウンロードし、アップロード SDK を使用して ApsaraVideo VOD にアップロードします。Elastic Compute Service (ECS) インスタンスにアップロードサービスを設定する場合、ECS インスタンスが存在するリージョンに基づいて、内部ネットワークまたはインターネット経由でリソースをアップロードできます。
内部ネットワーク経由でリソースをダウンロードおよびアップロードする
シナリオ
アップロードサービスがデプロイされている ECS インスタンスとソースファイルが同じリージョンに存在する場合は、同じ Alibaba Cloud アカウント内または異なる Alibaba Cloud アカウント間で、内部ネットワーク経由で OSS リソースを ApsaraVideo VOD に移行できます。また、異なる Alibaba Cloud アカウント間で、内部ネットワーク経由で ApsaraVideo VOD のリソースを移行することもできます。
移行プロセス
前提条件
アップロードサービスがデプロイされている ECS インスタンスとソースファイルが同じリージョンに存在すること。
手順
OSS または ApsaraVideo VOD で移行するリソースの内部ネットワークアドレスを準備して保存します。
説明URL 署名が有効になっている場合は、ダウンロード中に URL が有効であることを確認してください。
ApsaraVideo VOD リソースを移行する
ApsaraVideo VOD SDK を使用して GetMezzanineInfo 操作を呼び出し、オブジェクトの OSS アドレスを取得します。リクエストで
OutputTypeをossに設定します。詳細については、「GetMezzanineInfo」をご参照ください。OSS リージョンの後に
-internalを追加して、OSS アドレスを内部ネットワークアドレスに変更します。
OSS リソースを移行する
移行するオブジェクトをリストし、ソースファイルアドレスを取得します。詳細については、「オブジェクトをリストする」をご参照ください。
OSS リージョンの後に
-internalを追加して、OSS アドレスを内部ネットワークアドレスに変更します。
次の表に、OSS アドレスと内部ネットワークアドレスの例を示します。
OSS アドレス
内部ネットワークアドレス
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 リソースにアクセスする」をご参照ください。
アップロードサービスを設定します。
説明OSS バケットと同じリージョンにある ECS インスタンスにアップロードサービスをデプロイします。中国本土に ECS インスタンスを作成する場合、インスタンスはデフォルトで中国 (上海) リージョンに作成されます。OSS バケットと同じリージョンに存在する ECS インスタンスにアップロードサービスをデプロイした後、
regionIdパラメーターを前のリージョンの ID に設定します。アップロード SDK を使用してリソースをアップロードする場合、リソースは内部ネットワーク経由でアップロードされます。サンプルコードについては、「アップロードサービスを設定する」をご参照ください。アップロード SDK を使用してリソースを移行することをお勧めします。
手順 2 のコードを実行して、ビデオを ApsaraVideo VOD にアップロードします。
内部ネットワークアドレスを使用して、リソースを ApsaraVideo VOD にアップロードします。
インターネット経由でリソースをダウンロードおよびアップロードする
シナリオ
アップロードサービスを ECS インスタンスにデプロイしない場合、または ECS インスタンスとソースファイルが異なるリージョンに存在する場合は、インターネット経由でリソースをダウンロードおよびアップロードできます。
移行プロセス
手順
移行するリソースのソースファイルアドレスを準備して保存します。
説明URL 署名が有効になっている場合は、ダウンロード中に URL が有効であることを確認してください。
ソースファイルアドレスには、
https://****.mp4などのファイル名とファイル名拡張子を含める必要があります。
ApsaraVideo VOD リソースを移行する
SearchMedia 操作を呼び出して、移行するビデオの ID をクエリします。詳細については、「SearchMedia」をご参照ください。
GetMezzanineInfo 操作を呼び出して、移行するすべてのビデオのソースファイルアドレスを取得します。詳細については、「GetMezzanineInfo」をご参照ください。
説明この例では、GetMezzanineInfo 操作を呼び出して、ソースファイルのアドレスを取得します。ApsaraVideo VOD コンソールでソースファイルアドレスを取得することもできます。詳細については、「メディアアセットをエクスポートする」をご参照ください。
トランスコードされたストリームをソースファイルとして使用する場合、ApsaraVideo VOD を使用してトランスコードされたストリームを生成できます。詳細については、「メディアアセット管理」をご参照ください。
OSS リソースを移行する
移行するオブジェクトをリストし、ソースファイルアドレスを取得します。詳細については、「オブジェクトをリストする」をご参照ください。
サードパーティ製リソース (パーソナル Web サイトやサードパーティのクラウドサービスに保存されているリソースなど) を移行する
移行するすべてのファイルのダウンロード URL を準備して保存します。
アップロードサービスを設定します。
サンプルコードについては、「アップロードサービスを設定する」をご参照ください。アップロード SDK を使用してリソースを移行することをお勧めします。
説明移行後にビデオを管理する場合は、ソースビデオファイルの URL とビデオファイルのアップロード後に生成されるビデオ ID との間のマッピングを記録するようにアップロードサービスを構成します。ビジネス要件に基づいて、マッピングを記録する方法を選択できます。たとえば、ログにマッピングを記録したり、アップロード中にソースビデオファイルの URL をメディアファイル情報に書き込んだりできます。UploadMediaByURL 操作を呼び出してリソースをアップロードする場合、この操作のレスポンスには、アップロードされたソースファイルの URL が含まれています。ビジネス要件に基づいて情報を使用できます。
手順 2 のコードを実行して、ビデオを ApsaraVideo VOD にアップロードします。
リソースをアップロードするソースファイルアドレスを指定します。
(オプション) アップロードしたビデオリソースを並べ替えます。
ビデオリソースを移行した後、ソースファイルの URL とビデオリソースが VOD にアップロードされた後に生成されるビデオ ID との間のマッピングに基づいて、ビデオリソースを並べ替えることができます。
OSS バケットを ApsaraVideo VOD に追加し、リソースを登録する
シナリオ
Alibaba Cloud アカウント内で OSS リソースを ApsaraVideo VOD に移行するには、OSS バケットを ApsaraVideo VOD に追加し、リソースを登録します。この方法では、リソースをアップロードする必要はありません。
制限事項
ストレージタイプが標準である OSS バケットのみを ApsaraVideo VOD に追加できます。
各リージョンで最大 10 個の OSS バケットを ApsaraVideo VOD に追加できます。
手順
移行するリソースが存在する OSS バケットを ApsaraVideo VOD に追加します。
手順とパラメーターの説明については、「ストレージバケットを管理する」をご参照ください。
操作を呼び出して、OSS リソースを ApsaraVideo VOD に登録します。
OSS SDK を使用するか、API 操作を呼び出して、OSS バケットに保存されているオブジェクトをリストします。詳細については、「オブジェクトをリストする」をご参照ください。
RegisterMedia 操作を呼び出して、メディアリソースを登録し、メディア ID を生成します。詳細については、「RegisterMedia」をご参照ください。
RegisterMetadatasのFileURLを、OSS オブジェクトをリストすることによって取得したオブジェクトの完全なパスに設定します。ファイルパスに OSS ドメイン名を追加する必要があります。URL の例:https://oss-cn-hangzhou.aliyuncs.com/video/example.mp4
アップロードサービスを設定する
サードパーティ製リソースを移行する場合、または Alibaba Cloud アカウント間でリソースを移行する場合は、元のビデオリソースをダウンロードしてから、アップロードツールを使用して ApsaraVideo VOD にリソースをアップロードする必要があります。ApsaraVideo VOD では、アップロード SDK または ApsaraVideo VOD SDK を使用してリソースをアップロードできます。アップロードサービスは、アップロード SDK または ApsaraVideo VOD API を使用して実装できます。アップロード SDK を使用してアップロードサービスを設定することをお勧めします。この方法では、リソースは同期的に効率的にアップロードされます。ApsaraVideo VOD API を使用してアップロードサービスを設定するプロセスは複雑です。
手順
アップロード SDK または ApsaraVideo VOD SDK を統合します。
使用するプログラミング言語に基づいて、アップロード SDK または ApsaraVideo VOD SDK を統合できます。アップロード SDK を統合する方法については、「概要」をご参照ください。ApsaraVideo VOD 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("タグ 1,タグ 2");
/* オプション。ビデオの説明を指定します。 */
//request.setDescription("ビデオの説明");
/* オプション。サムネイルの URL を指定します。例: http://****.example.com/image_01.jpg。 */
//request.setCoverURL("<カバー URL>");
/* オプション。テンプレートグループの 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 = "<ファイル URL>";
try {
inputStream = new URL(url).openStream();
} catch (IOException e) {
e.printStackTrace();
}
// Alibaba Cloud アカウントの AccessKey ペアには、すべての API 操作を呼び出す権限があります。RAM ユーザーの AccessKey ペアを使用して API 操作を呼び出したり、日常的な O&M を実行することをお勧めします。
// プロジェクトコードに AccessKey ペア (AccessKey ID と AccessKey シークレット) を含めないことをお勧めします。そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
// この例では、ApsaraVideo VOD は環境変数から AccessKey ペアを読み取り、API アクセスのための ID 検証を実装します。サンプルコードを実行する前に、環境変数 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 シークレットは取得した AccessKey ペアです。<ビデオタイトル> はビデオのタイトルです。<ファイル拡張子付きのビデオ> は、video-1.mp4 などのファイル名拡張子を含むビデオファイルの名前です。
testUploadStream(accessKeyId, accessKeySecret, "<ビデオタイトル>", "<ファイル拡張子付きのビデオ>", inputStream);
}
}ApsaraVideo VOD API を使用してアップロードサービスを設定する
ApsaraVideo VOD SDK を使用して API 操作を呼び出すことによってアップロードサービスを設定するには、アップロードプロセス全体のロジックを実装する必要があります。ApsaraVideo VOD からアップロード URL と認証情報を取得し、Base64 でエンコードされたアップロード URL と認証情報をデコードしてから、OSS SDK を使用してメディアファイルをアップロードする必要があります。この場合、操作は複雑でエラーが発生しやすくなります。アップロード SDK を使用してアップロードサービスを設定することをお勧めします。完全なアップロードロジックについては、「ApsaraVideo VOD API を呼び出してメディアファイルをアップロードする」をご参照ください。