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

アップロードのプロセス

CまたはC ++ のサーバーアップロードSDKで使用される内部アップロードロジックは、サーバーアップロードSDKの一般的なアップロードプロセスと同じです。 詳細については、t1959334.html#section_xp5_uw7_di1トピックの「アップロードプロセス」セクションを参照してください。 次のコンテンツでは、CまたはC ++ 用のサーバーアップロードSDKを使用する基本的なプロセスについて説明します。
  1. 前提条件を完了します。 詳細については、「前提条件」セクションをご参照ください。
  2. CまたはC ++ 用のアップロードSDKを統合します。 詳細については、CまたはC ++ 用のアップロードSDKの統合のセクションをご参照ください。
  3. アップロードロジックを実装します。 これにはアップロード情報の設定が含まれます。

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

  • この例では、SDK V1.0.0が使用されています。 ビジネス要件に基づいて他のバージョンを使用できます。
  • アップロードSDK For CまたはC ++ のディレクトリと解凍後のサンプルコードの詳細については、「アップロードSDK for CまたはC ++ のディレクトリ」をご参照ください。
  1. CまたはC ++ 用のアップロードSDKとサンプルコードを含むVodSDK-C_1.0.0.gzパッケージをダウンロードします。 詳細については、「SDKダウンロード」をご参照ください。
  2. CまたはC ++ 用のサーバーSDKのインストール方法に基づいて、CまたはC ++ 用のアップロードSDKをインストールします。 詳細については、「インストール」をご参照ください。

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

現在のSDKで新しいメソッドまたは既存のメソッドの新機能が使用できない場合は、SDKを最新バージョンに更新します。 詳細については、「SDKダウンロード」をご参照ください。

現在のSDKのバージョン番号とリリース日は、aliyun-c-sdk-vodディレクトリのChangeLog.txtファイルの最初の行で確認できます。

オーディオおよびビデオファイルのアップロード

通常のオーディオおよびビデオファイル
CまたはC ++ 用のアップロードSDKは、次の種類のオーディオおよびビデオファイルをサポートしています。
  • ローカルファイル。 マルチパートアップロードが使用されます。 アップロードする1つのファイルのサイズは最大48.8テラバイトです。 再開可能なアップロードはサポートされていません。 詳細については、次のサンプルコードのtestUploadLocalVideo関数を参照してください。
  • オンラインファイル。 アップロードURLを指定してオンラインファイルをアップロードできます。 アップロードする1つのファイルのサイズは最大48.8テラバイトです。 オンラインファイルをアップロードする前に、ファイルをローカルディスクにダウンロードする必要があります。 ローカルディスクに十分な容量があることを確認してください。 詳細については、次のサンプルコードの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.fileName = "test.mp4";
    // ビデオのタイトル。
    request.title = "testVideo ****";
    // ビデオのカテゴリID。
    request.ca teId = "1";
    // カスタムビデオサムネイルのURL。 例: http://example.com/example- ****.jpg。
    request.coverURL = "<あなたのカバーURL>";
    // ビデオのタグ。
    request.tags = "test1,test2";
    // コード変換テンプレートグループのID。
    request.templateGroupId = "6ae347b0140181ad371d197ebe28 ****";
    // ストレージの場所。 例: Example-bucket-**** .oss-cn-shanghai.aliyuncs.com。
    requests.storageLocation = "<your torageLocation>";
    Json:: 値userData;
    Json:: 値callbackUrl;
    // コールバックURL。 例: https://example.aliyundoc.com/ProcessMessageCallback.
    callbackUrl["CallbackURL"] = "<あなたのコールバックURL>";
    userData["MessageCallback"] = callbackUrl;
    Json:: 価値拡張;
    extend["localId"] = "xxx";
    extend["test"] = "www";
    userData["Extend"] = extend;
    request.us erData = userData.toStyledString();
    UploadOptions uploadOptions;
    // アップロードスクリプトがデプロイされるElastic Compute Service (ECS) インスタンスのリージョンを指定します。 ECSインスタンスのリージョンがApsaraVideo VODのストレージリージョンと同じ場合、ファイルは内部ネットワーク経由で自動的にアップロードされます。
    // uploadOptions.ecsRegionId = "cn-shanghai";
    // アップロードの進行状況のコールバックをカスタマイズします。 このパラメーターを設定しない場合、デフォルトのコールバックが使用されます。 このパラメーターをNULLに設定すると、アップロードの進行状況のコールバックは呼び出されません。
    // uploadOptions.uploadProgressCallback = testCallback;
    // uploadOptions.multipartUploadLimit = 20*1024*1024;// マルチパートアップロードの開始に基づくファイルサイズのしきい値を指定します。
    // uploadOptions.multipartUploadOnceSize = 10*1024*1024;// マルチパートアップロードの各パーツのサイズを指定します。
    VodApiResponse結果=uploadLocalVideo(authInfo、request、"./test.mp4" 、uploadOptions);
    結果を返します。}
// オンラインビデオのアップロードをテストします。
VodApiResponse testUploadWebVideo(VodCredential authInfo) {
    CreateUploadVideoRequestリクエスト;
    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、"<あなたのダウンロードUrl>" 、uploadOptions);
    結果を返します。}

#### テストコードを実行します。   ####
VodCredential initVodClient(std::string accessKeyId, std::string accessKeySecret) {
    VodCredential authInfo;
    authInfo.accessKeyId = accessKeyId;
    authInfo.accessKeySecret = accessKeySecret;
    authInfo.regionId = "cn-shanghai";
    authInfoを返します。}
int main(int argc, char * argv[]) {
    VodCredential authInfo = initVodClient("<Your AccessKeyId>" 、"<Your AccessKeySecret>");
    VodApiResponse応答;
    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.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);
    結果を返します。}
// オンラインM3U8ビデオのアップロードをテストします。
VodApiResponse testUploadWebM3u8(VodCredential authInfo) {
    CreateUploadVideoRequestリクエスト;
    // ビデオソースファイルの名前。
    request.fileName = "testWeb ****.m3u8";
    // ビデオのタイトル。
    request.title = "testUploadWebM3u8 ****";
    list<string> tsList;
    // ファイルパーツのURLを指定しない場合、ファイルは自動的に解析されます。
    // tsList.push_back("<Ts1ダウンロードUrl>");
    // tsList.push_back("<Ts2ダウンロードUrl>");
    UploadOptions uploadOptions;
    VodApiResponse result = uploadWebM3u8(authInfo, request, "<Your M3u8 Download Url>", tsList, uploadOptions);
    結果を返します。}
#### テストコードを実行します。   ####
VodCredential initVodClient(std::string accessKeyId, std::string accessKeySecret) {
    VodCredential authInfo;
    authInfo.accessKeyId = accessKeyId;
    authInfo.accessKeySecret = accessKeySecret;
    authInfo.regionId = "cn-shanghai";
    authInfoを返します。}
int main(int argc, char * argv[]) {
    VodCredential authInfo = initVodClient("<Your AccessKeyId>" 、"<Your AccessKeySecret>");
    VodApiResponse応答;
    response = testUploadLocalVideo(authInfo);
    // response = testUploadWebVideo(authInfo);
    // response = testUploadLocalM3u8(authInfo);
    // response = testUploadWebM3u8(authInfo);
    printf("httpCode: % d, result: % s\n", response.httpCode, response.result.c_str());
}

画像のアップロード

画像をアップロードするためのサンプルコードの一部:

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.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);
    結果を返します。}

VodApiResponse testUploadWebImage(VodCredential authInfo) {
    CreateUploadImageRequestリクエスト;
    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、"<あなたのダウンロードUrl>" 、uploadOptions);
    結果を返します。}

VodCredential initVodClient(std::string accessKeyId, std::string accessKeySecret) {
    VodCredential authInfo;
    authInfo.accessKeyId = accessKeyId;
    authInfo.accessKeySecret = accessKeySecret;
    authInfo.regionId = "cn-shanghai";
    authInfoを返します。}
int main(int argc, char * argv[]) {
    VodCredential authInfo = initVodClient("<Your AccessKeyId>" 、"<Your AccessKeySecret>");
    VodApiResponse応答;

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

補助メディア資産のアップロード

補助メディア資産をアップロードするためのサンプルコードの一部:

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.businessType = "watermark";'
    // ファイル名拡張子。
    request.mediaExt = "png";
    // 補助メディア資産のタイトル。
    request.title = "testUploadLocalAttachedMedia";
    UploadOptions uploadOptions;
    // アップロードスクリプトをデプロイするECSインスタンスのリージョンを指定します。 ECSインスタンスのリージョンがApsaraVideo VODのストレージリージョンと同じ場合、ファイルは内部ネットワーク経由で自動的にアップロードされます。
    // uploadOptions.ecsRegionId = "cn-shanghai";
    // アップロードの進行状況のコールバックをカスタマイズします。 このパラメーターを設定しない場合、デフォルトのコールバックが使用されます。 このパラメーターをNULLに設定すると、アップロードの進行状況のコールバックは呼び出されません。
    // uploadOptions.uploadProgressCallback = testCallback;
    uploadLocalAttachedMedia(authInfo、request、"./test.png" 、uploadOptions) を返します。}

VodApiResponse testUploadWebAttachedMedia(VodCredential authInfo)
{
    CreateUploadAttachedMediaRequestリクエスト;
    // 補助メディアアセットのタイプ。
    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/";
    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";
    authInfoを返します。}
int main(int argc, char * argv[]) {
    VodCredential authInfo = initVodClient("<Your AccessKeyId>" 、"<Your AccessKeySecret>");
    VodApiResponse応答;
    response = testUploadLocalAttachedMedia(authInfo);
    // response = testUploadWebAttachedMedia(authInfo);
    printf("httpCode: % d, result: % s\n", response.httpCode, response.result.c_str());
}

CまたはC ++ 用のアップロードSDKのディレクトリ

/VodSDK-C_1.0.0.gz解凍ディレクトリ /VodSDK-C_1.0.0/aliyun-c-sdk-vod/src/upload.h
ディレクトリ 説明
CreateUploadVideoRequest ビデオをアップロードするためのリクエストクラス。 パラメーターの詳細については、「CreateUploadVideo」をご参照ください。
CreateUploadImageRequest 画像をアップロードするためのリクエストクラス。 パラメーターの詳細については、「t1235495.html#doc_api_vod_CreateUploadImage」をご参照ください。
CreateUploadAttachedMediaRequest 補助メディアアセットをアップロードするためのリクエストクラス。 パラメーターの詳細については、「CreateUploadAttachedMedia」をご参照ください。
UploadOptions 次のパラメーターを含むアップロードパラメーター構造。
  • void (* uploadProgressCallback) (int64_t, int64_t): アップロードの進行状況のコールバックをカスタマイズします。 このパラメーターを設定しない場合、デフォルトのコールバックが使用されます。 このパラメーターをNULLに設定すると、アップロードの進行状況のコールバックは呼び出されません。
  • ecsRegionId: アップロードスクリプトがデプロイされるECSインスタンスのリージョンを指定します。 ECSインスタンスのリージョンがApsaraVideo VODのストレージリージョンと同じ場合、ファイルは内部ネットワーク経由で自動的にアップロードされます。
  • multipartUploadLimit: マルチパートアップロードの開始に基づくファイルサイズのしきい値をバイト単位で指定します。 デフォルト値は10 MBです。 このパラメーターは、動画のアップロードにのみ有効です。
  • multipartUploadOnceSize: マルチパートアップロードの各パートのサイズをバイト単位で指定します。 デフォルト値は10 MBです。 このパラメーターは、動画のアップロードにのみ有効です。
  • tmpDir: ダウンロードしたオンラインファイルを格納するローカルの一時ディレクトリを指定します。 このパラメーターは、オンラインファイルのアップロードに対してのみ有効です。
uploadLocalVideo ローカルビデオのアップロードに使用される方法。
uploadWebVideo オンラインビデオのアップロードに使用される方法。
uploadLocalImage ローカル画像のアップロードに使用される方法。
uploadWebImage オンライン画像のアップロードに使用される方法。
uploadLocalAttachedMedia ローカル補助メディア資産のアップロードに使用される方法。
uploadWebAttachedMedia オンライン補助メディア資産をアップロードするために使用される方法。
uploadLocalM3u8 ローカルM3U8ビデオのアップロードに使用される方法。
uploadWebM3u8 オンラインM3U8ビデオをアップロードするために使用される方法。
/VodSDK-C_1.0.0.gz解凍ディレクトリ /VodSDK-C_1.0.0/aliyun-c-sdk-vod/samples
ディレクトリ 説明
uploadVideo.cpp ビデオをアップロードするためのサンプルコード。
uploadImage.cpp 画像をアップロードするためのサンプルコード。
uploadAttachedMedia.cpp 補助メディア資産をアップロードするためのサンプルコード。