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

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

最終更新日:Jun 22, 2026

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

注意事項

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

  • 同じ URL に対してアップロードタスクを送信するたびに、ApsaraVideo VOD は新しいメディア 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 Example] セクションをご参照ください。

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 アカウントの AccessKey ペアには、すべての API に対する権限があります。API の呼び出しまたは日常的な運用保守には、RAM ユーザーの AccessKey ペアを使用することを推奨します。
    // AccessKey ID と AccessKey secret をプロジェクトコードにハードコードしないことを強く推奨します。ハードコードすると、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが危険にさらされる可能性があります。
    // この例では、環境変数から取得した 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.1/callback");
        // コールバックタイプ。デフォルト値: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.aliyun.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 = UploadMediaByURL.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);
        }
    }
}