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

ApsaraVideo VOD:OSS SDK を使用したファイルのアップロード

最終更新日:Nov 05, 2025

アップロード SDK は OSS SDK 上に構築されており、アップロードプロセスを簡素化します。アップロード SDK がニーズを満たさない場合、またはより柔軟な制御が必要な場合は、OSS SDK を使用してファイルを直接アップロードできます。

OSS SDK

OSS SDK は、Java、Python、Go、PHP、Node.js、Ruby などのプログラミング言語、および iOS、Android、Harmony などのクライアントをサポートしています。詳細については、「SDK を使用したリクエストの概要」をご参照ください。

ワークフロー

サーバーサイドアップロードシナリオ

アプリケーションサーバーで Java、Python、PHP などの言語の OSS SDK を使用してローカルファイルを OSS バケットにアップロードすると、AccessKey のセキュリティを確保できます。このシナリオでは、アプリケーションサーバーから ApsaraVideo VOD OpenAPI を直接呼び出して、アップロード URL と資格情報を取得できます。その後、OSS SDK を使用してファイルをアップロードできます。

クライアントサイドアップロードシナリオ

Web ページやモバイルアプリなどのクライアントで OSS SDK を使用してローカルファイルを OSS バケットにアップロードする場合、まずアプリケーションサーバーに権限付与サービスをセットアップする必要があります。クライアントはこのサービスを呼び出してアップロード URL と資格情報を取得し、ファイルを直接 OSS にアップロードします。

:

  • アプリケーションサーバー上の ApsaraVideo VOD サービスからアップロード URL と資格情報を取得する手順とサンプルコードについては、「アップロード URL と資格情報の取得」をご参照ください。

  • 応答には、Base64 でエンコードされたアップロード URL (UploadAddress)、アップロード資格情報 (UploadAuth)、メディア ID、およびその他の情報が含まれます。これらのパラメーターを手動で解析し、OSS SDK を初期化するための入力パラメーターとして使用する必要があります。

    説明
    • UploadAddress フィールドには、宛先の OSS バケットに関する情報が含まれています。UploadAuth フィールドには、セキュリティトークンサービス (STS) トークンなどの権限付与情報が含まれています。アップロード URL と資格情報を手動で Base64 デコードします。次に、デコードされたフィールドを使用して OSS SDK クライアントを初期化します。詳細については、「リファレンス: アップロード URL と資格情報の解析」をご参照ください。

    • ApsaraVideo VOD サービスがアップロード URL と資格情報を提供すると、メディアアセットも自動的に作成され、メディア ID (MediaId) が返されます。このメディア ID は安全に保管する必要があります。メディア ID は、メディアアセット管理、オーディオおよびビデオ再生、ApsaraVideo Media Processing の入力パラメーターとして使用されます。

      • ビデオのアップロード URL と資格情報を取得すると、VideoId が返されます。

      • イメージのアップロード URL と資格情報を取得すると、ImageId が返されます。

      • 補助メディアアセットのアップロード URL と資格情報を取得すると、MediaId が返されます。

サンプルデモのダウンロード

ApsaraVideo VOD は、開発者向けにデモソースコードを提供しています。

プログラムの統合

次のセクションでは、Java を例に統合手順を説明します。

前提条件

  • 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 シークレットをプロジェクトコードにハードコーディングしないことをお勧めします。ハードコーディングすると、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。

  • 任意。セキュリティトークンサービス (STS) を使用して ApsaraVideo VOD にアクセスする場合は、RAM ユーザー用のロールを作成し、そのロールに ApsaraVideo VOD へのアクセスに必要な権限を付与します。詳細については、「STS トークンの取得」をご参照ください。

    説明

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

要件

重要
  • Java 1.8 以降が必要です。

  • ターミナルで java -version コマンドを実行して、Java のバージョンを確認できます。

サンプルコード

SDK V1.0

ステップ 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>
<dependency>
    <groupId>com.aliyun.oss</groupId>
    <artifactId>aliyun-sdk-oss</artifactId>
    <version>3.17.4</version>
</dependency>

ステップ 2. ファイルのアップロード (Java サンプルコード)

import com.alibaba.fastjson.JSONObject;
import com.aliyun.oss.OSSClient;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.vod.model.v20170321.CreateUploadVideoRequest;
import com.aliyuncs.vod.model.v20170321.CreateUploadVideoResponse;
import org.apache.commons.codec.binary.Base64;

import java.io.File;

/**
 * 説明
 */
public class UploadDemo {

    public static DefaultAcsClient initVodClient(String accessKeyId, String accessKeySecret) throws ClientException {
        // ApsaraVideo VOD サービスが有効化されているリージョンを指定します。たとえば、サービスが中国 (上海) リージョンで有効化されている場合、値を cn-shanghai に設定します。他のリージョンについては、「メディアアップロードの概要」をご参照ください。
        String regionId = "cn-shanghai";
        DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
        DefaultAcsClient client = new DefaultAcsClient(profile);
        return client;
    }

    public static CreateUploadVideoResponse createUploadVideo(DefaultAcsClient vodClient) throws ClientException {
        CreateUploadVideoRequest request = new CreateUploadVideoRequest();
        request.setFileName("vod_test.mp4");
        request.setTitle("this is title");
        //request.setDescription("これは説明です");
        //request.setTags("タグ1,タグ2");
        // CoverURL の例: http://example.aliyundoc.com/test_cover_****.jpg
        //request.setCoverURL("<ご自身の CoverURL>");
        //request.setCateId(-1L);
        //request.setTemplateGroupId("");
        //request.setWorkflowId("");
        //request.setStorageLocation("");
        //request.setAppId("app-1000000");
        // リクエストのタイムアウト期間を設定します。
        request.setSysReadTimeout(1000);
        request.setSysConnectTimeout(1000);
        return vodClient.getAcsResponse(request);
    }

    public static OSSClient initOssClient(JSONObject uploadAuth, JSONObject uploadAddress) {
        String endpoint = uploadAddress.getString("Endpoint");
        String accessKeyId = uploadAuth.getString("AccessKeyId");
        String accessKeySecret = uploadAuth.getString("AccessKeySecret");
        String securityToken = uploadAuth.getString("SecurityToken");
        return new OSSClient(endpoint, accessKeyId, accessKeySecret, securityToken);
    }

    public static void uploadLocalFile(OSSClient ossClient, JSONObject uploadAddress, String localFile) {
        String bucketName = uploadAddress.getString("Bucket");
        String objectName = uploadAddress.getString("FileName");
        File file = new File(localFile);
        ossClient.putObject(bucketName, objectName, file);
    }

    public static void main(String[] argv) {
        // Alibaba Cloud アカウントの AccessKey は、すべての API に対する権限を持っています。API アクセスや日常の O&M には、RAM ユーザーの AccessKey を使用することをお勧めします。
        // AccessKey ID と AccessKey シークレットをプロジェクトコードにハードコーディングしないでください。ハードコーディングすると、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが脅かされる可能性があります。
        // この例では、環境変数から取得した AccessKey を使用して API アクセスの ID 検証を実装する方法を示します。サンプルコードを実行する前に、ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数を設定してください。
        // ご自身の AccessKey ID。
        String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID");
        // ご自身の AccessKey シークレット。
        String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET");
        // ApsaraVideo VOD にアップロードするローカルビデオファイルの完全なパス。パスにはファイル名拡張子を含める必要があります。
        String localFile = "/Users/yours/Video/testVideo.flv";
        try {
            // ApsaraVideo VOD クライアントを初期化し、アップロード URL と資格情報を取得します。
            DefaultAcsClient vodClient = initVodClient(accessKeyId, accessKeySecret);
            CreateUploadVideoResponse createUploadVideoResponse = createUploadVideo(vodClient);
            // 操作が成功すると、VideoId、UploadAddress、UploadAuth が返されます。
            String videoId = createUploadVideoResponse.getVideoId();

            JSONObject uploadAuth = JSONObject.parseObject(decodeBase64(createUploadVideoResponse.getUploadAuth()));
            JSONObject uploadAddress = JSONObject.parseObject(decodeBase64(createUploadVideoResponse.getUploadAddress()));

            // UploadAuth と UploadAddress を使用して OSS クライアントを初期化します。
            OSSClient ossClient = initOssClient(uploadAuth, uploadAddress);
            // ファイルをアップロードします。アップロードは同期的であり、スレッドをブロックすることに注意してください。消費される時間は、ファイルサイズとアップストリーム帯域幅に依存します。
            uploadLocalFile(ossClient, uploadAddress, localFile);
            System.out.println("Put local file succeed, VideoId : " + videoId);
        } catch (Exception e) {
            System.out.println("Put local file fail, ErrorMessage : " + e.getLocalizedMessage());
        }
    }

    private static String decodeBase64(String data) {
        return new String(Base64.decodeBase64(data));
    }
}
                

SDK V2.0

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

    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>vod20170321</artifactId>
      <version>3.6.4</version>
    </dependency>
    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>tea-openapi</artifactId>
      <version>0.3.8</version>
    </dependency>
    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>tea-console</artifactId>
      <version>0.0.1</version>
    </dependency>
    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>tea-util</artifactId>
      <version>0.2.23</version>
    </dependency>
    <dependency>
      <groupId>com.aliyun</groupId>
      <artifactId>credentials-java</artifactId>
      <version>1.0.1</version>
    </dependency>
    <dependency>
      <groupId>com.aliyun.oss</groupId>
      <artifactId>aliyun-sdk-oss</artifactId>
      <version>3.17.4</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.83</version>
    </dependency>

ステップ 2. ファイルのアップロード (Java サンプルコード)

説明

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

package com.aliyun.sample;
import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.DefaultCredentialProvider;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.PutObjectResult;
import com.aliyun.tea.*;
import com.alibaba.fastjson.JSONObject;
import java.io.File;
import org.apache.commons.codec.binary.Base64;

public class Sample {

    /**
     * 説明

リファレンス: アップロード URL と資格情報の解析

アップロード URL (UploadAddress) とアップロード資格情報 (UploadAuth) を Base64 デコードして、OSS アップロード URL と権限付与情報を取得する必要があります。その後、デコードされた URL と情報を使用して OSS クライアントを初期化できます。次のサンプルコードに例を示します。

  import org.apache.commons.codec.binary.Base64;
  
  
  public static String decodeBase64(String s) {
      byte[] b = null;
      String result = null;
      if (s != null) {
          Base64 decoder = new Base64();
          try {
              b = decoder.decode(s);
              result = new String(b, "utf-8");
          } catch (Exception e) {
          }
      }
      return result;
  }

表 1. デコードされた UploadAddress フィールド

フィールド

説明

Bucket

ApsaraVideo VOD のストレージの場所。

Endpoint

ApsaraVideo VOD のストレージリージョンの ID。

FileName

ApsaraVideo VOD システムによってアップロードされたファイルに割り当てられたファイル名。

ObjectPrefix

このパラメーターは、アップロードされたファイルが M3U8 ファイルの場合にのみ返されます。

表 2. デコードされた UploadAuth フィールド

フィールド

説明

AccessKeyId

ファイルをアップロードするユーザーの AccessKey ID。

AccessKeySecret

ファイルをアップロードするユーザーの AccessKey シークレット。

SecurityToken

アップロード権限付与のためのセキュリティトークン。

ExpireUTCTime

アップロード URL と資格情報の有効期限。時刻は UTC で、yyyy-MM-ddTHH:mm:ssZ フォーマットに従います。

Expiration

アップロード権限付与の有効期限。ビデオの場合、値は 3,000 秒です。資格情報の有効期限が切れた後は、リフレッシュする必要があります。

Region

アップロードリージョンの ID。