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

ApsaraVideo VOD:URL からの一括アップロード

最終更新日:Sep 16, 2026

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

注意事項

  • URL からの一括アップロードは非同期タスクです。タスクを送信した後、完了までに数時間、場合によっては数日かかることがあります。適時性が重要な場合は、アップロード SDK または OSS SDK を使用してください。

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

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

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

コンソールを使用したアップロード

コンソールでは、中国 (上海)、中国 (北京)、中国 (深圳)、シンガポール、米国 (シリコンバレー) の各リージョンで [URLから] アップロード方法を使用して、音声ファイルと動画ファイルをアップロードできます。このアップロード方法は、他のリージョンではサポートされていません。

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

  2. ナビゲーションウィンドウで、[メディアファイル] > [オーディオ/ビデオ] を選択します。

  3. アップロード をクリックします。

  4. メディアの追加をクリックします。

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

    [URLから] アップロード方法を選択した場合、URL に拡張子が含まれていない場合は、成功率を向上させるために拡張子を指定してください。ネットワークの問題やリソースのサービスリージョンが原因で、プルタスクが失敗することがあります。タスクが失敗した場合は、ネットワーク設定またはリソースのサービスリージョンを調整してから、再試行してください。

    表に [URL]、[拡張子]、[オーディオ/ビデオ名] を入力します。デフォルトでは、[カテゴリ] は [未分類] に設定され、[トランスコードテンプレートグループ] は [トランスコードなし] に設定されています。[+ 追加] をクリックして、ファイルを追加できます。

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

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

前提条件

  • ApsaraVideo VOD がアクティブ化されていること。詳細については、「ApsaraVideo VOD をアクティブ化する」をご参照ください。

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

  • RAM ユーザーが作成され、ApsaraVideo VOD へのアクセスに使用されていること。Alibaba Cloud アカウントの AccessKey ペアの漏洩によるセキュリティリスクを防ぐため、RAM ユーザーを作成し、ApsaraVideo VOD へのアクセスに必要な権限を RAM ユーザーに付与することをお勧めします。その後、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 シークレットをプロジェクトコードにハードコードしないことをお勧めします。 そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。

  • オプション。Security Token Service ( STS ) を使用して ApsaraVideo VOD にアクセスする場合、RAM ユーザーのロールが作成され、そのロールには ApsaraVideo VOD へのアクセスに必要な権限が付与されます。詳細については、「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 {
    /** 
     * ApsaraVideo VOD クライアントを初期化します。
     */
    public static DefaultAcsClient initVodClient() throws ClientException {
    // ApsaraVideo VOD が有効化されているリージョン。
    String regionId = "cn-shanghai"; 
    // Alibaba Cloud アカウントのアクセスキーペアは、すべての API 操作に対する権限を持っています。API の呼び出しや日常の O&M には、RAM ユーザーのアクセスキーペアを使用することを推奨します。
    // AccessKey ID と AccessKey シークレットをプロジェクトコードにハードコードしないことを強く推奨します。漏洩した場合、アカウント内のすべてのリソースのセキュリティが損なわれます。
    // この例では、環境変数から取得したアクセスキーペアを使用して API アクセスの認証を行う方法を示します。サンプルコードを実行する前に、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。この 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:カスタムパラメーター設定。別のコールバック URL とパススルーデータが必要な場合は、このパラメーターを設定します。このパラメーターは任意です。
        JSONObject userData = new JSONObject();
        // UserData のコールバック設定。
        // メッセージコールバック設定。指定した場合、これらの設定が使用されます。それ以外の場合は、グローバルイベント通知設定が使用されます。
        JSONObject messageCallback = new JSONObject();
        // コールバック URL。
        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:サンプルコード

説明

プロジェクトコードには、より安全な AK フリー方式を使用することを推奨します。認証情報の設定については、「アクセス認証情報の管理」をご参照ください。

package com.aliyun.sample;
import com.aliyun.tea.*;
public class UploadMediaByURL {
    /**
     * <b>description</b> :
     * <p>認証情報を使用してクライアントを初期化します。</p>
     * @return Client
     *
     * @throws Exception
     */
    public static com.aliyun.vod20170321.Client createClient() throws Exception {
        com.aliyun.credentials.Client credential = new com.aliyun.credentials.Client();
        com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
                .setCredential(credential);
        // エンドポイントの詳細については、https://api.alibabacloud.com/product/vod をご参照ください。
        config.endpoint = "vod.cn-shanghai.aliyuncs.com";
        return new com.aliyun.vod20170321.Client(config);
    }
    public static void main(String[] args_) throws Exception {
        com.aliyun.vod20170321.Client client = createClient();
        com.aliyun.vod20170321.models.UploadMediaByURLRequest uploadMediaByURLRequest = new com.aliyun.vod20170321.models.UploadMediaByURLRequest()
                .setUploadURLs("http://cloud.video.taobao.com/play/u/3897629815/p/1/e/6/t/1/301659704826.mp4");
        com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
        try {
            // コードをコピーして実行した後、API レスポンスを出力します。
            com.aliyun.vod20170321.models.UploadMediaByURLResponse response = client.uploadMediaByURLWithOptions(uploadMediaByURLRequest, runtime);
            com.aliyun.teaconsole.Client.log(com.aliyun.teautil.Common.toJSONString(response));
        } catch (TeaException error) {
            // これはデモンストレーションのみを目的としています。例外は慎重に処理してください。プロジェクト内で例外を無視しないでください。
            // エラーメッセージ
            System.out.println(error.getMessage());
            // 診断アドレス
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        } catch (Exception _error) {
            TeaException error = new TeaException(_error.getMessage(), _error);
            // これはデモンストレーションのみを目的としています。例外は慎重に処理してください。プロジェクト内で例外を無視しないでください。
            // エラーメッセージ
            System.out.println(error.getMessage());
            // 診断アドレス
            System.out.println(error.getData().get("Recommend"));
            com.aliyun.teautil.Common.assertAsString(error.message);
        }
    }
}