ApsaraVideo VODが提供するアップロードSDKが、アプリケーションサーバーからファイルをアップロードするための要件を満たさない場合は、Object Storage Service (OSS) SDKを使用してメディアファイルをアップロードできます。 このトピックでは、OSS SDKを使用してメディアファイルをアップロードするプロセスについて説明します。 このトピックでは、特定のプログラミング言語でOSS SDKを使用する手順とサンプルコードについても説明します。

シナリオ

ApsaraVideo VODでは、さまざまな方法でメディアファイルをアップロードできます。 サーバーとクライアントのアップロードSDKは、基本的なアップロードロジックをカプセル化します。 メディアファイルをアップロードする前に、簡単な設定を完了するだけで済みます。 アップロードSDKを使用してメディアファイルをアップロードすることを推奨します。 ただし、サーバーアップロードSDKは、Java、Python、C、C ++ 、およびPHPプログラミング言語のみをサポートします。 などの他のプログラミング言語を使用している場合。NETおよびGoでは、OSS SDKを使用してメディアファイルをアップロードできます。 アップロード方法の詳細については、「概要」をご参照ください。

次の表に、さまざまなプログラミング言語でサポートおよび推奨されるアップロード方法を示します。

プログラミング言語サポートされているアップロード方法推奨アップロード方法説明
Java

サーバーアップロードSDK

OSS SDK
説明

このトピックでは、OSS SDKを使用してメディアファイルをアップロードするサンプルコードを提供します。

サーバーアップロードSDK

詳細については、参照Upload from servers.
Python

サーバーアップロードSDK

OSS SDK

サーバーアップロードSDK

C/C++

サーバーアップロードSDK

OSS SDK

サーバーアップロードSDK

PHP

サーバーアップロードSDK

OSS SDK
説明

このトピックでは、OSS SDKを使用してメディアファイルをアップロードするサンプルコードを提供します。

サーバーアップロードSDK

Go
OSS SDK
説明

このトピックでは、OSS SDKを使用してメディアファイルをアップロードするサンプルコードを提供します。

-

アップロードURLと資格情報を取得するには、ApsaraVideo VODサーバー操作SDKを統合する必要があります。

このトピックでは、OSS SDKを使用してメディアファイルをアップロードするサンプルコードを提供します。

.NET
OSS SDK
説明

このトピックでは、OSS SDKを使用してメディアファイルをアップロードするサンプルコードを提供します。

-
Node.js

OSS SDK

-

アップロードURLと資格情報を取得するには、ApsaraVideo VODサーバー操作SDKを統合する必要があります。

このトピックでは、OSS SDKを使用してメディアファイルをアップロードする手順について説明します。 サンプルコードは提供されない。

アップロードのプロセス

OSS SDKを使用してメディアファイルをアップロードするには、アップロードプロセス全体のロジックを実装する必要があります。 ApsaraVideo VODからアップロードURLと資格情報を取得し、Base64-encodedアップロードURLと資格情報をデコードしてから、OSS SDKを使用してメディアファイルをアップロードする必要があります。

次の図は、完全なアップロード処理を示しています。 この例では、ApsaraVideo VODサーバー操作SDKを統合して、アップロードURLと資格情報を取得します。

アップロードのプロセス

プロセスの説明

  1. アプリケーションサーバーは、RAMユーザーのAccessKey IDとAccessKey secretまたはSecurity Token Service (STS) によって発行された一時的なAccessKeyペアを使用して、ApsaraVideo VODクライアントを初期化します。

  2. アプリケーションサーバーは、アップロードURL、アップロード資格情報、およびメディアアセット情報を取得するために、ApsaraVideo VODサーバー操作SDKを使用して次のいずれかの操作を呼び出します
    説明 HTTPまたはHTTPSリクエストを作成して、アップロードURLと資格情報を取得することもできます。 ただし、リクエストに手動で署名する必要があり、エラーの可能性が高くなります。 URLと資格情報のアップロードに関するAPI操作の詳細については、以下のトピックをご参照ください。
  3. ApsaraVideo VODは、uploadAddressパラメーターでBase64-encodedアップロードURL、uploadAuthパラメーターでBase64-encodedアップロード資格情報、およびメディアIDなどの情報を返します。 アプリケーションサーバーは、返されたパラメーターをデコードし、デコードされた情報を入力パラメーターとして使用してOSS SDKを初期化します。
    説明

    デコードされたアップロードURLと資格情報の詳細については、「アップロードURLと資格情報のデコードに関する注意事項」をご参照ください。

    ApsaraVideo VODは、アップロードURLと資格情報を発行するとメディアIDを生成します。 メディアIDは、ライフサイクル管理およびメディア処理に使用できます。

    • ビデオの場合、メディアIDはVideoIdパラメーターで返されます。
    • 画像の場合、メディアIDはImageIdパラメーターで返されます。
    • 補助メディアアセットの場合、メディアIDはMediaIdパラメーターで返されます。
    • 返されたメディアIDは、メディアアセット管理、オーディオおよびビデオの再生、メディア処理などの後続のタスクで必要となるものを適切に保持します。
  4. アプリケーションサーバーは、デコードされたアップロードURLと資格情報を使用して、OSSクライアントをSTSトークンで初期化します。
    重要 AccessKeyペアの漏洩を防ぐには、STSトークンを使用してOSS SDKを初期化する必要があります。
  5. アプリケーションサーバーは、OSS SDKを使用して操作を呼び出し、メディアファイルを指定された保存場所にアップロードします。

  6. OSSクライアントはアップロード結果を返します。
    説明 アップロード関連のイベントのコールバックを設定して、アップロード結果を受け取ることもできます。

前提条件

  • 指定されたリージョンのストレージパスやコールバック設定など、アップロードに必要なシステム設定が構成されます。 詳細については、「VODストレージの管理」および「コールバック設定の構成」をご参照ください。
  • RAMユーザーが作成され、ApsaraVideo VODへのアクセスに使用されます。 Alibaba CloudアカウントのAccessKeyペアの漏洩によるセキュリティリスクを防ぐため、RAMユーザーを作成し、ApsaraVideo VODへのアクセスに必要な権限をRAMユーザーに付与することを推奨します。 その後、RAMユーザーのAccessKeyペアを使用してApsaraVideo VODにアクセスできます。 詳細については、「RAMユーザーの作成と権限付与」をご参照ください。
  • 以下の手順は必要に応じて実行します。 RAMユーザー用にロールが作成され、Security Token Service (STS) を使用してApsaraVideo VODにアクセスする場合は、ApsaraVideo VODにアクセスするために必要な権限がロールに付与されます。 詳細については、「ロールを作成し、STSを使用してロールに一時的なアクセス許可を付与する」をご参照ください。
    説明 STSを使用できるシナリオの詳細については、「資格情報とSTSの比較」をご参照ください。

手順

このセクションでは、PHP、Go、Java、およびのOSS SDKを使用してメディアファイルをアップロードする手順とサンプルコードを提供します。NETを使用します。
重要 サンプルコードのパラメーターの値を、ビジネス要件に基づいた実際の値に置き換えます。 URLと資格情報のアップロードに関連するAPI操作の詳細については、以下のトピックを参照してください。

サンプルコードでは、ビデオファイルがアップロードされます。 CreateUploadVideo操作は、アップロードURLと資格情報を取得するために呼び出されます。

ソースコードのデモ

アップロードデモのソースコードは、参考のために提供されています。 次の表に、さまざまなプログラミング言語でのアップロードデモのソースコードへのリンクを示します。

言語ソースコード参考資料
PHPPHPのアップロードデモのソースコードOSS SDK for PHP
GoGoのアップロードデモのソースコードOSS SDK for Go
.NETアップロードデモのソースコード。NETOSS SDKをします。NET
JavaJavaのアップロードデモのソースコードOSS SDK for Java

OSS SDK for PHPを使用する手順とサンプルコード

手順1: ApsaraVideo VODのサーバー操作SDKのインストール

詳細については、「インストール」をご参照ください。

手順2: OSS SDKのインストール
重要 次の操作を実行して環境を準備します。
  • PHP 5.3以降をインストールします。 PHPのバージョンを確認するには、CLIでphp -vコマンドを実行します。
  • cURL拡張をインストールします。 cURL拡張がインストールされているかどうかを確認するには、CLIでphp -mコマンドを実行します。
  1. aliyun-OSS-PHP-SDKページからoss sdk for phpの最新のソースコードパッケージをダウンロードします。
  2. パッケージを解凍し、解凍したフォルダをaliyun-php-sdkフォルダにコピーします。

    たとえば、aliyun-oss-php-sdk-2.4.3.zipをダウンロードして解凍すると、解凍されたフォルダはaliyun-oss-php-sdk-2.4.3になります。 詳細については、「インストール」をご参照ください。

ステップ3: メディアファイルのアップロード
説明
トラブルシューティング
  • 不適切なSSL設定により「cURLエラー: SSL証明書の問題」などのエラーが発生した場合は、OSSクライアントを初期化する前にhttpsをhttpに置き換えてください。
    $uploadAddress['Endpoint'] = str_replace("https:" 、"http:" 、$uploadAddress['Endpoint']);
  • アップロード資格情報の有効期限が切れた場合、アップロード資格情報を更新し、メディアファイルを再度アップロードする必要があります。 デフォルトでは、アップロード資格情報は3,000秒間有効です。 次のサンプルコードは、アップロード資格情報を更新する方法の例を示しています。
    function refresh_upload_video($vodClient、$videoId) {
        $request = new vod\RefreshUploadVideoRequest();
        $request->setVideoId($videoId);
        $vodClient->getAcsResponse($request) を返します。}
<?php
// 1。 コード内のApsaraVideo VODおよびOSSのファイルを参照します。 
require_once './aliyun-php-sdk/aliyun-php-sdk-core/Config.php'; // この例では、ソースコードファイルはaliyun-php-sdkフォルダにあります。 
require_once './aliyun-php-sdk/aliyun-oss-php-sdk-2.4.3/autoload.php';
vod\Request\V20170321をvodとして使用します。OSS\OssClientを使用します。OSS\Core\OssExceptionを使用します。// 2。 AccessKeyペアを使用してApsaraVideo VODクライアントを初期化します。 
function init_vod_client($accessKeyId、$accessKeySecret) {
    $regionId = 'cn-shanghai'; // ApsaraVideo VODのストレージ領域。 例: cn-shanghai.
    $profile = DefaultProfile::getProfile($regionId、$accessKeyId、$accessKeySecret);
    新しいDefaultAcsClient($profile) を返します。}
// 3。 アップロードURLとアップロード資格情報を取得します。
function create_upload_video($vodClient) {
    $request = new vod\CreateUploadVideoRequest();
    $request->setTitle("ビデオタイトル"); // 必須。 ビデオのタイトル。
    $request->setFileName("File name.mo v"); // 必須。 ソースビデオファイルの名前。ファイル名拡張子を含む必要があります。
    $request->setDescription("Video description"); // オプション。 ソースビデオファイルの説明。
    // ビデオサムネイルのサンプルURL: http://example.alicdn.com/tps/TB1qnJ1PVXXXXXCXXXXXXXXXXXX-700-****.png。
    $request->setCoverURL("<ビデオのサムネイルのURL>"); // オプション。 カスタムビデオのサムネイル。
    $request->setTags("タグ1、タグ2"); // オプション。 ビデオのタグ。 複数のビデオタグはコンマ (,) で区切ります。
    $vodClient->getAcsResponse($request) を返します。}

// 4。 アップロードURLと資格情報を使用して、STSトークンでOSSクライアントを初期化します。 
function init_oss_client($uploadAuth, $uploadAddress) {
    $ossClient = new OssClient($uploadAuth['AccessKeyId'] 、$uploadAuth['AccessKeySecret'] 、$uploadAddress['Endpoint'] 、
        false, $uploadAuth['SecurityToken']);
    $ossClient->setTimeout(86400*7); // リクエストのタイムアウト期間。 単位は秒です。 デフォルト値: 5184000 大きなファイルのアップロードには時間がかかるため、パラメーターを大きな値に設定することをお勧めします。
    $ossClient->setConnectTimeout(10); // 接続タイムアウト期間。 単位は秒です。 デフォルト値は 10 です。
    $ossClientを返します。}
// 5。 ビデオファイルをアップロードします。 
function upload_local_file($ossClient, $uploadAddress, $localFile) {
    リターン $ossClient->uploadFile($uploadAddress['Bucket'] 、$uploadAddress['FileName'] 、$localFile);
}

$accessKeyId = '<AccessKey ID>'; // AccessKey ID。
$accessKeySecret = '<AccessKey Secret>'; // AccessKey secret。
$localFile = '/Users/aligame/Downloads/****.mp4'; // ApsaraVideo VODにアップロードするローカルビデオファイルのフルパス。
try {
    // ApsaraVideo VODクライアントを初期化し、アップロードURLとアップロード資格情報を取得します。
    $vodClient = init_vod_client($accessKeyId、$accessKeySecret);
    $createRes = create_upload_video($vodClient);
    // 上記のコードが正常に実行されると、videoId、uploadAddress、およびuploadAuthパラメーターが返されます。 Base64-encodedアップロードURLとアップロード資格情報をデコードします。 
    $videoId = $createRes->VideoId;
    $uploadAddress = json_decode(base64_decode($createRes->UploadAddress), true);
    $uploadAuth = json_decode(base64_decode($createRes->UploadAuth), true);
    // 取得したアップロードURLとアップロード資格情報を使用して、OSSクライアントを初期化します。
    $ossClient = init_oss_client($uploadAuth, $uploadAddress);
    // ビデオファイルをアップロードします。 複数のパーツが並行してアップロードされることに注意してください。 現在のファイルのすべての部分がアップロードされた場合にのみ、システムは次のファイルのアップロードを開始します。 消費時間は、ファイルサイズとアップストリーム帯域幅によって異なります。
    $result = upload_local_file($ossClient, $uploadAddress, $localFile);
    printf("Succeed, VideoId: % s", $videoId);
} catch (例外 $e) {
    // var_dump($e);
    printf("Failed, ErrorMessage: % s", $e->getMessage());
}
                

OSS SDK for Goを使用する手順とサンプルコード

手順1: ApsaraVideo VODのサーバー操作SDKのインストール

詳細については、「インストール」をご参照ください。

手順2: OSS SDKのインストール
重要 次の操作を実行して環境を準備します。

Go 1.7以降をインストールします。 Goの公式ウェブサイトにアクセスして、適切なバージョンをダウンロードできます。

  1. go getまたはglideコマンドを実行して、Alibaba Cloud SDK for Goをインストールします。
    • go getコマンドを実行して、Alibaba Cloud SDK for Goをインストールします。
      go get -u github.com/aliyun/alibaba-cloud-sdk-go/sdk
      説明
      • インストール中にメッセージが表示されません。 インストールプロセスが完了するまでに数分かかります。 インストールがタイムアウトした場合は、コマンドを再度実行します。
      • sr c/github.com/aliyun/alibaba-cloud-sdk-go/services/vodサブフォルダがGOPATH変数で指定されたフォルダに表示される場合、SDKがインストールされます。
    • glideコマンドを実行して、Alibaba Cloud SDK for Goをインストールします。
      glide get github.com/aliyun/alibaba-cloud-sdk-go
  2. OSS SDKをインストールします。 詳細については、「インストール」をご参照ください。
ステップ3: メディアファイルのアップロード
 パッケージメイン

import (import (import)
    "encoding/base64"
    "encoding/json"
    "fmt"
    "github.com/aliyun/alibaba-cloud-sdk-go/sdk"
    「github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials」
    「github.com/aliyun/alibaba-cloud-sdk-go/services/vod」
    "github.com/aliyun/aliyun-oss-go-sdk/oss"
    "os"
)

func InitVodClient(accessKeyId文字列, accessKeySecret文字列) (client * vod.Client, errエラー) {
    // ApsaraVideo VODのストレージリージョンを指定します。
    regionId := "cn-shanghai"
    // 認証用のオブジェクトを作成します。
    credential := &credentials。AccessKeyCredential {
        accessKeyId,
        accessKeySecret,
    }
    // カスタム設定パラメーター。
    config := sdk.NewConfig()
    config.AutoRetry = true // 接続に失敗した場合にネットワークに自動的に再接続するかどうかを指定します。
    config.MaxRetryTime = 3 // 再試行の最大回数。
    config.Timeout = 3000000000 // 接続タイムアウト期間。 単位: ナノ秒。 デフォルト値: 3000000000
    // vodClientインスタンスを作成します。
    vod.NewClientWithOptions(regionId、config、資格情報) を返します
}

func MyCreateUploadVideo(client * vod.Client) (応答 * vod.CreateUploadVideoResponse, errエラー) {
    request := vod.CreateCreateUploadVideoRequest()
    request.Title = "サンプルビデオタイトル"
    request.Description = "サンプル説明"
    request.FileName = "/opt/video/sample/video_file.mp4"
    // request.CateId = "-1"
    // ビデオサムネイルのサンプルURL: 例: http://example.alicdn.com/tps/TB1qnJ1PVXXXXXCXXXXXXXXXXXX-700-****.png。
    request.CoverURL = "<your CoverURL>"
    request. タグ="tag1,tag2"
    request.AcceptFormat = "JSON"
    return client.CreateUploadVideo (リクエスト)
}

func InitOssClient(uploadAuthDTO UploadAuthDTO, uploadAddressDTO UploadAddressDTO) (* oss.Client, error) {
    クライアント、err := oss.New(uploadAddressDTO.Endpoint、
        uploadAuthDTO.AccessKeyId、
        uploadAuthDTO.AccessKeySecret,
        oss.SecurityToken(uploadAuthDTO.SecurityToken) 、
        oss. タイムアウト (86400*7, 86400*7)
    return client, err
}

func UploadLocalFile(client * oss.Client, uploadAddressDTO UploadAddressDTO, localFile string) {
    // 保存場所を取得します。 
    bucket, err := client.Bucket(uploadAddressDTO.Bucket)
    if err! =nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
    // Upload a local file. 
    err = bucket.PutObjectFromFile(uploadAddressDTO.FileName, localFile)
    if err! =nil {
        fmt.Println("Error:", err)
        os.Exit(-1)
    }
}

type UploadAuthDTO struct {
    AccessKeyId文字列
    AccessKeySecret文字列
    SecurityToken文字列
}
type UploadAddressDTO struct {
    エンドポイント文字列Endpoint string
    バケット文字列
    FileName文字列
}

func main() {
    var accessKeyId string = "<AccessKeyId>" // AccessKey ID。
    var accessKeySecret string = "<AccessKeySecret>" // AccessKey secret。
    var localFile string = "/opt/video/sample/video_file.mp4" // ApsaraVideo VODにアップロードするローカルビデオファイルのフルパス。
    // ApsaraVideo VODクライアントを初期化し、アップロードURLとアップロード資格情報を取得します。
    var vodClient, initVodClientErr = InitVodClient(accessKeyId, accessKeySecret)
    もしinitVodClientErr! =nil {
        fmt.Println("Error:", initVodClientErr)
        リターン
    }
    // アップロードURLとアップロード資格情報を取得します。
    varレスポンス、createUploadVideoErr = MyCreateUploadVideo(vodClient)
    if createUploadVideoErr! =nil {
        fmt.Println("エラー:", createUploadVideoErr)
        リターン
    }
    // 上記のコードが正常に実行されると、videoId、uploadAddress、およびuploadAuthパラメーターが返されます。
    var videoId = response.VideoId
    uploadAuthDTO var UploadAuthDTO
    var uploadAddressDTO UploadAddressDTO
    var uploadAuthDecode, _ = base64.StdEncoding.DecodeString(response.UploadAuth)
    var uploadAddressDecode, _ = base64.StdEncoding.DecodeString(response.UploadAddress)
    json.Unmarshal(uploadAuthDecode, &uploadAuthDTO)
    json.Unmarshal(uploadAddressDecode, &uploadAddressDTO)
    // 取得したアップロードURLとアップロード資格情報を使用して、OSSクライアントを初期化します。
    var ossClient, _ = InitOssClient(uploadAuthDTO, uploadAddressDTO)
    // ビデオファイルをアップロードします。 複数のパーツが並行してアップロードされることに注意してください。 現在のファイルのすべての部分がアップロードされた場合にのみ、システムは次のファイルのアップロードを開始します。 消費時間は、ファイルサイズとアップストリーム帯域幅によって異なります。
    UploadLocalFile(ossClient, uploadAddressDTO, localFile)
    // MultipartUploadFile(ossClient, uploadAddressDTO, localFile)
    fmt.Println("Succeed, VideoId:", videoId)
}
                

OSS SDK for Javaを使用する手順とサンプルコード

重要 次の操作を実行して環境を準備します。
  • Java 1.8以降をインストールします。
  • Javaのバージョンを確認するには、CLIでjava -versionコマンドを実行します。

手順1: ApsaraVideo VODのサーバー操作SDKのインストール

詳細については、「インストール」をご参照ください。

手順2: OSS SDKのインストール

詳細については、「インストール」をご参照ください。

ステップ3。 メディアファイルのアップロード
com.alibaba.fastjson.JSONObjectをインポートします。com.aliyun.oss.OSSClientをインポートします。com.aliyuncs.DefaultAcsClientをインポートします。com.aliyuncs.exceptions.ClientExceptionをインポートします。com.aliyuncs.profile.DefaultProfileをインポートします。com.aliyuncs.vod.mo del.v20170321.CreateUploadVideoRequestをインポートします。com.aliyuncs.vod.mo del.v20170321.CreateUploadVideoResponseをインポートします。impor t org.apache.com mons.codec.binary.Base64;

java.io. ファイルをインポートします。/**
 * descript
 * /
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("this is desc");
        // request.setTags("tag1,tag2");
        // ビデオサムネイルのサンプルURL: http://example.aliyundoc.com/test_cover_****.jpg。
        // request.setCoverURL("<your CoverURL>");
        // request.setCateId(-1L);
        // request.setTemplateGroupId("");
        // request.setWorkflowId("");
        // request.setStorageLocation("");
        // request.setAppId("app-1000000");
        // リクエストのタイムアウト期間を設定します。
        request.setSysReadTimeout(1000);
        request.setSysConnectTimeout(1000);
        vodClient.getAcsResponse (リクエスト) を返します。
    }

    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");
        新しいOSSClient (エンドポイント、accessKeyId、accessKeySecret、securityToken) を返します。
    }

    public static void uploadLocalFile(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) {
        // AccessKey ID。
        文字列accessKeyId = "<あなたのAccessKeyId>";
        // AccessKeyシークレット。
        文字列accessKeySecret = "<AccessKeySecret>";
        // ApsaraVideo VODにアップロードするローカルビデオファイルのフルパス。 パスにはファイル名拡張子を含める必要があります。
        文字列localFile = "/ユーザー /あなた /ビデオ /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()));

            // 取得したアップロードURLとアップロード資格情報を使用して、OSSクライアントを初期化します。
            OSSClient ossClient = initOssClient(uploadAuth, uploadAddress);
            // ビデオファイルをアップロードします。 複数のパーツが並行してアップロードされることに注意してください。 現在のファイルのすべての部分がアップロードされた場合にのみ、システムは次のファイルのアップロードを開始します。 消費時間は、ファイルサイズとアップストリーム帯域幅によって異なります。
            uploadLocalFile(ossClient, uploadAddress, localFile);
            System.out.println("ローカルファイルを入れて成功、VideoId : " + videoId);
        } catch (Exception e) {
            System.out.println("ローカルファイルの配置失敗、ErrorMessage : " + e.getLocalizedMessage());
        }
    }

    プライベート静的文字列decodeBase64 (文字列データ) {
        新しい文字列 (Base64.decodeBase64 (データ)) を返します。
    }
}
                

OSS SDKを使用する手順とサンプルコード。NET

重要 次の操作を実行して環境を準備します。
  • インストールします。. NET Framework 4.6.1以降。
  • インストールします。NET Standard 2.0以降。

手順1: ApsaraVideo VODのサーバー操作SDKのインストール

詳細については、「インストール」をご参照ください。

手順2: OSS SDKのインストール

詳細については、「インストール」をご参照ください。

手順3: ApsaraVideo VODクライアントの初期化

サンプルコード
パブリック静的DefaultAcsClient InitVodClient (文字列accessKeyId、文字列accessKeySecret)
{
    // ApsaraVideo VODのストレージリージョンを指定します。 例: cn-shanghai.
    文字列regionId = "cn-shanghai";
    IClientProfile profile = DefaultProfile.GetProfile(regionId, accessKeyId, accessKeySecret);
    新しいDefaultAcsClient (プロファイル) を返します。}

ステップ4: メディアファイルのアップロード

  1. アップロードURLとアップロード資格情報を取得します。 この例では、ビデオファイルがアップロードされます。
    public static CreateUploadVideoResponse CreateUploadVideo(DefaultAcsClient vodClient)
    {
        CreateUploadVideoRequest request = new CreateUploadVideoRequest();
        request.AcceptFormat = Aliyun.Acs.Core.Http.FormatType.JSON;
        request.FileName = "vod_test.mp4";
        request.Title = "this is title";
        // リクエスト。 Description = "<ファイルの説明>";
        // リクエスト。 タグ="<ビデオのタグ。 複数のビデオタグをコンマ (,) で区切ります。> ";
        // ビデオサムネイルのサンプルURL: http://example.aliyundoc.com/test_cover_****.jpg。
        // リクエスト。 CoverURL = "<動画サムネイル>";
        // カテゴリID。 ApsaraVideo VODコンソールにログインし、カテゴリIDを照会します。
        // request.CateId = -1;
        // コード変換テンプレートグループのID。 ApsaraVideo VODコンソールにログインして、コード変換テンプレートグループのIDを照会します。
        // リクエスト。 TemplateGroupId = "<トランスコードテンプレートグループID>";
        // ワークフローのID。 ApsaraVideo VODコンソールにログインして、ワークフローのIDを照会します。
        // リクエスト。 WorkflowId = "<ワークフローID>";
        // ビデオファイルの保存場所。 ApsaraVideo VODコンソールにログインして、保存場所を照会します。
        // リクエスト。 StorageLocation = "<ストレージロケーション>";
        // AppIdパラメーターの値は固定です。 
        // request.AppId = "app-1000000";
        // リクエストのタイムアウト期間を設定します。
        request.SetReadTimeoutInMilliSeconds(1000);
        request.SetConnectTimeoutInMilliSeconds(1000);
        vodClient.GetAcsResponse (リクエスト) を返します。}
  2. Base64-encodedアップロードURLをデコードし、資格情報をBase64形式でアップロードします。
  3. アップロードURLとアップロード資格情報を使用して、OSSクライアントを初期化します。
    重要
    • アップロードURLとアップロード資格情報を使用する前に、それらをBase64形式で、次にJSON形式でデコードします。
    • OSSクライアントを初期化するには、STSトークンを使用する必要があります。
    サンプルコード
    public static OssClient InitOssClient(JObject uploadAuth, JObject uploadAddress)
    {
        string endpoint = uploadAddress.GetValue("Endpoint").ToString();
        string accessKeyId = uploadAuth.GetValue("AccessKeyId").ToString();
        string accessKeySecret = uploadAuth.GetValue("AccessKeySecret").ToString();
        string securityToken = uploadAuth.GetValue("SecurityToken").ToString();
        新しいOssClient (エンドポイント、accessKeyId、accessKeySecret、securityToken) を返します。}
  4. ローカルファイルをアップロードします。
    サンプルコード
    public static void UploadLocalFile(OssClient ossClient, JObject uploadAddress, string localFile)
    {
        string bucketName = uploadAddress.GetValue("Bucket").ToString();
        string objectName = uploadAddress.GetValue("FileName").ToString();
        ossClient.PutObject(bucketName, objectName, localFile);
    }
  5. オプションです。 アップロード資格情報の有効期限が切れた場合は、アップロード資格情報を更新し、メディアファイルを再度アップロードします。
    サンプルコード
    public static RefreshUploadVideoResponse RefreshUploadVideo(DefaultAcsClient vodClient)
    {
        RefreshUploadVideoRequest request = new RefreshUploadVideoRequest();
        request.AcceptFormat = Aliyun.Acs.Core.Http.FormatType.JSON;
        request.VideoId = "VideoId";
        // リクエストのタイムアウト期間を設定します。
        request.SetReadTimeoutInMilliSeconds(1000);
        request.SetConnectTimeoutInMilliSeconds(1000);
        vodClient.GetAcsResponse (リクエスト) を返します。}
  6. プロセス全体の手順を実行します。 実行中に例外をキャプチャします。
    サンプルコード
    // AccessKey ID。
    string accessKeyId = "<AccessKeyId>";
    // AccessKeyシークレット。
    string accessKeySecret = "<AccessKeySecret>";
    // ApsaraVideo VODにアップロードするローカルビデオファイルのフルパス。 パスにはファイル名拡張子を含める必要があります。
    文字列localFile = "/ユーザー /あなた /ビデオ /testVideo.flv";
    try {
        // ApsaraVideo VODクライアントを初期化し、アップロードURLとアップロード資格情報を取得します。
        DefaultAcsClient vodClient = InitVodClient(accessKeyId、accessKeySecret);
        CreateUploadVideoResponse createUploadVideoResponse = CreateUploadVideo(vodClient);
        // 上記のコードが正常に実行されると、videoId、uploadAddress、およびuploadAuthパラメーターが返されます。
        String videoId = createUploadVideoResponse.VideoId;
        JObject uploadAuth = JObject.Parse(Base64Decode(createUploadVideoResponse.UploadAuth));
        JObject uploadAddress = JObject.Parse(Base64Decode(createUploadVideoResponse.UploadAddress));
        // 取得したアップロードURLとアップロード資格情報を使用して、OSSクライアントを初期化します。
        OssClient ossClient = InitOssClient(uploadAuth, uploadAddress);
        // ビデオファイルをアップロードします。 複数のパーツが並行してアップロードされることに注意してください。 現在のファイルのすべての部分がアップロードされた場合にのみ、システムは次のファイルのアップロードを開始します。 消費時間は、ファイルサイズとアップストリーム帯域幅によって異なります。
        UploadLocalFile(ossClient, uploadAddress, localFile);
        Console.WriteLine("ローカルファイルを入れて成功、VideoId : " + videoId);
    }
    キャッチ (例外e)
    {
        Console.WriteLine("ローカルファイルの配置に失敗、ErrorMessage : " + e.Message);
    }

他のプログラミング言語の参照

上記のプログラミング言語とサンプルコードのアップロードSDKがビジネス要件を満たせない場合は、次の表でプログラミング言語の参照を確認してください。
説明 ApsaraVideo VODが提供するアップロードSDKの詳細については、関連トピックを参照してください。 PHP、Java、Go、およびOSS SDKを使用してメディアファイルをアップロードする方法について説明します。このトピックのサンプルコードを参照してください。
プログラミング言語ApsaraVideo VODサーバー操作SDKOSS SDK
Node.js
  1. インストール
  2. 初期化
  3. メディアアップロード
  1. インストール
  2. 初期化
  3. オブジェクトのアップロード

アップロードURLと資格情報のデコードに関する注意事項

ApsaraVideo VODによって返されたuploadAddressパラメーターとuploadAuthパラメーターの値を解析して、アップロードURLと資格情報を取得できます。 解析されたアップロードURLと資格情報を使用して、OSSクライアントを初期化できます。
説明 Base64デコードは開発者にとって一般的なタスクです。 したがって、このトピックでは特定のツールについて説明しません。 このセクションでは、uploadAddressおよびuploadAuthパラメーターからデコードされたフィールドについて説明します。
表 1. uploadAddressパラメーターからデコードされたフィールド
フィールド説明
バケットApsaraVideo VODの保存場所。
エンドポイントApsaraVideo VODのストレージリージョンのID。
FileNameApsaraVideo VODによってアップロードするメディアファイルに割り当てられた名前。
オブジェクトプレフィックスM3U8ファイルに対してのみ返されるフィールド。
表 2. uploadAuthパラメーターからデコードされたフィールド
フィールド説明
AccessKeyIdメディアファイルのアップロードに使用されるアカウントのAccessKey ID。
AccessKeySecretメディアファイルのアップロードに使用されるアカウントのAccessKeyシークレット。
SecurityTokenアップロード資格情報のセキュリティトークン。
ExpireUTCTimeアップロードURLとアップロード資格情報の有効期限。 日時は ISO 8601 規格 (yyyy-MM-ddTHH:mm:ssZ 形式) に準拠します。 時刻は UTC で表示されます。
有効期限アップロード資格情報の有効期限。 アップロード資格情報の有効期間は3,000秒です。 有効期限が切れたら、アップロード資格情報を更新する必要があります。
リージョンストレージリージョンのID。

次のコードは、デコード前後のアップロードURLと資格情報のサンプルを示しています。

デコード前のサンプルuploadAddressおよびuploadAuthパラメーター
{
"VideoId": "1c1255e7e58d4d7487d0c1852954****" 、"UploadAddress": "eyJFbmRwb2ludCI6Imh0dHBzOi8vb3NzLWNuLXNoYW5naGFpLmFsaXl1bmNzLmNvbSIsIkJ1Y2tldCI6InZvZC1zaGFuZ2hhaS1rYXNpIiwiRmlsZU5hbWUiOiJ2b2QtZjFlOGM0L3N2LzFhYmUyZDVjLTE3ZWU3Zjc3ZjA0LzFhYmUyZDVjLTE3ZWU3Zjc3ZjA0Lm1w ****" 、"RequestId": "2975D91A-F89F-5EBF-97D5-07028C90 ****" 、"UploadAuth": "eyJTZWN1cml0eVRva2VuIjoiQ0FJUzhRUjFxNkZ0NUIyeWZTaklyNWZNQ3Z6NWg1aFEzWVc2VVhmVDEwNFpXUGtVaHE3Z3B6ejJJSGhFZjNWdEErOGN0LzQxbFdsVzUvWWFscklxRk1NVkhSMlVNWkFvdjgwT3ExLzdKb0hidk5ldTBic0hoWnY5OEtzbG9waThqcUhvZU96Y1lJNzN2cHpQQWdtMldFUVJySkwrY1RLOUpaZlBVL21nZ29KbWFkSTZSeFN4YVNFOGF2NWRPZ3BscnIzNFh4bTBNdTIyWUNiM25rM2FEa2RqcG1nYWpuaGt1NXk0MmRHNzRCalRoMEdZc3VnT3ZOYllPb0NwYWNWTE5wVnlXTXZYdXV0dGJmamgzU2RjekJKSStheHE3dFZENGl5VmtkeUJKRk5UN2g2YUZ1ZkkrNzhjS3hSaU5JazhHckpGcGVUeHNPQjhwdTNMbnA3cjlnNUpPdWhaTVYvWVg1dnk1ZGJBQk9LeFA4d2xTSzcvUEgzQnNMYUlMWUtuamhzZ1puc1hEQXBRWjdoYkxXUnJXeUUwVGpiVEpwZXU0a3poWlIreUtkdUN5N3BrK3AxdzExSGw0ZGV2T2x5VFFxMlF5em9sSXBzN1prOUtSeGtOeGo3SWVLZ2NieWxSZDA5bUg3K1BVYmhyYUJkWHBjR1l1aGJKQkFsaDFXMXlvdm5pWnV2Zm9Md2ljWUg0VjU1ZHMrOGFmNDhVbDJveFUyeitVYTYxOEZoMkVsWm9XckZMeXFMZ0ZJYWk0YnVldW9XcGJQWEJGK29NdHlkcEV3SFlwREhmVG1oTGYyK2pwSTg5YmxiZDRNVFl5cVBNK3BJbEV3STE1NWRCQ2czQWY0OWcvMWM2cExDc3FFMmErdUs1WGkyaHV6Tm45OVNIOGRZUTV4TTRPYTZ0aWVMSXNtUFYrU1hQYktSbWxwaUlWalV6QnhHdkoxNEJtYS9PMWlwVzkweGF5ekR0WWt4RHNXNzhqempnSUpjcHRkV 1EzVzVCRDZ0cG51RFZkaXl0NUcwSUM2alN1K1pRQmI0NEk3b1hDS3p0aEY4NGxxWDkwelMwdXB6Y3R5bENTOEw1ZWJJN1o1SnlCQmIrOEJzNXppV3FXRGtKR29BQmg1Z3M3YlVOZEs2NGdVaThRM2tOdWpVZFdiZTFTb1Y1cVZJOEdmTkYvZ1g0MUNvWGlrSHhwN3FwOTBpMFBSd1h5VUc4WEVkVGUxY3RZbGEwZG9WeGhtNThOQVdoR0pEOXQxK21iWjd4ZUFkczNqT3NpSUNPb25Ib3JWYmNUb0s2VGs3cjNxejZHSlgybE54djVmWTBvUWZsSTJNQWR0cHo5WnJidnZ5eUFjYz0iLCJBY2Nlc3NLZXlJZCI6IlNUUy5OVHlBRk1qR3FqR1FTUWIzTkxUdjhpa0tFIiwiRXhwaXJlVVRDVGltZSI6IjIwMjItMDItMTFUMDk6NTc6NDNaIiwiQWNjZXNzS2V5U2VjcmV0IjoiOWZGUXQyeVJSWTZGMVBFb0hNS1dMYmFmeHlSd1BNNjFuRUhDbzZDTWlQZCIsIkV4cGlyYXRpb24iOiIzNjAwIiwiUmVnaW9uIjoiY24tc2hhbmdoYWk ****"
}
デコード後のサンプルUploadAddressパラメーター
{
"エンドポイント": "https://*******.aliyuncs.com" 、"バケット": "vod-shanghai-****" 、"FileName": "vod-f1e8c4/sv/1abe2d5c-17ee7f77f04/1abe2d5c-17ee7f7 ****.mp4"
}
重要 M3U8ファイルがアップロードされると、次の例に示すように、ObjectPrefixフィールドはUploadAddressパラメーターからデコードされます。
M3U8ファイルのデコード後のサンプルUploadAddressパラメーター
{
"エンドポイント": "https://*******.aliyuncs.com" 、"バケット": "vod-shanghai-****" 、"ObjectPrefix": "vod-f1e8c4/sv/4b9c68b2-17ee8156****" 、"FileName": "vod-f1e8c4/sv /4b9c68b2-17e81564e7 /4b9c68b2-17e815****.m3u8"
}
デコード後のサンプルuploadAuthパラメーター
{
"SecurityToken" gX41CoXikHxp7qp90i0PR****: "CAIS8QR1q6Ft5B2yfSjIr5fM****/G6g8****
"AccessKeyId": "STS.NTyAFMjGqjGQSQb3NLTv8****" 、"ExpireUTCTime": "2022-02-11T******" 、"AccessKeySecret": "9fFQt2yRRY6F1PEoHMKWLbafxyRwPM61nEHCo6C****" 、"有効期限": "****" 、"地域": "cn-shanghai"
}