Todos os produtos
Search
Central de documentação

ApsaraVideo VOD:Baixe seguro

Última atualização: Jun 27, 2026

O recurso de baixe seguro do ApsaraVideo Player SDK criptografa os vídeos baixados para o dispositivo local. A reprodução dos vídeos criptografados ocorre apenas com o arquivo de chave gerado pelo aplicativo especificado, o que impede a reprodução ou distribuição maliciosa.

Importante

Para todo o código e detalhes de implementação relacionados aos recursos neste tópico, consulte o projeto de demonstração API-Example e adapte o código conforme as melhores práticas.

Para implementações específicas, consulte o código-fonte do módulo Video Download and Offline Playback em API-Example-Android e API-Example-iOS.

Visão geral

O ApsaraVideo VOD permite baixar vídeos para dispositivos móveis para reprodução offline em dois modos:

  • Baixe seguro (recomendado): a Alibaba Cloud criptografa os vídeos baixados neste modo, e a descriptografia exige arquivos de chave. A reprodução dos vídeos é possível apenas no ApsaraVideo Player.

  • Baixe normal: a Alibaba Cloud não criptografa os vídeos baixados neste modo; você pode copiá-los e reproduzi-los em qualquer player. Tenha cautela ao usar o modo de baixe normal.

O baixe seguro garante a criptografia dos vídeos baixados. Apenas o aplicativo especificado durante a geração do arquivo de chave no console do ApsaraVideo VOD consegue reproduzir esses vídeos. Comparado ao baixe normal, o baixe seguro protege melhor os direitos autorais dos vídeos e é recomendado para a maioria dos cenários.

Limites

  • Integre o ApsaraVideo Player SDK para usar o recurso de baixe seguro.

  • O ApsaraVideo Player SDK oferece suporte a baixe seguro apenas com VidSts e VidAuth.

  • Os vídeos baixados no modo seguro permanecem criptografados no dispositivo local e só podem ser reproduzidos pelo ApsaraVideo Player SDK no aplicativo definido por você.

Pré-requisitos

Implementação principal no Android

Configurações de baixe seguro

  1. Configure o arquivo de verificação criptografado para ativar downloads seguros.

    Defina no ApsaraVideo Player SDK o arquivo de chave gerado no console do ApsaraVideo VOD. Esse arquivo serve para criptografar e descriptografar vídeos durante o baixe e a reprodução. Para saber como gerar um arquivo de chave, consulte Baixe seguro.

    Nota

    Certifique-se de que as informações no arquivo de chave correspondam às informações do aplicativo especificadas. Caso contrário, o baixe do vídeo falhará.

    Realize essa configuração apenas uma vez na Application. Visualize o exemplo:

    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. Crie e defina o downloader.

    Use o AliDownloaderFactory para criar um downloader. Exemplo:

    AliMediaDownloader mAliDownloader = null;
    ......
    // Create downloader.
    mAliDownloader = AliDownloaderFactory.create(getApplicationContext());
    // Configure download save path.
    mAliDownloader.setSaveDir("Save folder path");
  3. Defina os listeners de eventos.

    O downloader disponibiliza diversos listeners de eventos. Exemplo:

    Expand to view 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. Prepare a fonte de baixe.

    Use o método prepare para preparar a fonte de baixe. As fontes oferecem suporte aos métodos VidSts e VidAuth. Exemplos:

    • 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);
    Nota
    • O formato do arquivo de origem corresponde ao formato do arquivo baixado; não há suporte para alteração.

    • Se você ativou o repasse de parâmetros de criptografia padrão HLS no console do VOD com o nome de parâmetro padrão MtsHlsUriToken, consulte Repasse de parâmetros de criptografia padrão HLS e defina o valor MtsHlsUriToken na fonte VOD conforme mostrado acima.

  5. Após a preparação bem-sucedida, selecione o item de baixe e inicie o baixe.

    Quando a preparação é concluída com sucesso, o método OnPreparedListener é chamado. O TrackInfo retornado contém informações como a definição do fluxo de vídeo. Selecione uma Track para baixe. Exemplo:

    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. (Opcional) Atualize a fonte de baixe.

    Para evitar a expiração de VidSts e VidAuth, atualize as informações da fonte de baixe antes de iniciar o processo. Exemplo:

    // Update download source.
    mAliDownloader.updateSource(VidSts);
    // Start download.
    mAliDownloader.start();
  7. Após o sucesso ou falha do baixe, libere o downloader.

    Ao concluir o baixe, chame release no callback onCompletion ou onError para liberar o downloader. Exemplo:

    mAliDownloader.stop();
    mAliDownloader.release();
  8. Opcional: Exclua os arquivos baixados.

    É possível excluir arquivos baixados durante ou após o baixe. Exemplo:

    // 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");

Reproduzir vídeos baixados

A reprodução de vídeos baixados só é possível mediante URLs de reprodução no ApsaraVideo Player SDK. Siga as etapas abaixo para reproduzir um vídeo baixado:

  1. Após a conclusão do baixe, obtenha o caminho absoluto do arquivo de vídeo.

    String path = mAliDownloader.getFilePath();
  2. Defina o caminho absoluto via UrlSource do VOD para reprodução.

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

Implementação principal no iOS

Configurações de baixe seguro

  1. Configure o arquivo de verificação criptografado para ativar downloads seguros.

    Defina no ApsaraVideo Player SDK o arquivo de chave gerado no console do ApsaraVideo VOD. Esse arquivo serve para criptografar e descriptografar vídeos durante o baixe e a reprodução. Para saber como gerar um arquivo de chave, consulte Baixe seguro.

    Nota

    Certifique-se de que as informações no arquivo de chave correspondam às informações do aplicativo especificadas. Caso contrário, o baixe do vídeo falhará.

    Realize essa configuração apenas uma vez por aplicativo. Visualize o exemplo:

    NSString *encrptyFilePath = [[NSBundle mainBundle] pathForResource:@"encryptedApp" ofType:@"dat"];
    [AliPrivateService initKey:encrptyFilePath];
  2. Crie e configure o downloader.

    Visualize o exemplo de código:

    AliMediaDownloader *downloader = [[AliMediaDownloader alloc] init];
    [downloader setSaveDirectory:self.downLoadPath];
    [downloader setDelegate:self];
  3. Defina os listeners de eventos.

    O downloader oferece suporte a vários listeners de eventos. Visualize o exemplo de código:

    -(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. Prepare a fonte de baixe.

    Chame o método prepare para preparar a fonte de baixe. Há suporte para fontes VidSts e VidAuth. Visualize o exemplo de código:

    • 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];
    Nota

    Se você ativar o repasse de parâmetros para criptografia HLS no console do ApsaraVideo VOD e o nome do parâmetro padrão for MtsHlsUriToken, será necessário definir o valor MtsHlsUriToken na fonte de baixe conforme mostrado no código acima. Para mais informações, consulte Repasse de parâmetros para criptografia HLS.

  5. Selecione uma faixa de vídeo após a preparação da fonte.

    Quando a fonte de baixe estiver preparada, o método onPrepared será chamado. O parâmetro mediaInfo do callback contém informações sobre cada faixa de vídeo disponível, como a qualidade do vídeo. Selecione uma faixa para baixe. Visualize o exemplo de código:

    -(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. Atualize a fonte de baixe e inicie o baixe.

    Para evitar a expiração das credenciais VidSts e VidAuth, atualize as informações da fonte antes de iniciar o baixe. Visualize o exemplo de código:

    // Update the download source.
    [downloader updateWithVid:vidSource]
    // Start the download.
    [downloader start];
  7. Libere o downloader após a conclusão ou falha do baixe.

    Chame o método destroy para liberar o downloader.

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

Reproduzir vídeos baixados

A reprodução de vídeos baixados só é possível mediante URLs de reprodução no ApsaraVideo Player SDK. Siga as etapas abaixo para reproduzir um vídeo baixado:

  1. Obtenha o caminho absoluto do arquivo de vídeo baixado.

    Nota

    Gere o caminho absoluto de um arquivo de vídeo baixado da seguinte forma: obtenha o caminho de armazenamento personalizado e o nome do arquivo em downloadedFilePath, recupere o diretório sandbox e concatene-os.

    NSString *downloadedFilePath = downloader.downloadedFilePath;
  2. Use um UrlSource do VOD para definir o caminho absoluto para reprodução.

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