全部产品
Search
文档中心

ApsaraVideo VOD:Unduh aman

更新时间:Jan 29, 2026

SDK ApsaraVideo Player menyediakan fitur unduh aman. Video yang diunduh ke perangkat lokal dalam mode ini dienkripsi dan hanya dapat diputar menggunakan file kunci (key file) yang dihasilkan dari aplikasi yang Anda tentukan. Fitur ini melindungi video Anda dari pemutaran atau distribusi yang tidak sah. Topik ini menjelaskan cara menggunakan SDK ApsaraVideo Player untuk Android dan iOS guna mengunduh video secara aman.

Penting

Untuk semua kode dan detail implementasi terkait fitur dalam topik ini, kami menyarankan Anda merujuk ke proyek demo API-Example dan menyesuaikan kodenya berdasarkan praktik terbaik.

Untuk implementasi spesifik, Anda dapat menggunakan solusi yang dijelaskan dalam topik ini dan merujuk ke kode sumber modul Video Download and Offline Playback pada API-Example-Android dan API-Example-iOS yang sesuai.

Ikhtisar

ApsaraVideo VOD mendukung pengunduhan video ke perangkat seluler untuk pemutaran offline, dengan dua mode: unduh normal dan unduh aman. Berikut perbedaan antara keduanya:

  • Unduh aman (disarankan): Video yang diunduh dalam mode ini dienkripsi oleh Alibaba Cloud. Anda harus menggunakan file kunci untuk mendekripsi video sebelum memutarnya. Video hanya dapat diputar menggunakan ApsaraVideo Player.

  • Unduh normal: Video yang diunduh dalam mode ini tidak dienkripsi oleh Alibaba Cloud dan dapat disalin serta diputar menggunakan pemutar apa pun. Berhati-hatilah saat menggunakan mode unduh normal.

Unduh aman memastikan bahwa video yang Anda unduh dienkripsi dan hanya dapat diputar menggunakan aplikasi yang Anda tentukan saat menghasilkan file kunci di Konsol ApsaraVideo VOD. Dibandingkan dengan mode unduh normal, unduh aman lebih andal dan cocok untuk melindungi hak cipta video yang diunduh. Dalam kebanyakan kasus, kami menyarankan Anda menggunakan mode unduh aman.

Batasan

  • Untuk menggunakan fitur unduh aman, Anda harus mengintegrasikan SDK ApsaraVideo Player.

  • SDK ApsaraVideo Player hanya mendukung unduh aman berdasarkan VidSts dan VidAuth.

  • Video yang diunduh menggunakan mode unduh aman dienkripsi di perangkat lokal dan hanya dapat diputar berdasarkan URL pemutaran di SDK ApsaraVideo Player pada aplikasi yang Anda tentukan.

Prasyarat

Implementasi utama Android

Pengaturan unduh aman

  1. Konfigurasikan file verifikasi terenkripsi untuk mengaktifkan unduhan aman.

    Konfigurasikan key file yang dihasilkan di Konsol ApsaraVideo VOD ke dalam SDK ApsaraVideo Player. Key file digunakan untuk mengenkripsi dan mendekripsi video saat pengunduhan dan pemutaran. Untuk informasi selengkapnya tentang cara menghasilkan key file, lihat Unduh aman.

    Catatan

    Pastikan informasi dalam key file sesuai dengan informasi aplikasi yang Anda tentukan. Jika tidak, pengunduhan video akan gagal.

    Kami menyarankan Anda mengonfigurasi ini hanya sekali di Application. Berikut contohnya:

    PrivateService.initService(getApplicationContext(),  "Jalur file tempat encryptedApp.dat berada"); // Kami menyarankan menyimpan file encryptedApp.dat di ponsel, lalu mengatur jalur file lokal file enkripsi di sini
  2. Buat dan siapkan downloader.

    Anda dapat membuat downloader menggunakan AliDownloaderFactory. Berikut contoh kodenya:

    AliMediaDownloader mAliDownloader = null;
    ......
    // Buat downloader
    mAliDownloader = AliDownloaderFactory.create(getApplicationContext());
    // Konfigurasikan jalur penyimpanan untuk unduhan
    mAliDownloader.setSaveDir("Alamat folder penyimpanan");
  3. Atur listener.

    Downloader menyediakan beberapa event listener. Berikut contoh kodenya:

    Klik untuk melihat kode

    mAliDownloader.setOnPreparedListener(new AliMediaDownloader.OnPreparedListener() {
       @Override
       public void onPrepared(MediaInfo mediaInfo) {
           // Item unduhan berhasil dipersiapkan
       }
    });
    mAliDownloader.setOnProgressListener(new AliMediaDownloader.OnProgressListener() {
       @Override
       public void onDownloadingProgress(int percent) {
           // Persentase progres unduhan
       }
       @Override
       public void onProcessingProgress(int percent) {
           // Persentase progres pemrosesan
       }
    });
    mAliDownloader.setOnErrorListener(new AliMediaDownloader.OnErrorListener() {
       @Override
       public void onError(ErrorInfo errorInfo) {
           // Kesalahan unduhan
       }
    });
    mAliDownloader.setOnCompletionListener(new AliMediaDownloader.OnCompletionListener() {
       @Override
       public void onCompletion() {
           // Unduhan berhasil
       }
    });
  4. Persiapkan sumber unduhan.

    Anda dapat menggunakan metode prepare untuk mempersiapkan sumber unduhan. Sumber unduhan mendukung metode VidSts dan VidAuth. Berikut contoh kodenya:

    • VidSts

      // Buat objek VidSts.
      VidSts aliyunVidSts = new VidSts();
      aliyunVidSts.setVid("your_video_id"); // ID video.
      aliyunVidSts.setAccessKeyId("<yourAccessKeyId>"); // ID AccessKey token STS sementara. Untuk mendapatkan token, Anda harus memanggil operasi AssumeRole STS.
      aliyunVidSts.setAccessKeySecret("<yourAccessKeySecret>"); // Rahasia AccessKey token STS sementara. Untuk mendapatkan token, Anda harus memanggil operasi AssumeRole STS.
      aliyunVidSts.setSecurityToken("<yourSecurityToken>"); // Token keamanan. Untuk mendapatkan token, Anda harus memanggil operasi AssumeRole STS.
      aliyunVidSts.setRegion("your_region_id"); // ID wilayah tempat VOD diaktifkan. Nilai default: cn-shanghai.
       // Jika Anda mengaktifkan enkripsi HLS dengan transmisi langsung parameter di Konsol VOD dan nama parameter default adalah MtsHlsUriToken, Anda harus mengatur parameter config dan meneruskannya ke objek VidSts. Untuk informasi selengkapnya, lihat kode berikut.
       // Jika Anda tidak mengaktifkan enkripsi HLS dengan transmisi langsung parameter di Konsol VOD, Anda tidak perlu mengintegrasikan kode berikut.
       VidPlayerConfigGen vidConfig = new VidPlayerConfigGen();
       vidConfig.setMtsHlsUriToken("<yourMtsHlsUriToken>");
       aliyunVidSts.setPlayerConfig(vidConfig);
              
      
      // Persiapkan sumber unduhan.
      mAliDownloader.prepare(aliyunVidSts);
    • VidAuth

      // Buat objek VidAuth.
      VidAuth vidAuth = new VidAuth();
      vidAuth.setVid("Your Video ID");// ID video (VideoId).
      vidAuth.setPlayAuth("<yourPlayAuth>");// Kredensial pemutaran. Anda harus memanggil operasi GetVideoPlayAuth layanan VOD untuk menghasilkan kredensial ini.
      vidAuth.setRegion("The region");// Untuk SDK pemutar versi V5.5.5.0 ke atas, parameter ini sudah tidak digunakan lagi. Anda tidak perlu mengatur wilayah karena pemutar akan mengurai wilayah secara otomatis. Untuk SDK pemutar versi sebelum V5.5.5.0, parameter ini wajib diisi. Parameter ini menentukan wilayah tempat layanan VOD diaktifkan. Nilai default adalah cn-shanghai.
      // Jika Anda mengaktifkan transmisi langsung parameter enkripsi HLS di Konsol VOD dan nama parameter default adalah MtsHlsUriToken, Anda harus mengatur config dan meneruskannya ke objek VidAuth. Untuk informasi selengkapnya, lihat kode berikut.
      VidPlayerConfigGen vidConfig = new VidPlayerConfigGen();
      vidConfig.setMtsHlsUriToken("<yourMtsHlsUriToken>");
      vidAuth.setPlayerConfig(vidConfig);
      // Persiapkan sumber unduhan.
      mAliDownloader.prepare(vidAuth);
    Catatan
    • Format file sumber dan format file unduhan output sama dan tidak dapat diubah.

    • Jika Anda mengaktifkan transmisi langsung parameter enkripsi standar HLS di Konsol VOD, nama parameter default adalah MtsHIsUriToken. Untuk informasi selengkapnya, lihat Transmisi langsung parameter enkripsi standar HLS. Dalam hal ini, Anda harus mengatur nilai MtsHIsUriToken dalam sumber VOD seperti yang ditunjukkan pada kode di atas.

  5. Setelah persiapan berhasil, pilih item unduhan dan mulai unduhan.

    Setelah persiapan berhasil, metode OnPreparedListener dipanggil. Objek TrackInfo yang dikembalikan berisi informasi seperti definisi setiap aliran video. Anda dapat memilih Track untuk diunduh. Berikut contoh kodenya:

    public void onPrepared(MediaInfo mediaInfo) {
        // Item unduhan berhasil dipersiapkan
        List<TrackInfo> trackInfos = mediaInfo.getTrackInfos();
        // Misalnya, unduh TrackInfo pertama
        mAliDownloader.selectItem(trackInfos.get(0).getIndex());
        // Mulai unduhan
        mAliDownloader.start();
    }
  6. (Opsional) Perbarui sumber unduhan.

    Untuk mencegah VidSts dan VidAuth kedaluwarsa, Anda juga dapat memperbarui informasi sumber unduhan sebelum memulai unduhan. Berikut contoh kodenya:

    // Perbarui sumber unduhan
    mAliDownloader.updateSource(VidSts);
    // Mulai unduhan
    mAliDownloader.start();
  7. Setelah unduhan berhasil atau gagal, lepas downloader.

    Setelah unduhan selesai, Anda dapat memanggil release dalam callback onCompletion atau onError untuk melepas downloader. Berikut contoh kodenya:

    mAliDownloader.stop();
    mAliDownloader.release();
  8. Opsi: Hapus file yang diunduh.

    Saat atau setelah unduhan, Anda dapat menghapus file yang diunduh. Berikut contoh kodenya:

    // Hapus file melalui objek
    mAliDownloader.deleteFile();
    // Hapus melalui metode statis. Jika berhasil, akan mengembalikan 0
    AliDownloaderFactory.deleteFile("Jalur folder unduhan yang akan dihapus", "ID Video", "Format video", "Indeks video yang diunduh");

Mainkan video yang diunduh

Video yang diunduh hanya dapat diputar berdasarkan URL pemutaran di SDK ApsaraVideo Player. Untuk memutar video yang diunduh, lakukan langkah-langkah berikut:

  1. Setelah unduhan selesai, dapatkan jalur mutlak file video.

    String path = mAliDownloader.getFilePath();
  2. Atur jalur mutlak untuk pemutaran menggunakan metode UrlSource.

     UrlSource urlSource = new UrlSource();
            urlSource.setUri("Playback URL");// Atur jalur mutlak video yang diunduh
            aliPlayer.setDataSource(urlSource);

Implementasi utama iOS

Pengaturan unduh aman

  1. Konfigurasikan file verifikasi terenkripsi untuk mengaktifkan unduhan aman.

    Konfigurasikan key file yang dihasilkan di Konsol ApsaraVideo VOD ke dalam SDK ApsaraVideo Player. Key file digunakan untuk mengenkripsi dan mendekripsi video saat pengunduhan dan pemutaran. Untuk informasi selengkapnya tentang cara menghasilkan key file, lihat Unduh aman.

    Catatan

    Pastikan informasi dalam key file sesuai dengan informasi aplikasi yang Anda tentukan. Jika tidak, pengunduhan video akan gagal.

    Kami menyarankan Anda mengonfigurasi pengaturan ini hanya sekali per aplikasi. Berikut contohnya:

    NSString *encrptyFilePath = [[NSBundle mainBundle] pathForResource:@"encryptedApp" ofType:@"dat"];
    [AliPrivateService initKey:encrptyFilePath];
  2. Buat dan siapkan downloader.

    Contoh:

    AliMediaDownloader *downloader = [[AliMediaDownloader alloc] init];
    [downloader setSaveDirectory:self.downLoadPath];
    [downloader setDelegate:self];
  3. Atur event listener.

    Downloader menyediakan beberapa event listener. Berikut contoh kodenya:

    -(void)onPrepared:(AliMediaDownloader *)downloader mediaInfo:(AVPMediaInfo *)info {
        // Item unduhan berhasil dipersiapkan.
    }
    -(void)onError:(AliMediaDownloader *)downloader errorModel:(AVPErrorModel *)errorModel {
        // Terjadi kesalahan unduhan.
    }
    -(void)onDownloadingProgress:(AliMediaDownloader *)downloader percentage:(int)percent {
        // Persentase progres unduhan.
    }
    -(void)onProcessingProgress:(AliMediaDownloader *)downloader percentage:(int)percent {
        // Persentase progres pemrosesan.
    }
    -(void)onCompletion:(AliMediaDownloader *)downloader {
        // Unduhan berhasil.
    }
  4. Persiapkan sumber unduhan.

    Anda dapat menggunakan metode prepare untuk mempersiapkan sumber unduhan. Metode VidSts dan VidAuth didukung. Berikut contoh kodenya:

    • VidSts

      // Buat VidSts.
      AVPVidStsSource* stsSource = [[AVPVidStsSource alloc] init];
      stsSource.region = @"Access region"; // Wilayah akses ApsaraVideo VOD. Default adalah cn-shanghai.
      stsSource.vid = @"Vid information"; // ID video.
      stsSource.securityToken = @"<yourSecurityToken>"; // Token STS. Anda perlu memanggil operasi API AssumeRole STS untuk menghasilkannya.
      stsSource.accessKeySecret = @"<yourAccessKeySecret>"; // Rahasia AccessKey pasangan AccessKey STS sementara. Anda perlu memanggil operasi API AssumeRole STS untuk menghasilkannya.
      stsSource.accessKeyId = @"<yourAccessKeyId>"; // ID AccessKey pasangan AccessKey STS sementara. Anda perlu memanggil operasi API AssumeRole STS untuk menghasilkannya.
      
      // Jika Anda telah mengaktifkan transmisi langsung parameter enkripsi standar HLS di Konsol VOD, dan nama parameter default adalah MtsHlsUriToken, Anda perlu mengatur config dan meneruskannya ke vid, seperti yang ditunjukkan di bawah.
      // Jika Anda belum mengaktifkan transmisi langsung parameter enkripsi standar HLS di Konsol VOD, Anda tidak perlu mengintegrasikan kode berikut.
      VidPlayerConfigGenerator* vp = [[VidPlayerConfigGenerator alloc] init];
      [vp setHlsUriToken:yourMtsHlsUriToken];
      stsSource.playConfig = [vp generatePlayerConfig];
      // Persiapkan sumber unduhan.
      [downloader prepareWithVid:stsSource];
    • VidAuth

      // Buat VidAuth.
      AVPVidAuthSource *authSource = [[AVPVidAuthSource alloc] init];
      authSource.vid = @"Vid information"; // ID video.
      authSource.playAuth = @"<yourPlayAuth>"; // Kredensial pemutaran. Anda perlu memanggil operasi API GetVideoPlayAuth ApsaraVideo VOD untuk menghasilkannya.
      authSource.region = @"Access region"; // Untuk SDK pemutar versi V5.5.5.0 ke atas, parameter ini sudah tidak digunakan lagi. Anda tidak perlu mengatur wilayah; pemutar akan mengurai wilayah secara otomatis. Untuk SDK pemutar versi sebelum V5.5.5.0, parameter ini wajib diisi. Wilayah akses ApsaraVideo VOD, default adalah cn-shanghai.
      // Jika Anda telah mengaktifkan transmisi langsung parameter enkripsi standar HLS di Konsol VOD, dan nama parameter default adalah MtsHlsUriToken, Anda perlu mengatur config dan meneruskannya ke vid, seperti yang ditunjukkan di bawah.
      // Jika Anda belum mengaktifkan transmisi langsung parameter enkripsi standar HLS di Konsol VOD, Anda tidak perlu mengintegrasikan kode berikut.
      VidPlayerConfigGenerator* vp = [[VidPlayerConfigGenerator alloc] init];
      [vp setHlsUriToken:yourMtsHlsUriToken];
      authSource.playConfig = [vp generatePlayerConfig];
      // Persiapkan sumber unduhan.
      [downloader prepareWithVid:authSource];
    Catatan

    Jika Anda telah mengaktifkan transmisi langsung parameter enkripsi standar HLS di Konsol VOD, dan nama parameter default adalah `MtsHIsUriToken` (untuk informasi selengkapnya, lihat Transmisi langsung parameter enkripsi standar HLS), harap atur nilai `MtsHIsUriToken` ke dalam sumber VOD seperti yang ditunjukkan pada kode di atas.

  5. Setelah persiapan berhasil, pilih item unduhan.

    Setelah persiapan berhasil, metode onPrepared dipanggil balik. `TrackInfo` yang dikembalikan berisi informasi seperti definisi setiap aliran video. Anda dapat memilih track untuk diunduh. Berikut contoh kodenya:

    -(void)onPrepared:(AliMediaDownloader *)downloader mediaInfo:(AVPMediaInfo *)info {
        NSArray<AVPTrackInfo*>* tracks = info.tracks;
        // Misalnya, unduh TrackInfo pertama.
        [downloader selectTrack:[tracks objectAtIndex:0].trackIndex];
    }
  6. Perbarui sumber unduhan dan mulai unduhan.

    Untuk mencegah VidSts dan VidAuth kedaluwarsa, kami menyarankan Anda memperbarui informasi sumber unduhan sebelum memulai unduhan. Berikut contoh kodenya:

    // Perbarui sumber unduhan.
    [downloader updateWithVid:vidSource]
    // Mulai unduhan.
    [downloader start];
  7. Setelah unduhan berhasil atau gagal, lepas downloader.

    Setelah unduhan berhasil, Anda dapat memanggil destroy untuk melepas downloader.

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

Mainkan video yang diunduh

Video yang diunduh hanya dapat diputar berdasarkan URL pemutaran di SDK ApsaraVideo Player. Untuk memutar video yang diunduh, lakukan langkah-langkah berikut:

  1. Dapatkan jalur mutlak file video yang diunduh.

    Catatan

    Kami menyarankan Anda menghasilkan jalur mutlak file video yang diunduh dengan langkah-langkah berikut: dapatkan jalur penyimpanan kustom dan nama file dari downloadedFilePath, ambil direktori sandbox, lalu gabungkan jalur penyimpanan kustom, nama file, dan direktori sandbox.

    NSString *downloadedFilePath = downloader.downloadedFilePath;
  2. Anda dapat menggunakan VOD UrlSource untuk mengatur jalur mutlak untuk pemutaran.

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