すべてのプロダクト
Search
ドキュメントセンター

ApsaraVideo VOD:URL からのプルによるバッチアップロード

最終更新日:Nov 09, 2025

ファイルがローカルに保存されているのではなく、パブリック URL を介してアクセスできる場合は、ApsaraVideo VOD API を使用して URL からプルすることでアップロードできます。この方法では、ファイルをローカルマシンにダウンロードしてから ApsaraVideo VOD にアップロードする必要がありません。オフラインのサイト移行シナリオに最適です。

機能

  • URL からのプルによるバッチアップロードは非同期タスクです。これはリアルタイムの操作ではなく、操作の適時性は保証されません。タスクを送信した後、移行とアップロードのプロセスが完了するまでに数時間、あるいは数日かかる場合があります。適時性が最優先事項である場合は、アップロード SDK を使用してファイルをアップロードするか、OSS SDK を使用してファイルをアップロードしてください。

  • 同じメディアファイルの URL のアップロードタスクを送信するたびに、新しいメディア ID を持つ新しいメディアアセットが ApsaraVideo VOD に作成されます。

  • URL からのプルによるバッチアップロードは、ビデオおよびオーディオフォーマットのみをサポートします。詳細については、「サポートされているメディアフォーマット」をご参照ください。

  • 単一ファイルが 20 GB を超える場合、アップロードは失敗します。別のアップロード方法を使用してください。

コンソールからのアップロード

コンソールでは、[中国 (上海)] リージョンのみが [URL からプル] によるオーディオおよびビデオファイルのアップロードをサポートしています。このアップロード方法は、他のリージョンではサポートされていません。

  1. ApsaraVideo VOD コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[メディアアセット] の下にある [オーディオ/ビデオ] をクリックします。

  3. [オーディオ/ビデオのアップロード] をクリックします。上传音视频

  4. [オーディオ/ビデオの追加] をクリックします。添加音视频

  5. アップロードするファイルを追加し、トランスコーディングを設定して、[アップロード開始] をクリックします。

    URL プル方式を選択した場合、URL にファイル名拡張子が含まれていない場合は、ファイル名拡張子を入力してください。これにより、プルタスクの成功率が向上します。ネットワークの問題やリソースが配置されているリージョンが原因で、プルタスクが失敗することがあります。タスクが失敗した場合は、ネットワークまたはリソースのサービスリージョンを調整してから再試行してください。

    URL拉取

API を使用したアップロード

ApsaraVideo VOD サーバーサイド SDK を統合し、UploadMediaByURL 操作を呼び出します。この操作は、中国 (上海)中国 (北京)中国 (深圳)シンガポール、および 米国 (シリコンバレー) リージョンでのみサポートされています。

前提条件

  • ApsaraVideo VOD が有効化されています。詳細については、「ApsaraVideo VOD を有効にする」をご参照ください。

  • 指定されたリージョンでのストレージパスやコールバック設定など、アップロードに必要なシステム設定が構成されています。詳細については、「ストレージバケットの管理」および「コールバックの設定」をご参照ください。

  • RAM ユーザーが作成され、ApsaraVideo VOD へのアクセスに使用されます。Alibaba Cloud アカウントの AccessKey ペアの漏洩によるセキュリティリスクを防ぐため、RAM ユーザーを作成し、その RAM ユーザーに ApsaraVideo VOD へのアクセスに必要な権限を付与することをお勧めします。その後、RAM ユーザーの AccessKey ペア を使用して ApsaraVideo VOD にアクセスできます。詳細については、「RAM ユーザーの作成と権限付与」をご参照ください。

  • ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数を設定します。詳細については、「Linux、macOS、および Windows で環境変数を設定する」をご参照ください。

    重要
    • Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。API 操作の呼び出しや日常の O&M には、RAM ユーザーの AccessKey ペアを使用することをお勧めします。

    • プロジェクトコードに AccessKey ID と AccessKey Secret をハードコーディングしないことをお勧めします。そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが損なわれる可能性があります。

  • オプション。Security Token Service (STS) を使用して ApsaraVideo VOD にアクセスする場合、RAM ユーザー用のロールが作成され、そのロールに ApsaraVideo VOD へのアクセスに必要な権限が付与されます。詳細については、「STS トークンの取得」をご参照ください。

    説明

    STS を使用できるシナリオの詳細については、「認証情報と STS の比較」をご参照ください。

サンプルコード

他の言語のサンプルコードについては、「UploadMediaByURL」の [SDK の例] セクションをご参照ください。

V1.0 SDK

ステップ 1. 依存関係のインストール

<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-core</artifactId>
  <version>4.6.1</version>
</dependency>
<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-vod</artifactId>
  <version>2.16.32</version>
</dependency>

ステップ 2. サンプルコード

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.auth.AlibabaCloudCredentials;
import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.vod.model.v20170321.UploadMediaByURLRequest;
import com.aliyuncs.vod.model.v20170321.UploadMediaByURLResponse;

import java.net.URLEncoder;

/**
 * URL からのプルによるバッチアップロード機能のサンプルコードです。
 *
 */
public class AudioOrVideoUploadByUrl {

    /** 
     * AccessKey 情報を読み取ります。
     */
    public static DefaultAcsClient initVodClient() throws ClientException {
    // ApsaraVideo VOD が有効化されているリージョン。
    String regionId = "cn-shanghai"; 
    // Alibaba Cloud アカウントの AccessKey は、すべての API 操作にアクセスする権限を持っています。API 呼び出しや日常の O&M には、RAM ユーザーの AccessKey を使用することをお勧めします。
    // プロジェクトコードに AccessKey ID と AccessKey Secret をハードコーディングしないことを強くお勧めします。そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが損なわれる可能性があります。
    // この例では、環境変数から取得した AccessKey を使用して API アクセスの ID を検証する方法を示します。サンプルコードを実行する前に、ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数を設定してください。
    DefaultProfile profile = DefaultProfile.getProfile(regionId, System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
    DefaultAcsClient client = new DefaultAcsClient(profile);
    return client;
    }

    /**
     * URL からのプルによるバッチアップロード。
     *
     * @param client リクエストを送信するクライアント。
     * @return UploadMediaByURLResponse バッチアップロードリクエストへの応答。
     * @throws Exception
     */
    public static UploadMediaByURLResponse uploadMediaByURL(DefaultAcsClient client) throws Exception {
        UploadMediaByURLRequest request = new UploadMediaByURLRequest();
        String url = "http://video_01.mp4";
        String encodeUrl = URLEncoder.encode(url, "UTF-8");
        // ソースビデオファイルの URL。
        request.setUploadURLs(encodeUrl);

        // アップロードするビデオのメタデータ。
        JSONObject uploadMetadata = new JSONObject();
        // アップロードするソースビデオファイルの URL。これは UploadURLs の URL と一致する必要があります。
        uploadMetadata.put("SourceUrl", encodeUrl);
        // ビデオのタイトル。
        uploadMetadata.put("Title", "upload by url sample");

        JSONArray uploadMetadataList = new JSONArray();
        uploadMetadataList.add(uploadMetadata);
        request.setUploadMetadatas(uploadMetadataList.toJSONString());

        // UserData: カスタムパラメーター設定。別の Webhook アドレスとパススルーデータが必要な場合は、このパラメーターを設定します。このパラメーターはオプションです。
        JSONObject userData = new JSONObject();

        // UserData のコールバック設定。
        // メッセージコールバック設定。指定されている場合は、これらの設定が使用されます。それ以外の場合は、グローバルイベント通知設定が使用されます。
        JSONObject messageCallback = new JSONObject();
        // Webhook アドレス。
        messageCallback.put("CallbackURL", "http://192.168.0.0/16");
        // コールバックタイプ。デフォルト値: http。
        messageCallback.put("CallbackType", "http");
        userData.put("MessageCallback", messageCallback.toJSONString());

        JSONObject extend = new JSONObject();
        extend.put("MyId", "user-defined-id");
        userData.put("Extend", extend.toJSONString());

        request.setUserData(userData.toJSONString());

        return client.getAcsResponse(request);
    }

    /** 
     * サンプルリクエスト。
     */
    public static void main(String[] argv) {

        try {
            DefaultAcsClient client = initVodClient();
            UploadMediaByURLResponse response = uploadMediaByURL(client);
            System.out.print("UploadJobs = " + JSON.toJSONString(response.getUploadJobs()) + "\n");
            System.out.print("RequestId = " + response.getRequestId() + "\n");
        } catch (Exception e) {
            System.out.print("ErrorMessage = " + e.getLocalizedMessage());
        }
    }

}

V2.0 SDK

ステップ 1. 依存関係のインストール

    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>vod20170321</artifactId>
      <version>3.6.4</version>
    </dependency>

ステップ 2. サンプルコード

説明

プロジェクトコードには、AccessKey を必要としない、より安全な方法を使用することをお勧めします。認証情報の設定方法については、「アクセス認証情報の管理」をご参照ください。

package com.aliyun.sample;
import com.aliyun.tea.*;

public class UploadMediaByURL {

    /**
     * 説明