Tous les produits
Search
Centre de documentation

ApsaraVideo VOD:Utiliser le SDK de téléversement pour C/C++

Dernière mise à jour :Aug 10, 2026

Cette rubrique explique comment utiliser le SDK de téléversement côté serveur pour C ou C++ afin de téléverser des fichiers multimédias vers ApsaraVideo VOD.

Processus de téléversement

Le SDK de téléversement pour C ou C++ suit le processus général des SDK ApsaraVideo VOD. Pour plus d'informations, consultez la section Processus de téléversement. La suite décrit les étapes de base pour utiliser le SDK de téléversement côté serveur pour C ou C++ :

  1. Effectuez les configurations décrites dans la section Prérequis.

  2. Intégrez le SDK de téléversement côté serveur pour C ou C++. Pour plus d'informations, consultez la section Intégrer le SDK de téléversement côté serveur pour C ou C++.

  3. Configurez les informations de téléversement pour implémenter la logique de téléversement.

Prérequis

  • ApsaraVideo VOD est activé. Pour plus d'informations, consultez la page Activer ApsaraVideo VOD.

  • Les paramètres système requis pour le téléversement, y compris le chemin de stockage dans la région spécifiée et les paramètres de rappel, sont configurés. Pour plus d'informations, consultez les pages Gérer les buckets de stockage et Configurer les rappels.

  • Un utilisateur RAM est créé et utilisé pour accéder à ApsaraVideo VOD. Afin d'éviter les risques de sécurité liés à la divulgation de la paire de clés AccessKey de votre compte Alibaba Cloud, nous vous recommandons de créer un utilisateur RAM et de lui accorder les autorisations nécessaires pour accéder à ApsaraVideo VOD. Vous pouvez ensuite utiliser la paire de clés AccessKey de l'utilisateur RAM pour accéder à ApsaraVideo VOD. Pour plus d'informations, consultez la page Créer un utilisateur RAM et accorder des autorisations.

  • Configurez les variables d'environnement ALIBABA_CLOUD_ACCESS_KEY_ID et ALIBABA_CLOUD_ACCESS_KEY_SECRET. Pour plus d'informations, consultez la page Configurer les variables d'environnement sous Linux, macOS et Windows.

    Important
    • Une paire de clés AccessKey de compte Alibaba Cloud dispose d'autorisations sur toutes les opérations API. Utilisez la paire de clés AccessKey d'un utilisateur RAM pour appeler des opérations API ou effectuer des opérations de maintenance courantes.

    • N'intégrez pas directement votre ID de clé AccessKey et votre secret de clé AccessKey dans le code de votre projet. En cas de divulgation, toutes les ressources de votre compte seraient compromises.

  • (Facultatif) Créez un rôle pour l'utilisateur RAM et accordez-lui les autorisations nécessaires pour accéder à ApsaraVideo VOD si vous souhaitez y accéder via Security Token Service (STS). Pour plus d'informations, consultez la page Obtenir un jeton STS.

Intégrer le SDK de téléversement côté serveur pour C ou C++

Remarque
  • Le SDK de téléversement côté serveur pour C ou C++ ne peut être installé que sur le système d'exploitation Linux.

  • Cet exemple utilise la version 1.0.0 du SDK. Vous pouvez utiliser d'autres versions en fonction de vos besoins professionnels.

  • Pour plus d'informations sur les répertoires du SDK de téléversement côté serveur pour C ou C++ et sur les exemples de code, consultez la section Répertoires.

  • Cette rubrique décrit comment installer le SDK de téléversement côté serveur pour C ou C++ en tant qu'utilisateur non root et fournit des exemples de commandes d'installation.

Le tableau suivant décrit les packages logiciels requis, leur utilisation et des exemples d'installation.

Package logiciel

Description

Installation via YUM

Installation via des packages téléchargés depuis Internet

CMake

Compilateur tiers.

  • Version : 2.6.0 ou ultérieure

  • Exemple de code :

    sudo yum install cmake
  • Lien de téléchargement : CMake

  • Exemple de code :

    ./configure
        make
        make install

libcurl

Résout les problèmes de connexion réseau.

  • Version : 7.29.0 ou ultérieure

  • Exemple de code :

    sudo yum install libcurl-devel
  • Lien de téléchargement : libcurl

  • Exemple de code :

    ./configure
        make
        make install

libuuid

Génère des UUID.

Exemple de code :

sudo yum install libuuid-devel

Non applicable

apr

Non applicable

Exemple de code :

sudo yum install apr-devel
  • Lien de téléchargement : apr

  • Exemple de code :

    ./configure
        make
        make install

apr-util

Gère l'utilisation de la mémoire et les problèmes interplateformes.

Exemple de code :

sudo yum install apr-util
  • Lien de téléchargement : apr-util

  • Exemple de code :

    // Spécifiez le paramètre with-apr lors de l'installation du package. 
        ./configure --with-apr=/your/apr/install/path
        make
        make install

minixml

Analyse les données renvoyées au format XML.

Exemple de code :

sudo yum install mxml mxml-devel
  • Lien de téléchargement : minixml

  • Exemple de code :

    ./configure
        make
        make install

jsoncpp

Analyse les données renvoyées au format JSON.

Exemple de code :

sudo yum install jsoncpp-devel
  • Lien de téléchargement : jsoncpp

  • Exemple de code :

    ./configure
        make
        make install

SDK OSS

Avant d'utiliser le SDK de téléversement côté serveur pour C ou C++, vous devez télécharger et installer le SDK Object Storage Service (OSS) pour C ou C++.

Non applicable

Pour plus d'informations sur le lien de téléchargement et la procédure d'installation, consultez la page Installation (SDK C).

Important

Si certaines dépendances OSS ont déjà été installées, il n'est pas nécessaire de les installer à nouveau.

SDK de téléversement pour C ou C++

Téléverse des fichiers multimédias.

Non applicable

  • Exemple de code :

cmake .
make
make install

Répertoires

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

Répertoire

Description

CreateUploadVideoRequest

Classe de requête pour le téléversement de vidéos. Pour plus d'informations sur les paramètres, consultez la page CreateUploadVideo.

CreateUploadImageRequest

Classe de requête pour le téléversement d'images. Pour plus d'informations sur les paramètres, consultez la page CreateUploadImage.

CreateUploadAttachedMediaRequest

Classe de requête pour le téléversement de ressources multimédias auxiliaires. Pour plus d'informations sur les paramètres, consultez la page CreateUploadAttachedMedia.

UploadOptions

Structure des paramètres de téléversement. Les éléments suivants décrivent les paramètres.

  • void (*uploadProgressCallback) (int64_t, int64_t) : configure une fonction de rappel pour la progression du téléversement. Si vous ne définissez pas ce paramètre, les configurations de rappel par défaut sont utilisées. Si vous définissez ce paramètre sur NULL, aucun rappel de progression de téléversement n'est invoqué.

  • ecsRegionId : spécifie la région de l'instance ECS où le script de téléversement est déployé. Si la région ECS est identique à la région de stockage d'ApsaraVideo VOD, le fichier est automatiquement téléversé via le réseau interne.

  • multipartUploadLimit : spécifie la limite de taille de fichier pour le téléversement multipartie. Unité : octets. Valeur par défaut : 10 Mo. Ce paramètre est valide uniquement pour les téléversements de vidéos.

  • multipartUploadOnceSize : spécifie la taille de chaque partie lors du téléversement multipartie. Unité : octets. Valeur par défaut : 10 Mo. Ce paramètre est valide uniquement pour les téléversements de vidéos.

  • tmpDir : spécifie un répertoire local pour stocker temporairement les fichiers. Ce paramètre est valide uniquement pour le téléversement de fichiers en ligne.

uploadLocalVideo

Opération API utilisée pour téléverser des vidéos locales.

uploadWebVideo

Opération API utilisée pour téléverser des vidéos en ligne.

uploadLocalImage

Opération API utilisée pour téléverser des images locales.

uploadWebImage

Opération API utilisée pour téléverser des images en ligne.

uploadLocalAttachedMedia

Opération API utilisée pour téléverser des ressources multimédias auxiliaires locales.

uploadWebAttachedMedia

Opération API utilisée pour téléverser des ressources multimédias auxiliaires en ligne.

uploadLocalM3u8

Opération API utilisée pour téléverser des vidéos M3U8 locales.

uploadWebM3u8

Opération API utilisée pour téléverser des vidéos M3U8 en ligne.

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

|
**Répertoire**
|
**Description**
| | --- | --- | |
uploadVideo.cpp
|
Exemple de code pour le téléversement de vidéos.
| |
uploadImage.cpp
|
Exemple de code pour le téléversement d'images.
| |
uploadAttachedMedia.cpp
|
Exemple de code pour le téléversement de ressources multimédias auxiliaires.
|















Scénario 1 : Téléverser des fichiers audio et vidéo

Fichiers audio et vidéo standards

ApsaraVideo VOD vous permet de téléverser des fichiers audio ou vidéo selon l'une des méthodes suivantes :

  • Utilisez le téléversement multipartie pour téléverser un fichier local. Vous pouvez téléverser un fichier d'une taille maximale de 48,8 To. La reprise de téléversement n'est pas prise en charge. Pour plus d'informations, consultez la fonction testUploadLocalVideo dans l'exemple de code.

  • Utilisez l'URL du fichier pour téléverser un fichier en ligne. Vous pouvez téléverser un fichier d'une taille maximale de 48,8 To. Avant de téléverser des fichiers en ligne, vous devez les télécharger sur un disque local. Assurez-vous que le disque local dispose d'un espace suffisant. Pour plus d'informations, consultez la fonction testUploadWebVideo dans l'exemple de code suivant.

Afficher l'exemple de code

void testCallback(int64_t consumed_bytes, int64_t total_bytes)
{
    printf("total :%ld, %ld\n", consumed_bytes, total_bytes);
}
// Test the upload of a local video.
VodApiResponse testUploadLocalVideo(VodCredential authInfo) {
    CreateUploadVideoRequest request;
    // The name of the source file.
    request.fileName = "test.mp4";
    // The title of the video.
    request.title = "testVideo****";
    // The category ID of the video.
    request.cateId = "1";
    // The URL of the custom video thumbnail. Example: http://example.com/example-****.jpg.
    request.coverURL = "<your cover URL>";
    // The tags of the video.
    request.tags = "test1,test2";
    // The ID of the transcoding template group.
    request.templateGroupId = "6ae347b0140181ad371d197ebe28****";
    // The storage address. Example: example-bucket-****.oss-cn-shanghai.aliyuncs.com.
    requests.storageLocation = "<your torageLocation>";
    Json::Value userData;
    Json::Value callbackUrl;
    // The callback URL. Example: 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;
    // Specify the region of the ECS instance where the upload script is deployed. If the ECS region is the same as the storage region of ApsaraVideo VOD, the file is automatically uploaded over the internal network.
    //uploadOptions.ecsRegionId = "cn-shanghai";
    // Configure a callback function for the upload progress. If you do not set this parameter, the default callback configurations are used. If you set this parameter to NULL, no callback for the upload progress is invoked.
    //uploadOptions.uploadProgressCallback = testCallback;
    //uploadOptions.multipartUploadLimit = 20*1024*1024;// Specify the file size limit for multipart upload.
    //uploadOptions.multipartUploadOnceSize = 10*1024*1024;// Specify the size of each part in multipart upload.
    VodApiResponse result = uploadLocalVideo(authInfo, request, "./test.mp4", uploadOptions);
    return result;
}
// Test the upload of an online video.
VodApiResponse testUploadWebVideo(VodCredential authInfo) {
    CreateUploadVideoRequest request;
    request.fileName = "testWeb****.mp4";
    request.title = "testUploadWebVideo****";
    UploadOptions uploadOptions;
    // Specify the region of the ECS instance where the upload script is deployed. If the ECS region is the same as the storage region of ApsaraVideo VOD, the file is automatically uploaded over the internal network.
    //uploadOptions.ecsRegionId = "cn-shanghai";
    // Configure a callback function for the upload progress. If you do not set this parameter, the default callback configurations are used. If you set this parameter to NULL, no callback for the upload progress is invoked.
    //uploadOptions.uploadProgressCallback = testCallback;
    //uploadOptions.multipartUploadLimit = 20*1024*1024;// Specify the file size limit for multipart upload.
    //uploadOptions.multipartUploadOnceSize = 10*1024*1024;// Specify the size of each part in multipart upload.
    // Specify a local directory to temporarily store the downloaded online files. Default value: /tmp/.
    //uploadOptions.tmpDir = "/tmp/";
    VodApiResponse result = uploadWebVideo(authInfo, request, "<Your Download Url>", uploadOptions);
    return result;
}

####  Run the test code.   ####
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[]) {
    // The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. We recommend that you use a RAM user to call API operations or perform routine O&M. 
    // We recommend that you not include your AccessKey pair (AccessKey ID and AccessKey secret) in your project code. Otherwise, the AccessKey pair may be leaked and the security of all resources within your account may be compromised. 
    // In this example, ApsaraVideo VOD reads the AccessKey pair from the environment variables to implement identity verification for API access. Before you run the sample code, configure the environment variables ALIBABA_CLOUD_ACCESS_KEY_ID and 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());
}

Fichiers M3U8

Afficher l'exemple de code

void testCallback(int64_t consumed_bytes, int64_t total_bytes)
{
    printf("total :%ld, %ld\n", consumed_bytes, total_bytes);
}
// Test the upload of a local M3U8 video.
VodApiResponse testUploadLocalM3u8(VodCredential authInfo) {
    CreateUploadVideoRequest request;
    // The name of the source file.
    request.fileName = "testLocal****.m3u8";
    // The title of the video.
    request.title = "testUploadLocalM3u8****";
    list<string> tsList;
    // If you do not specify the URLs of part files, the files are automatically parsed.
    //tsList.push_back("/tmp/1.ts");
    UploadOptions uploadOptions;
    VodApiResponse result = uploadLocalM3u8(authInfo, request, "./test****.m3u8", tsList, uploadOptions);
    return result;
}
// Test the upload of an online M3U8 video.
VodApiResponse testUploadWebM3u8(VodCredential authInfo) {
    CreateUploadVideoRequest request;
    // The name of the source file.
    request.fileName = "testWeb****.m3u8";
    // The title of the video.
    request.title = "testUploadWebM3u8****";
    list<string> tsList;
    // If you do not specify the URLs of part files, the files are automatically parsed.
    //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;
}
####  Run the test code.   ####
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[]) {
    // The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. We recommend that you use a RAM user to call API operations or perform routine O&M. 
    // We recommend that you not include your AccessKey pair (AccessKey ID and AccessKey secret) in your project code. Otherwise, the AccessKey pair may be leaked and the security of all resources within your account may be compromised. 
    // In this example, ApsaraVideo VOD reads the AccessKey pair from the environment variables to implement identity verification for API access. Before you run the sample code, configure the environment variables ALIBABA_CLOUD_ACCESS_KEY_ID and 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());
}

Scénario 2 : Téléverser des images

Afficher l'exemple de code

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;
    // The type of the image.
    request.imageType = "default";
    // The title of the image.
    request.title = "testUploadLocalImage";
    UploadOptions uploadOptions;
    // Specify the region of the ECS instance where the upload script is deployed. If the ECS region is the same as the storage region of ApsaraVideo VOD, the file is automatically uploaded over the internal network.
    //uploadOptions.ecsRegionId = "cn-shanghai";
    // Configure a callback function for the upload progress. If you do not set this parameter, the default callback configurations are used. If you set this parameter to NULL, no callback for the upload progress is invoked.
    //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;
    // Specify the region of the ECS instance where the upload script is deployed. If the ECS region is the same as the storage region of ApsaraVideo VOD, the file is automatically uploaded over the internal network.
    //uploadOptions.ecsRegionId = "cn-shanghai";
    // Configure a callback function for the upload progress. If you do not set this parameter, the default callback configurations are used. If you set this parameter to NULL, no callback for the upload progress is invoked.
    //uploadOptions.uploadProgressCallback = testCallback;
    // Specify a local directory to temporarily store the downloaded online files. Default value: /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;
}

Afficher l'exemple de code

int main(int argc, char * argv[]) {
    // The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. We recommend that you use a RAM user to call API operations or perform routine O&M. 
    // We recommend that you not include your AccessKey pair (AccessKey ID and AccessKey secret) in your project code. Otherwise, the AccessKey pair may be leaked and the security of all resources within your account may be compromised. 
    // In this example, ApsaraVideo VOD reads the AccessKey pair from the environment variables to implement identity verification for API access. Before you run the sample code, configure the environment variables ALIBABA_CLOUD_ACCESS_KEY_ID and 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());
}

Scénario 3 : Téléverser des ressources multimédias auxiliaires

Afficher l'exemple de code

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;
    // The type of the auxiliary media asset.
    request.businessType = "watermark";'
    // The file name extension.
    request.mediaExt = "png";
    // The title of the auxiliary media asset.
    request.title = "testUploadLocalAttachedMedia";
    UploadOptions uploadOptions;
    // Specify the region of the ECS instance where the upload script is deployed. If the ECS region is the same as the storage region of ApsaraVideo VOD, the file is automatically uploaded over the internal network.
    //uploadOptions.ecsRegionId = "cn-shanghai";
    // Configure a callback function for the upload progress. If you do not set this parameter, the default callback configurations are used. If you set this parameter to NULL, no callback for the upload progress is invoked.
    //uploadOptions.uploadProgressCallback = testCallback;
    return uploadLocalAttachedMedia(authInfo, request, "./test.png", uploadOptions);
}

VodApiResponse testUploadWebAttachedMedia(VodCredential authInfo)
{
    CreateUploadAttachedMediaRequest request;
    // The type of the auxiliary media asset.
    request.businessType = "watermark";
    // The file name extension.
    request.mediaExt = "png";
    // The title of the auxiliary media asset.
    request.title = "testUploadWebAttachedMedia";
    UploadOptions uploadOptions;
    // Specify the region of the ECS instance where the upload script is deployed. If the ECS region is the same as the storage region of ApsaraVideo VOD, the file is automatically uploaded over the internal network.
    //uploadOptions.ecsRegionId = "cn-shanghai";
    // Configure a callback function for the upload progress. If you do not set this parameter, the default callback configurations are used. If you set this parameter to NULL, no callback for the upload progress is invoked.
    //uploadOptions.uploadProgressCallback = testCallback;
    // Specify a local directory to temporarily store the downloaded online files. Default value: /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;
}

Afficher l'exemple de code

int main(int argc, char * argv[]) {
    // The AccessKey pair of an Alibaba Cloud account has permissions on all API operations. We recommend that you use a RAM user to call API operations or perform routine O&M. 
    // We recommend that you not include your AccessKey pair (AccessKey ID and AccessKey secret) in your project code. Otherwise, the AccessKey pair may be leaked and the security of all resources within your account may be compromised. 
    // In this example, ApsaraVideo VOD reads the AccessKey pair from the environment variables to implement identity verification for API access. Before you run the sample code, configure the environment variables ALIBABA_CLOUD_ACCESS_KEY_ID and 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());
}