このトピックでは、CまたはC ++ 用のサーバーアップロードSDKを使用してメディアファイルをApsaraVideo VODにアップロードする方法について説明します。
アップロードのプロセス
CまたはC ++ のサーバーアップロードSDKで使用される内部アップロードロジックは、サーバーアップロードSDKの一般的なアップロードプロセスと同じです。 詳細については、t1959334.html#section_xp5_uw7_di1トピックの「アップロードプロセス」セクションを参照してください。 次のコンテンツでは、CまたはC ++ 用のサーバーアップロードSDKを使用する基本的なプロセスについて説明します。
- 前提条件を完了します。 詳細については、「前提条件」セクションをご参照ください。
- CまたはC ++ 用のアップロードSDKを統合します。 詳細については、CまたはC ++ 用のアップロードSDKの統合のセクションをご参照ください。
- アップロードロジックを実装します。 これにはアップロード情報の設定が含まれます。
- オーディオおよびビデオファイルをアップロードするためのサンプルコードの詳細については、オーディオおよびビデオファイルのアップロードのセクションを参照してください。
- 画像をアップロードするためのサンプルコードの詳細については、画像のアップロードのセクションを参照してください。
- 補助メディアアセットをアップロードするためのサンプルコードの詳細については、補助メディア資産のアップロードのセクションを参照してください。
CまたはC ++ 用のアップロードSDKの統合
注
- この例では、SDK V1.0.0が使用されています。 ビジネス要件に基づいて他のバージョンを使用できます。
- アップロードSDK For CまたはC ++ のディレクトリと解凍後のサンプルコードの詳細については、「アップロードSDK for CまたはC ++ のディレクトリ」をご参照ください。
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関数を参照してください。
サンプルコード
M3U8ファイル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());
}
サンプルコード
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 | 次のパラメーターを含むアップロードパラメーター構造。
|
uploadLocalVideo | ローカルビデオのアップロードに使用される方法。 |
uploadWebVideo | オンラインビデオのアップロードに使用される方法。 |
uploadLocalImage | ローカル画像のアップロードに使用される方法。 |
uploadWebImage | オンライン画像のアップロードに使用される方法。 |
uploadLocalAttachedMedia | ローカル補助メディア資産のアップロードに使用される方法。 |
uploadWebAttachedMedia | オンライン補助メディア資産をアップロードするために使用される方法。 |
uploadLocalM3u8 | ローカルM3U8ビデオのアップロードに使用される方法。 |
uploadWebM3u8 | オンラインM3U8ビデオをアップロードするために使用される方法。 |
ディレクトリ | 説明 |
---|---|
uploadVideo.cpp | ビデオをアップロードするためのサンプルコード。 |
uploadImage.cpp | 画像をアップロードするためのサンプルコード。 |
uploadAttachedMedia.cpp | 補助メディア資産をアップロードするためのサンプルコード。 |