Tous les produits
Search
Centre de documentation

ApsaraVideo VOD:Téléchargement sécurisé

Dernière mise à jour :Aug 10, 2026

La fonctionnalité de téléchargement sécurisé du SDK ApsaraVideo Player chiffre les vidéos téléchargées sur votre appareil local. Les vidéos chiffrées ne peuvent être lues qu'à l'aide du fichier de clé généré par l'application que vous avez spécifiée, ce qui empêche toute lecture ou distribution malveillante.

Important

Pour tout le code et les détails d'implémentation liés aux fonctionnalités décrits dans cette rubrique, nous vous recommandons de consulter le projet de démonstration API-Example et d'adapter le code selon les bonnes pratiques.

Pour des implémentations spécifiques, reportez-vous au code source du module Video Download and Offline Playback dans API-Example-Android et API-Example-iOS.

Vue d'ensemble

ApsaraVideo VOD prend en charge le téléchargement de vidéos sur les appareils mobiles pour une lecture hors ligne selon deux modes :

  • Téléchargement sécurisé (recommandé) : les vidéos téléchargées via ce mode sont chiffrées par Alibaba Cloud et ne peuvent être déchiffrées qu'avec des fichiers de clé. Les vidéos ne peuvent être lues qu'avec ApsaraVideo Player.

  • Téléchargement standard : les vidéos téléchargées via ce mode ne sont pas chiffrées par Alibaba Cloud et peuvent être copiées et lues avec n'importe quel lecteur. Soyez prudent lorsque vous utilisez le mode de téléchargement standard.

Le téléchargement sécurisé garantit le chiffrement des vidéos téléchargées. Ces vidéos ne peuvent être lues que par l'application que vous avez spécifiée lors de la génération du fichier de clé dans la console ApsaraVideo VOD. Par rapport au téléchargement standard, le téléchargement sécurisé protège mieux les droits d'auteur des vidéos téléchargées et est recommandé pour la plupart des scénarios.

Limites

  • Pour utiliser la fonctionnalité de téléchargement sécurisé, vous devez intégrer le SDK ApsaraVideo Player.

  • Le SDK ApsaraVideo Player prend en charge le téléchargement sécurisé uniquement via VidSts et VidAuth.

  • Les vidéos téléchargées en mode de téléchargement sécurisé sont chiffrées sur l'appareil local et ne peuvent être lues que dans le SDK ApsaraVideo Player de l'application que vous avez spécifiée.

Prérequis

Implémentation principale pour Android

Paramètres de téléchargement sécurisé

  1. Configurez le fichier de vérification chiffré pour activer les téléchargements sécurisés.

    Configurez le fichier de clé généré dans la console ApsaraVideo VOD au sein du SDK ApsaraVideo Player. Ce fichier sert à chiffrer et déchiffrer les vidéos lors du téléchargement et de la lecture. Pour savoir comment générer un fichier de clé, consultez Téléchargement sécurisé.

    Remarque

    Assurez-vous que les informations contenues dans le fichier de clé correspondent à celles de l'application que vous avez spécifiée. Sinon, le téléchargement de la vidéo échouera.

    Nous vous recommandons d'effectuer cette configuration une seule fois dans l'Application. Voici un exemple :

    PrivateService.initService(getApplicationContext(),  "Path to encryptedApp.dat file"); // We recommend storing the encryptedApp.dat verification file on the phone and setting its local file path here.
  2. Créez et configurez le téléchargeur.

    Créez un téléchargeur à l'aide d'AliDownloaderFactory. Exemple :

    AliMediaDownloader mAliDownloader = null;
    ......
    // Create downloader.
    mAliDownloader = AliDownloaderFactory.create(getApplicationContext());
    // Configure download save path.
    mAliDownloader.setSaveDir("Save folder path");
  3. Définissez les écouteurs d'événements.

    Le téléchargeur propose plusieurs écouteurs d'événements. Exemple :

    Développer pour afficher le code

    mAliDownloader.setOnPreparedListener(new AliMediaDownloader.OnPreparedListener() {
       @Override
       public void onPrepared(MediaInfo mediaInfo) {
           // Download item prepared successfully.
       }
    });
    mAliDownloader.setOnProgressListener(new AliMediaDownloader.OnProgressListener() {
       @Override
       public void onDownloadingProgress(int percent) {
           // Download progress percentage.
       }
       @Override
       public void onProcessingProgress(int percent) {
           // Processing progress percentage.
       }
    });
    mAliDownloader.setOnErrorListener(new AliMediaDownloader.OnErrorListener() {
       @Override
       public void onError(ErrorInfo errorInfo) {
           // Download error.
       }
    });
    mAliDownloader.setOnCompletionListener(new AliMediaDownloader.OnCompletionListener() {
       @Override
       public void onCompletion() {
           // Download successful.
       }
    });
  4. Préparez la source de téléchargement.

    Préparez la source de téléchargement à l'aide de la méthode prepare. Les sources de téléchargement prennent en charge les méthodes VidSts et VidAuth. Exemples :

    • VidSts

      // Create VidSts
      VidSts aliyunVidSts = new VidSts();
      aliyunVidSts.setVid("Vid information"); // Video ID (VideoId).
      aliyunVidSts.setAccessKeyId("<yourAccessKeyId>"); // AccessKey ID of the temporary STS AccessKey pair, generated by calling the AssumeRole operation of the Security Token Service (STS).
      aliyunVidSts.setAccessKeySecret("<yourAccessKeySecret>"); // AccessKey secret of the temporary STS AccessKey pair, generated by calling the AssumeRole operation of the Security Token Service (STS).
      aliyunVidSts.setSecurityToken("<yourSecurityToken>"); // Security Token Service (STS) token, generated by calling the AssumeRole operation of the Security Token Service (STS).
      aliyunVidSts.setRegion("region"); // The region of the video-on-demand (VOD) service. Default value: cn-shanghai.
      // If you have enabled HLS encryption parameter pass-through in the VOD console and the default parameter name is MtsHlsUriToken,
      // you must set the config and pass it into the vid, as shown below.
      // If you have not enabled HLS encryption parameter pass-through in the VOD console, skip the following code.
      VidPlayerConfigGen vidConfig = new VidPlayerConfigGen();
      vidConfig.setMtsHlsUriToken("<yourMtsHlsUriToken>");
      aliyunVidSts.setPlayerConfig(vidConfig);
              
      
      // Prepare the download source
      mAliDownloader.prepare(aliyunVidSts)
    • VidAuth

      // Create VidAuth.
      VidAuth vidAuth = new VidAuth();
      vidAuth.setVid("Vid info");// Video ID.
      vidAuth.setPlayAuth("<yourPlayAuth>");// Playback credential, generated by calling VOD GetVideoPlayAuth API.
      vidAuth.setRegion("Access region");// For player SDK version 5.5.5.0 and later, this parameter is deprecated and not required; the player automatically parses the region. For versions before 5.5.5.0, this parameter is required; VOD access region default is cn-shanghai.
      // If you enabled HLS standard encryption parameter pass-through in VOD console with default parameter name MtsHlsUriToken, set config and pass it to vid as follows.
      VidPlayerConfigGen vidConfig = new VidPlayerConfigGen();
      vidConfig.setMtsHlsUriToken("<yourMtsHlsUriToken>");
      vidAuth.setPlayerConfig(config);
      // Prepare download source.
      mAliDownloader.prepare(vidAuth);
    Remarque
    • Le format du fichier source correspond au format du fichier téléchargé ; la modification n'est pas prise en charge.

    • Si vous avez activé le transfert de paramètres de chiffrement standard HLS dans la console VOD avec le nom de paramètre par défaut MtsHlsUriToken, consultez Transfert de paramètres de chiffrement standard HLS, puis définissez la valeur MtsHlsUriToken dans la source VOD comme indiqué ci-dessus.

  5. Une fois la préparation réussie, sélectionnez l'élément à télécharger et lancez le téléchargement.

    Après une préparation réussie, la méthode OnPreparedListener est appelée. L'objet TrackInfo renvoyé contient des informations telles que la définition du flux vidéo. Sélectionnez une piste (Track) à télécharger. Exemple :

    public void onPrepared(MediaInfo mediaInfo) {
        // Download item prepared successfully.
        List<TrackInfo> trackInfos = mediaInfo.getTrackInfos();
        // For example: download the first TrackInfo.
        mAliDownloader.selectItem(trackInfos.get(0).getIndex());
        // Start download.
        mAliDownloader.start();
    }
  6. (Facultatif) Mettez à jour la source de téléchargement.

    Pour éviter l'expiration des identifiants VidSts et VidAuth, vous pouvez mettre à jour les informations de la source de téléchargement et lancer le téléchargement. Exemple :

    // Update download source.
    mAliDownloader.updateSource(VidSts);
    // Start download.
    mAliDownloader.start();
  7. Une fois le téléchargement terminé ou en cas d'échec, libérez le téléchargeur.

    Après un téléchargement réussi, appelez release dans le rappel onCompletion ou onError pour libérer le téléchargeur. Exemple :

    mAliDownloader.stop();
    mAliDownloader.release();
  8. Facultatif : Supprimez les fichiers téléchargés.

    Vous pouvez supprimer les fichiers téléchargés pendant ou après le téléchargement. Exemple :

    // Delete file via object.
    mAliDownloader.deleteFile();
    // Delete via static method; returns 0 if successful.
    AliDownloaderFactory.deleteFile("Path to download folder","Video ID","Video format","Downloaded video index");

Lire les vidéos téléchargées

Les vidéos téléchargées ne peuvent être lues qu'à l'aide d'URL de lecture dans le SDK ApsaraVideo Player. Pour lire une vidéo téléchargée, procédez comme suit :

  1. Une fois le téléchargement terminé, obtenez le chemin absolu du fichier vidéo.

    String path = mAliDownloader.getFilePath();
  2. Définissez le chemin absolu via VOD UrlSource pour la lecture.

     UrlSource urlSource = new UrlSource();
            urlSource.setUri("Playback address");// Set absolute path of downloaded video.
            aliPlayer.setDataSource(urlSource);

Les vidéos téléchargées à l'aide de la méthode playAuth contiennent un seul flux vidéo correspondant à la définition que vous avez sélectionnée lors du téléchargement. Une fois la vidéo téléchargée, vous ne pouvez pas changer de définition. Si vous avez besoin d'une vidéo avec une définition différente, vous devez télécharger à nouveau la version correspondante.

Implémentation principale pour iOS

Paramètres de téléchargement sécurisé

  1. Configurez le fichier de vérification chiffré pour activer les téléchargements sécurisés.

    Configurez le fichier de clé généré dans la console ApsaraVideo VOD au sein du SDK ApsaraVideo Player. Ce fichier sert à chiffrer et déchiffrer les vidéos lors du téléchargement et de la lecture. Pour savoir comment générer un fichier de clé, consultez Téléchargement sécurisé.

    Remarque

    Assurez-vous que les informations contenues dans le fichier de clé correspondent à celles de l'application que vous avez spécifiée. Sinon, le téléchargement de la vidéo échouera.

    Nous vous recommandons d'effectuer cette configuration une seule fois par application. Voici un exemple :

    NSString *encrptyFilePath = [[NSBundle mainBundle] pathForResource:@"encryptedApp" ofType:@"dat"];
    [AliPrivateService initKey:encrptyFilePath];
  2. Créez et configurez le téléchargeur.

    Le code suivant fournit un exemple :

    AliMediaDownloader *downloader = [[AliMediaDownloader alloc] init];
    [downloader setSaveDirectory:self.downLoadPath];
    [downloader setDelegate:self];
  3. Définissez les écouteurs d'événements.

    Le téléchargeur prend en charge plusieurs écouteurs d'événements. Le code suivant fournit un exemple :

    -(void)onPrepared:(AliMediaDownloader *)downloader mediaInfo:(AVPMediaInfo *)info {
        // A download item is successfully prepared.
    }
    -(void)onError:(AliMediaDownloader *)downloader errorModel:(AVPErrorModel *)errorModel {
        // An error occurred during download.
    }
    -(void)onDownloadingProgress:(AliMediaDownloader *)downloader percentage:(int)percent {
        // Download progress percentage.
    }
    -(void)onProcessingProgress:(AliMediaDownloader *)downloader percentage:(int)percent {
        // Processing progress percentage.
    }
    -(void)onCompletion:(AliMediaDownloader *)downloader {
        // The download is successful.
    }
  4. Préparez la source de téléchargement.

    Appelez la méthode prepare pour préparer la source de téléchargement. Les sources VidSts et VidAuth sont prises en charge. Le code suivant fournit un exemple :

    • VidSts

      // Create a VidSts source.
      AVPVidStsSource* stsSource = [[AVPVidStsSource alloc] init];
      stsSource.region = @"your_region"; // Your ApsaraVideo VOD service region. Default value: cn-shanghai.
      stsSource.vid = @"your_video_id"; // The video ID.
      stsSource.securityToken = @"<yourSecurityToken>"; // The STS security token. To get this token, call the STS AssumeRole operation.
      stsSource.accessKeySecret = @"<yourAccessKeySecret>"; // The AccessKey secret of the temporary STS credential. To get this secret, call the STS AssumeRole operation.
      stsSource.accessKeyId = @"<yourAccessKeyId>"; // The AccessKey ID of the temporary STS credential. To get this ID, call the STS AssumeRole operation.
      
      // If you have enabled parameter pass-through for HLS encryption in the ApsaraVideo VOD console
      // and the default parameter name is MtsHlsUriToken, you must set the config and pass it to the VidSts source.
      // If this feature is not enabled, you can skip the following code.
      VidPlayerConfigGenerator* vp = [[VidPlayerConfigGenerator alloc] init];
      [vp setHlsUriToken:yourMtsHlsUriToken];
      stsSource.playConfig = [vp generatePlayerConfig];
      // Prepare the download source.
      [downloader prepareWithVid:stsSource];
    • VidAuth

      // Create a VidAuth source.
      AVPVidAuthSource *authSource = [[AVPVidAuthSource alloc] init];
      authSource.vid = @"your_video_id"; // The video ID.
      authSource.playAuth = @"<yourPlayAuth>"; // The playback credential. To get this credential, call the ApsaraVideo VOD GetVideoPlayAuth operation.
      authSource.region = @"your_region"; // Deprecated in ApsaraVideo Player SDK V5.5.5.0 and later because the player automatically parses the region.
      // Required for earlier versions.
      // Your ApsaraVideo VOD service region. Default value: cn-shanghai.
      // If you have enabled parameter pass-through for HLS encryption in the ApsaraVideo VOD console
      // and the default parameter name is MtsHlsUriToken, you must set the config and pass it to the VidAuth source.
      // If this feature is not enabled, you can skip the following code.
      VidPlayerConfigGenerator* vp = [[VidPlayerConfigGenerator alloc] init];
      [vp setHlsUriToken:yourMtsHlsUriToken];
      authSource.playConfig = [vp generatePlayerConfig];
      // Prepare the download source.
      [downloader prepareWithVid:authSource];
    Remarque

    Si vous activez le transfert de paramètres pour le chiffrement HLS dans la console ApsaraVideo VOD et que le nom de paramètre par défaut est MtsHlsUriToken, vous devez définir la valeur MtsHlsUriToken dans la source de téléchargement comme indiqué dans le code ci-dessus. Pour plus d'informations, consultez transfert de paramètres pour le chiffrement HLS.

  5. Sélectionnez une piste vidéo une fois la source préparée.

    Une fois la source de téléchargement préparée, la méthode onPrepared est appelée. Le paramètre mediaInfo du rappel contient des informations sur chaque piste vidéo disponible, telles que la qualité vidéo. Sélectionnez une piste à télécharger. Le code suivant fournit un exemple :

    -(void)onPrepared:(AliMediaDownloader *)downloader mediaInfo:(AVPMediaInfo *)info {
        NSArray<AVPTrackInfo*>* tracks = info.tracks;
        // For example, to download the first track:
        [downloader selectTrack:[tracks objectAtIndex:0].trackIndex];
    }
  6. Mettez à jour la source de téléchargement et lancez le téléchargement.

    Pour éviter l'expiration des identifiants VidSts et VidAuth, nous vous recommandons de mettre à jour les informations de la source avant de lancer le téléchargement. Le code suivant fournit un exemple :

    // Update the download source.
    [downloader updateWithVid:vidSource]
    // Start the download.
    [downloader start];
  7. Libérez le téléchargeur une fois le téléchargement terminé ou en cas d'échec.

    Appelez la méthode destroy pour libérer le téléchargeur.

    [self.downloader destroy];
    self.downloader = nil;

Lire les vidéos téléchargées

Les vidéos téléchargées ne peuvent être lues qu'à l'aide d'URL de lecture dans le SDK ApsaraVideo Player. Pour lire une vidéo téléchargée, procédez comme suit :

  1. Obtenez le chemin absolu du fichier vidéo téléchargé.

    Remarque

    Nous vous recommandons de générer le chemin absolu d'un fichier vidéo téléchargé de la manière suivante : obtenez le chemin de stockage personnalisé et le nom du fichier à partir de downloadedFilePath, récupérez le répertoire sandbox, puis concaténez-les.

    NSString *downloadedFilePath = downloader.downloadedFilePath;
  2. Utilisez un VOD UrlSource pour définir le chemin absolu pour la lecture.

    AVPUrlSource *urlSource = [[AVPUrlSource alloc] 
    urlWithString:downloadedFilePath];
    [self.player setUrlSource:urlSource];

Les vidéos téléchargées à l'aide de la méthode playAuth contiennent un seul flux vidéo correspondant à la définition que vous avez sélectionnée lors du téléchargement. Une fois la vidéo téléchargée, vous ne pouvez pas changer de définition. Si vous avez besoin d'une vidéo avec une définition différente, vous devez télécharger à nouveau la version correspondante.