日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

使用C/C++ SDK上傳文件

本文通過示例詳細介紹如何使用服務端上傳SDK(C/C++語言)將各類媒體文件上傳至點播存儲。

整體說明

從內部邏輯角度看,C/C++上傳SDK遵循點播服務端SDK的通用流程。詳情請參見上傳流程。從操作角度看,使用C/C++上傳SDK的基礎流程如下:

  1. 完成前提條件。請參見前提條件

  2. 集成C/C++上傳SDK。請參見集成C/C++上傳SDK

  3. 實現上傳邏輯(主要是上傳信息配置)。

前提條件

  • 您已經開通了視頻點播服務。開通步驟請參見開通視頻點播服務

  • 您已經完成上傳相關的系統配置,包括啟用目標存儲地域的存儲地址和配置回調。操作指引請參見管理存儲Bucket回調設置

  • 您已準備好用于調用點播服務的賬號。為避免阿里云賬號AccessKey泄露帶來的安全風險,推薦您創建RAM用戶并授予其VOD相關權限。然后使用RAM用戶的AK對(AccessKey ID和AccessKey Secret)訪問點播服務。操作指引請參見創建RAM用戶并授權

  • 已配置環境變量ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET。具體操作,請參見在Linux、macOS和Windows系統配置環境變量

    重要
    • 阿里云賬號的AccessKey擁有所有API的訪問權限,建議您使用RAM用戶的AccessKey進行API訪問或日常運維。

    • 強烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導致AccessKey泄露,威脅您賬號下所有資源的安全。

  • (可選)如需使用STS臨時授權方式(阿里云Security Token Service)訪問點播服務,請為RAM用戶創建角色并授予角色VOD相關權限。操作指引請參見使用STS臨時授權方案上傳視頻

    說明

    STS臨時授權方式的適用場景請參見憑證方式與STS方式對比

集成C/C++上傳SDK

說明
  • 視頻點播服務端C/C++上傳SDK僅支持Linux環境。

  • 此處以SDK1.0.0版本舉例說明。其他版本請根據實際情況操作。

  • 上傳SDK及示例代碼解壓后的目錄詳細信息,請參見下文目錄說明

  • 本文以普通用戶執行操作為例進行安裝命令說明。

使用視頻點播服務端C/C++上傳SDK,您必須要安裝的軟件包及其用途、安裝示例請參見下述表格。

軟件包

作用

yum安裝示例

網上下載安裝示例

CMake

第三方編譯安裝工具

  • 版本:建議使用2.6.0及以上版本。

  • 安裝示例:

    sudo yum install cmake
  • 下載地址:CMake

  • 安裝示例:

    ./configure
    make
    make install

libcurl

解決網絡連接等問題

  • 版本:建議使用7.29.0 及以上版本。

  • 安裝示例:

    sudo yum install libcurl-devel
  • 下載地址:libcurl

  • 安裝示例:

    ./configure
    make
    make install

libuuid

生成uuid

安裝示例:

sudo yum install libuuid-devel

不涉及

apr

不涉及

安裝示例:

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

由于上傳SDK依賴OSS,需要下載并安裝OSS SDK

不涉及

下載地址和安裝步驟,請參見OSS SDK安裝

重要

有部分OSS依賴庫已經在前面步驟進行安裝,已經安裝的不需要再次進行重復安裝。

C/C++上傳SDK

上傳文件

不涉及

下載地址:上傳SDK

安裝示例:

cmake .
make
make install

更新C/C++上傳SDK

若發現新的接口或已有接口新的功能在當前SDK沒有,請下載最新的C/C++上傳SDK覆蓋到本地SDK文件。更多信息,請參見上傳SDK

說明

您可以打開aliyun-c-sdk-vod目錄下的ChangeLog.txt文件查看當前SDK的版本號和發布日期。

C/C++上傳SDK目錄說明

/VodSDK-C_1.0.0.gz解壓目錄/VodSDK-C_1.0.0/aliyun-c-sdk-vod/src/upload.h

目錄

說明

CreateUploadVideoRequest

上傳視頻的請求類,字段請參見獲取音視頻上傳地址和憑證

CreateUploadImageRequest

上傳圖片的請求類,字段請參見獲取圖片上傳地址和憑證

CreateUploadAttachedMediaRequest

上傳輔助媒資的請求類,字段請參見獲取輔助媒資上傳地址和憑證

UploadOptions

上傳參數結構體,包含如下參數:

  • void (*uploadProgressCallback) (int64_t, int64_t):用于實現自定義上傳進度回調,如果不設置則使用默認,設置為NULL則不進行回調。

  • ecsRegionId:設置上傳腳本部署的ECS區域(如果有),如果與視頻點播存儲同一區域會自動啟用內網上傳。

  • 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

上傳輔助媒資的示例代碼。

場景一:上傳音視頻

普通音視頻

音視頻上傳目前支持以下類型文件上傳:

  • 上傳本地文件,使用分片上傳,最大支持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地址,coverURL示例:http://example.com/example-****.jpg
    request.coverURL = "<your cover URL>";
    //視頻標簽
    request.tags = "test1,test2";
    //轉碼模板組ID
    request.templateGroupId = "6ae347b0140181ad371d197ebe28****";
    //存儲地址,storageLocation示例:example-bucket-****.oss-cn-shanghai.aliyuncs.com
    requests.storageLocation = "<your torageLocation>";
    Json::Value userData;
    Json::Value callbackUrl;
    //CallbackURL示例: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區域(如果有),如與視頻點播存儲同一區域會自動啟用內網上傳
    //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區域(如果有),如與視頻點播存儲同一區域會自動啟用內網上傳
    //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[]) {
    // 阿里云賬號AccessKey擁有所有API的訪問權限,建議您使用RAM用戶進行API訪問或日常運維。
    // 強烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導致AccessKey泄露,威脅您賬號下所有資源的安全。
    // 本示例通過從環境變量中讀取AccessKey,來實現API訪問的身份驗證。運行代碼示例前,請配置環境變量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;
    //注意:如果不添加則會自動解析
    //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;
    //注意:如果不添加則會自動解析
    //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[]) {
    // 阿里云賬號AccessKey擁有所有API的訪問權限,建議您使用RAM用戶進行API訪問或日常運維。
    // 強烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導致AccessKey泄露,威脅您賬號下所有資源的安全。
    // 本示例通過從環境變量中讀取AccessKey,來實現API訪問的身份驗證。運行代碼示例前,請配置環境變量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());
}

場景二:上傳圖片

展開查看部分示例代碼

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區域(如有),如與點播存儲同一區域會自動啟用內網上傳
    //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區域(如有),如與點播存儲同一區域會自動啟用內網上傳
    //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[]) {
    // 阿里云賬號AccessKey擁有所有API的訪問權限,建議您使用RAM用戶進行API訪問或日常運維。
    // 強烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導致AccessKey泄露,威脅您賬號下所有資源的安全。
    // 本示例通過從環境變量中讀取AccessKey,來實現API訪問的身份驗證。運行代碼示例前,請配置環境變量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());
}

場景三:上傳輔助媒資

展開查看部分示例代碼

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區域(如有),如與點播存儲同一區域會自動啟用內網上傳
    //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區域(如有),如與點播存儲同一區域會自動啟用內網上傳
    //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[]) {
    // 阿里云賬號AccessKey擁有所有API的訪問權限,建議您使用RAM用戶進行API訪問或日常運維。
    // 強烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導致AccessKey泄露,威脅您賬號下所有資源的安全。
    // 本示例通過從環境變量中讀取AccessKey,來實現API訪問的身份驗證。運行代碼示例前,請配置環境變量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());
}

相關文檔

媒體上傳概述

STS SDK概覽