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

ApsaraVideo VOD:C/C+ 用アップロード SDK の使用

最終更新日:Nov 05, 2025

このトピックでは、C または C++ 用のサーバーアップロード SDK を使用してメディアファイルを ApsaraVideo VOD にアップロードする方法について説明します。

アップロードプロセス

C または C++ 用のアップロード SDK は、ApsaraVideo VOD SDK の一般的なプロセスに従います。詳細については、「アップロードプロセス」をご参照ください。以下では、C または C++ 用のサーバーアップロード SDK を使用する基本的なプロセスについて説明します。

  1. 前提条件セクションの説明に従って設定を完了します。

  2. C または C++ 用のサーバーアップロード SDK を統合します。詳細については、「C または C++ 用のサーバーアップロード SDK の統合」をご参照ください。

  3. アップロード情報を設定して、アップロードロジックを実装します。

前提条件

  • 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 操作に対する権限を持っています。RAM ユーザーの AccessKey ペアを使用して API 操作を呼び出すか、日常の O&M を実行することをお勧めします。

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

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

    説明

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

C または C++ 用のサーバーアップロード SDK の統合

説明
  • C または C++ 用のサーバーアップロード SDK は、Linux オペレーティングシステムにのみインストールできます。

  • この例では、SDK V1.0.0 を使用します。ビジネス要件に基づいて他のバージョンを使用できます。

  • C または C++ 用のサーバーアップロード SDK のディレクトリとサンプルコードの詳細については、「ディレクトリ」をご参照ください。

  • このトピックでは、非 root ユーザーとして C または C++ 用のサーバーアップロード SDK をインストールする方法を説明し、インストールコマンドの例を示します。

次の表に、必要なソフトウェアパッケージとその使用法、およびインストールの例を示します。

ソフトウェアパッケージ

説明

YUM を使用したインストール

インターネット経由でダウンロードしたパッケージを使用したインストール

CMake

サードパーティのコンパイラ。

  • バージョン: V2.6.0 以降

  • サンプルコード:

    sudo yum install cmake
  • ダウンロードリンク: CMake

  • サンプルコード:

    ./configure
    make
    make install

libcurl

ネットワーク接続の問題をトラブルシューティングします。

  • バージョン: V7.29.0 以降

  • サンプルコード:

    sudo yum install libcurl-devel
  • ダウンロードリンク: libcurl

  • サンプルコード:

    ./configure
    make
    make install

libuuid

UUID を生成します。

サンプルコード:

sudo yum install libuuid-devel

N/A

apr

N/A

サンプルコード:

sudo yum install apr-devel
  • ダウンロードリンク: apr

  • サンプルコード:

    ./configure
    make
    make install

apr-util

メモリ使用量とクロスプラットフォームの問題を管理します。

サンプルコード:

sudo yum install apr-util
  • ダウンロードリンク: apr-util

  • サンプルコード:

    // パッケージをインストールするときに with-apr パラメーターを指定します。
    ./configure --with-apr=/your/apr/install/path
    make
    make install

minixml

XML フォーマットで返されるデータを解析します。

サンプルコード:

sudo yum install mxml mxml-devel
  • ダウンロードリンク: minixml

  • サンプルコード:

    ./configure
    make
    make install

jsoncpp

JSON フォーマットで返されるデータを解析します。

サンプルコード:

sudo yum install jsoncpp-devel
  • ダウンロードリンク: jsoncpp

  • サンプルコード:

    ./configure
    make
    make install

OSS SDK

C または C++ 用のサーバーアップロード SDK を使用する前に、C または C++ 用の Object Storage Service (OSS) SDK をダウンロードしてインストールする必要があります。

N/A

ダウンロードリンクとインストール手順の詳細については、「インストール」をご参照ください。

重要

一部の OSS 依存関係がすでにインストールされている場合は、再度インストールする必要はありません。

C または C++ 用アップロード SDK

メディアファイルをアップロードします。

N/A

  • サンプルコード:

cmake .
make
make install

ディレクトリ

/VodSDK-C_1.0.0.gz/VodSDK-C_1.0.0/aliyun-c-sdk-vod/src/upload.h

ディレクトリ

説明

CreateUploadVideoRequest

ビデオアップロードのリクエストクラス。パラメーターの詳細については、「CreateUploadVideo」をご参照ください。

CreateUploadImageRequest

イメージアップロードのリクエストクラス。パラメーターの詳細については、「CreateUploadImage」をご参照ください。

CreateUploadAttachedMediaRequest

補助メディアアセットのアップロードのリクエストクラス。パラメーターの詳細については、「CreateUploadAttachedMedia」をご参照ください。

UploadOptions

アップロードパラメーターの構造。以下の項目でパラメーターについて説明します。

  • void (*uploadProgressCallback) (int64_t, int64_t): アップロードの進行状況のコールバック関数を設定します。このパラメーターを設定しない場合、デフォルトのコールバック設定が使用されます。このパラメーターを NULL に設定すると、アップロードの進行状況のコールバックは呼び出されません。

  • ecsRegionId: アップロードスクリプトがデプロイされている ECS インスタンスのリージョンを指定します。ECS リージョンが ApsaraVideo VOD のストレージリージョンと同じ場合、ファイルは内部ネットワーク経由で自動的にアップロードされます。

  • multipartUploadLimit: マルチパートアップロードのファイルサイズ制限を指定します。単位: バイト。デフォルト値: 10 MB。このパラメーターはビデオアップロードでのみ有効です。

  • multipartUploadOnceSize: マルチパートアップロードの各パートのサイズを指定します。単位: バイト。デフォルト値: 10 MB。このパラメーターはビデオアップロードでのみ有効です。

  • tmpDir: ファイルを一時的に保存するローカルディレクトリを指定します。このパラメーターはオンラインファイルのアップロードでのみ有効です。

uploadLocalVideo

ローカルビデオをアップロードするために使用される API 操作。

uploadWebVideo

オンラインビデオをアップロードするために使用される API 操作。

uploadLocalImage

ローカルイメージをアップロードするために使用される API 操作。

uploadWebImage

オンラインイメージをアップロードするために使用される API 操作。

uploadLocalAttachedMedia

ローカルの補助メディアアセットをアップロードするために使用される API 操作。

uploadWebAttachedMedia

オンラインの補助メディアアセットをアップロードするために使用される API 操作。

uploadLocalM3u8

ローカルの M3U8 ビデオをアップロードするために使用される API 操作。

uploadWebM3u8

オンラインの M3U8 ビデオをアップロードするために使用される API 操作。

/VodSDK-C_1.0.0.gz/VodSDK-C_1.0.0/aliyun-c-sdk-vod/samples

ディレクトリ

説明

uploadVideo.cpp

ビデオをアップロードするためのサンプルコード。

uploadImage.cpp

イメージをアップロードするためのサンプルコード。

uploadAttachedMedia.cpp

補助メディアアセットをアップロードするためのサンプルコード。

シナリオ 1: オーディオおよびビデオファイルのアップロード

通常のオーディオおよびビデオファイル

ApsaraVideo VOD では、次のいずれかの方法でオーディオまたはビデオファイルをアップロードできます。

  • マルチパートアップロードを使用してローカルファイルをアップロードします。最大 48.8 TB のサイズのファイルをアップロードできます。再開可能なアップロードはサポートされていません。詳細については、サンプルコードの testUploadLocalVideo 関数をご参照ください。

  • ファイル URL を使用してオンラインファイルをアップロードします。最大 48.8 TB のサイズのファイルをアップロードできます。オンラインファイルをアップロードする前に、ファイルをローカルディスクにダウンロードする必要があります。ローカルディスクに十分な空き容量があることを確認してください。詳細については、次のサンプルコードの testUploadWebVideo 関数をご参照ください。

サンプルコードの表示

void testCallback(int64_t consumed_bytes, int64_t total_bytes)
{
    printf("total :%ld, %ld\n", consumed_bytes, total_bytes);
}
// ローカルビデオのアップロードをテストします。
VodApiResponse testUploadLocalVideo(VodCredential authInfo) {
    CreateUploadVideoRequest request;
    // ソースファイルの名前。
    request.fileName = "test.mp4";
    // ビデオのタイトル。
    request.title = "testVideo****";
    // ビデオのカテゴリ ID。
    request.cateId = "1";
    // カスタムビデオサムネイルの URL。例: http://example.com/example-****.jpg。
    request.coverURL = "<your cover URL>";
    // ビデオのタグ。
    request.tags = "test1,test2";
    // トランスコーディングテンプレートグループの ID。
    request.templateGroupId = "6ae347b0140181ad371d197ebe28****";
    // ストレージの場所。例: example-bucket-****.oss-cn-shanghai.aliyuncs.com。
    requests.storageLocation = "<your torageLocation>";
    Json::Value userData;
    Json::Value callbackUrl;
    // コールバック URL。例: https://example.aliyundoc.com/ProcessMessageCallback。
    callbackUrl["CallbackURL"] = "<your callback URL>";
    userData["MessageCallback"] = callbackUrl;
    Json::Value extend;
    extend["localId"] = "xxx";
    extend["test"] = "www";
    userData["Extend"] = extend;
    request.userData = userData.toStyledString();
    UploadOptions uploadOptions;
    // アップロードスクリプトがデプロイされている ECS インスタンスのリージョンを指定します。ECS リージョンが ApsaraVideo VOD のストレージリージョンと同じ場合、ファイルは内部ネットワーク経由で自動的にアップロードされます。
    //uploadOptions.ecsRegionId = "cn-shanghai";
    // アップロードの進行状況のコールバック関数を設定します。このパラメーターを設定しない場合、デフォルトのコールバック設定が使用されます。このパラメーターを NULL に設定すると、アップロードの進行状況のコールバックは呼び出されません。
    //uploadOptions.uploadProgressCallback = testCallback;
    //uploadOptions.multipartUploadLimit = 20*1024*1024;// マルチパートアップロードのファイルサイズ制限を指定します。
    //uploadOptions.multipartUploadOnceSize = 10*1024*1024;// マルチパートアップロードの各パートのサイズを指定します。
    VodApiResponse result = uploadLocalVideo(authInfo, request, "./test.mp4", uploadOptions);
    return result;
}
// オンラインビデオのアップロードをテストします。
VodApiResponse testUploadWebVideo(VodCredential authInfo) {
    CreateUploadVideoRequest request;
    request.fileName = "testWeb****.mp4";
    request.title = "testUploadWebVideo****";
    UploadOptions uploadOptions;
    // アップロードスクリプトがデプロイされている ECS インスタンスのリージョンを指定します。ECS リージョンが ApsaraVideo VOD のストレージリージョンと同じ場合、ファイルは内部ネットワーク経由で自動的にアップロードされます。
    //uploadOptions.ecsRegionId = "cn-shanghai";
    // アップロードの進行状況のコールバック関数を設定します。このパラメーターを設定しない場合、デフォルトのコールバック設定が使用されます。このパラメーターを NULL に設定すると、アップロードの進行状況のコールバックは呼び出されません。
    //uploadOptions.uploadProgressCallback = testCallback;
    //uploadOptions.multipartUploadLimit = 20*1024*1024;// マルチパートアップロードのファイルサイズ制限を指定します。
    //uploadOptions.multipartUploadOnceSize = 10*1024*1024;// マルチパートアップロードの各パートのサイズを指定します。
    // ダウンロードしたオンラインファイルを一時的に保存するローカルディレクトリを指定します。デフォルト値: /tmp/。
    //uploadOptions.tmpDir = "/tmp/";
    VodApiResponse result = uploadWebVideo(authInfo, request, "<Your Download Url>", uploadOptions);
    return result;
}

####  テストコードを実行します。  ####
VodCredential initVodClient(std::string accessKeyId, std::string accessKeySecret) {
    VodCredential authInfo;
    authInfo.accessKeyId = accessKeyId;
    authInfo.accessKeySecret = accessKeySecret;
    authInfo.regionId = "cn-shanghai";
    return authInfo;
}
int main(int argc, char * argv[]) {
    // Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。RAM ユーザーを使用して API 操作を呼び出すか、日常の O&M を実行することをお勧めします。
    // AccessKey ペア (AccessKey ID と AccessKey シークレット) をプロジェクトコードに含めないことをお勧めします。そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
    // この例では、ApsaraVideo VOD は環境変数から AccessKey ペアを読み取り、API アクセスの ID 検証を実装します。サンプルコードを実行する前に、環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID と ALIBABA_CLOUD_ACCESS_KEY_SECRET を設定してください。
    VodCredential authInfo = initVodClient(std:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), std:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
    VodApiResponse response;
    response = testUploadLocalVideo(authInfo);
    //response = testUploadWebVideo(authInfo);
    //response = testUploadLocalM3u8(authInfo);
    //response = testUploadWebM3u8(authInfo);
    printf("httpCode: %d, result: %s\n", response.httpCode, response.result.c_str());
}

M3U8 ファイル

サンプルコードの表示

void testCallback(int64_t consumed_bytes, int64_t total_bytes)
{
    printf("total :%ld, %ld\n", consumed_bytes, total_bytes);
}
// ローカル M3U8 ビデオのアップロードをテストします。
VodApiResponse testUploadLocalM3u8(VodCredential authInfo) {
    CreateUploadVideoRequest request;
    // ソースファイルの名前。
    request.fileName = "testLocal****.m3u8";
    // ビデオのタイトル。
    request.title = "testUploadLocalM3u8****";
    list<string> tsList;
    // パートファイルの URL を指定しない場合、ファイルは自動的に解析されます。
    //tsList.push_back("/tmp/1.ts");
    UploadOptions uploadOptions;
    VodApiResponse result = uploadLocalM3u8(authInfo, request, "./test****.m3u8", tsList, uploadOptions);
    return result;
}
// オンライン M3U8 ビデオのアップロードをテストします。
VodApiResponse testUploadWebM3u8(VodCredential authInfo) {
    CreateUploadVideoRequest request;
    // ソースファイルの名前。
    request.fileName = "testWeb****.m3u8";
    // ビデオのタイトル。
    request.title = "testUploadWebM3u8****";
    list<string> tsList;
    // パートファイルの URL を指定しない場合、ファイルは自動的に解析されます。
    //tsList.push_back("<Ts1 Download Url>");
    //tsList.push_back("<Ts2 Download Url>");
    UploadOptions uploadOptions;
    VodApiResponse result = uploadWebM3u8(authInfo, request, "<Your M3u8 Download Url>", tsList, uploadOptions);
    return result;
}
####  テストコードを実行します。  ####
VodCredential initVodClient(std::string accessKeyId, std::string accessKeySecret) {
    VodCredential authInfo;
    authInfo.accessKeyId = accessKeyId;
    authInfo.accessKeySecret = accessKeySecret;
    authInfo.regionId = "cn-shanghai";
    return authInfo;
}
int main(int argc, char * argv[]) {
    // Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。RAM ユーザーを使用して API 操作を呼び出すか、日常の O&M を実行することをお勧めします。
    // AccessKey ペア (AccessKey ID と AccessKey シークレット) をプロジェクトコードに含めないことをお勧めします。そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
    // この例では、ApsaraVideo VOD は環境変数から AccessKey ペアを読み取り、API アクセスの ID 検証を実装します。サンプルコードを実行する前に、環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID と ALIBABA_CLOUD_ACCESS_KEY_SECRET を設定してください。
    VodCredential authInfo = initVodClient(std:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), std:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
    VodApiResponse response;
    response = testUploadLocalVideo(authInfo);
    //response = testUploadWebVideo(authInfo);
    //response = testUploadLocalM3u8(authInfo);
    //response = testUploadWebM3u8(authInfo);
    printf("httpCode: %d, result: %s\n", response.httpCode, response.result.c_str());
}

シナリオ 2: イメージのアップロード

サンプルコードの表示

void testCallback(int64_t consumed_bytes, int64_t total_bytes)
{
    printf("total :%ld, %ld\n", consumed_bytes, total_bytes);
}

VodApiResponse testUploadLocalImage(VodCredential authInfo)
{
    CreateUploadImageRequest request;
    // イメージのタイプ。
    request.imageType = "default";
    // イメージのタイトル。
    request.title = "testUploadLocalImage";
    UploadOptions uploadOptions;
    // アップロードスクリプトがデプロイされている ECS インスタンスのリージョンを指定します。ECS リージョンが ApsaraVideo VOD のストレージリージョンと同じ場合、ファイルは内部ネットワーク経由で自動的にアップロードされます。
    //uploadOptions.ecsRegionId = "cn-shanghai";
    // アップロードの進行状況のコールバック関数を設定します。このパラメーターを設定しない場合、デフォルトのコールバック設定が使用されます。このパラメーターを NULL に設定すると、アップロードの進行状況のコールバックは呼び出されません。
    //uploadOptions.uploadProgressCallback = testCallback;
    VodApiResponse result = uploadLocalImage(authInfo, request, "./test.png", uploadOptions);
    return result;
}

VodApiResponse testUploadWebImage(VodCredential authInfo) {
    CreateUploadImageRequest request;
    request.imageType = "default";
    request.title = "testUploadWebImage";
    UploadOptions uploadOptions;
    // アップロードスクリプトがデプロイされている ECS インスタンスのリージョンを指定します。ECS リージョンが ApsaraVideo VOD のストレージリージョンと同じ場合、ファイルは内部ネットワーク経由で自動的にアップロードされます。
    //uploadOptions.ecsRegionId = "cn-shanghai";
    // アップロードの進行状況のコールバック関数を設定します。このパラメーターを設定しない場合、デフォルトのコールバック設定が使用されます。このパラメーターを NULL に設定すると、アップロードの進行状況のコールバックは呼び出されません。
    //uploadOptions.uploadProgressCallback = testCallback;
    // ダウンロードしたオンラインファイルを一時的に保存するローカルディレクトリを指定します。デフォルト値: /tmp/。
    //uploadOptions.tmpDir = "/tmp/";
    VodApiResponse result = uploadWebImage(authInfo, request, "<Your Download Url>", uploadOptions);
    return result;
}

VodCredential initVodClient(std::string accessKeyId, std::string accessKeySecret) {
    VodCredential authInfo;
    authInfo.accessKeyId = accessKeyId;
    authInfo.accessKeySecret = accessKeySecret;
    authInfo.regionId = "cn-shanghai";
    return authInfo;
}

サンプルコードの表示

int main(int argc, char * argv[]) {
    // Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。RAM ユーザーを使用して API 操作を呼び出すか、日常の O&M を実行することをお勧めします。
    // AccessKey ペア (AccessKey ID と AccessKey シークレット) をプロジェクトコードに含めないことをお勧めします。そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
    // この例では、ApsaraVideo VOD は環境変数から AccessKey ペアを読み取り、API アクセスの ID 検証を実装します。サンプルコードを実行する前に、環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID と ALIBABA_CLOUD_ACCESS_KEY_SECRET を設定してください。
    VodCredential authInfo = initVodClient(std:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), std:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
    VodApiResponse response;

    response = testUploadLocalImage(authInfo);
    //response = testUploadWebImage(authInfo);
    printf("httpCode: %d, result: %s\n", response.httpCode, response.result.c_str());
}

シナリオ 3: 補助メディアアセットのアップロード

サンプルコードの表示

void testCallback(int64_t consumed_bytes, int64_t total_bytes)
{
    printf("total :%ld, %ld\n", consumed_bytes, total_bytes);
}

VodApiResponse testUploadLocalAttachedMedia(VodCredential authInfo)
{
    CreateUploadAttachedMediaRequest request;
    // 補助メディアアセットの種類。
    request.businessType = "watermark";'
    // ファイル名拡張子。
    request.mediaExt = "png";
    // 補助メディアアセットのタイトル。
    request.title = "testUploadLocalAttachedMedia";
    UploadOptions uploadOptions;
    // アップロードスクリプトがデプロイされている ECS インスタンスのリージョンを指定します。 ECS リージョンが ApsaraVideo VOD のストレージリージョンと同じ場合、ファイルは内部ネットワーク経由で自動的にアップロードされます。
    //uploadOptions.ecsRegionId = "cn-shanghai";
    // アップロードの進捗用のコールバック関数を設定します。 このパラメーターを設定しない場合、デフォルトのコールバック設定が使用されます。 このパラメーターを NULL に設定した場合、アップロードの進捗に関するコールバックは呼び出されません。
    //uploadOptions.uploadProgressCallback = testCallback;
    return uploadLocalAttachedMedia(authInfo, request, "./test.png", uploadOptions);
}

VodApiResponse testUploadWebAttachedMedia(VodCredential authInfo)
{
    CreateUploadAttachedMediaRequest request;
    // 補助メディアアセットの種類。
    request.businessType = "watermark";
    // ファイル名拡張子。
    request.mediaExt = "png";
    // 補助メディアアセットのタイトル。
    request.title = "testUploadWebAttachedMedia";
    UploadOptions uploadOptions;
    // アップロードスクリプトがデプロイされている ECS インスタンスのリージョンを指定します。 ECS リージョンが ApsaraVideo VOD のストレージリージョンと同じ場合、ファイルは内部ネットワーク経由で自動的にアップロードされます。
    //uploadOptions.ecsRegionId = "cn-shanghai";
    // アップロードの進捗用のコールバック関数を設定します。 このパラメーターを設定しない場合、デフォルトのコールバック設定が使用されます。 このパラメーターを NULL に設定した場合、アップロードの進捗に関するコールバックは呼び出されません。
    //uploadOptions.uploadProgressCallback = testCallback;
    // ダウンロードされたオンラインファイルを一時的に保存するためのローカルディレクトリを指定します。 デフォルト値: /tmp/。
    //uploadOptions.tmpDir = "/tmp/";
    return uploadWebAttachedMedia(authInfo, request, "<Your Download Url>", uploadOptions);
}

VodCredential initVodClient(std::string accessKeyId, std::string accessKeySecret) {
    VodCredential authInfo;
    authInfo.accessKeyId = accessKeyId;
    authInfo.accessKeySecret = accessKeySecret;
    authInfo.regionId = "cn-shanghai";
    return authInfo;
}

サンプルコードの表示

int main(int argc, char * argv[]) {
    // Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。RAM ユーザーを使用して API 操作を呼び出すか、日常の O&M を実行することをお勧めします。
    // AccessKey ペア (AccessKey ID と AccessKey シークレット) をプロジェクトコードに含めないことをお勧めします。そうしないと、AccessKey ペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
    // この例では、ApsaraVideo VOD は環境変数から AccessKey ペアを読み取り、API アクセスの ID 検証を実装します。サンプルコードを実行する前に、環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID と ALIBABA_CLOUD_ACCESS_KEY_SECRET を設定してください。
    VodCredential authInfo = initVodClient(std:getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), std:getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
    VodApiResponse response;
    response = testUploadLocalAttachedMedia(authInfo);
    //response = testUploadWebAttachedMedia(authInfo);
    printf("httpCode: %d, result: %s\n", response.httpCode, response.result.c_str());
}