Fitur unduh aman dari SDK ApsaraVideo Player mengenkripsi video yang diunduh ke perangkat lokal Anda. Video terenkripsi hanya dapat diputar dengan menggunakan key file yang dihasilkan dari aplikasi yang Anda tentukan, sehingga mencegah pemutaran atau distribusi yang tidak sah.
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, lihat kode sumber modul Video Download and Offline Playback di API-Example-Android dan API-Example-iOS.
Ikhtisar
ApsaraVideo VOD mendukung pengunduhan video ke perangkat seluler untuk pemutaran offline dalam dua mode:
-
Unduh aman (disarankan): Video yang diunduh dalam mode ini dienkripsi oleh Alibaba Cloud dan hanya dapat didekripsi dengan key file. 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 diunduh dienkripsi. Video terenkripsi hanya dapat diputar oleh aplikasi yang Anda tentukan saat menghasilkan key file di Konsol ApsaraVideo VOD. Dibandingkan dengan unduh normal, unduh aman memberikan perlindungan hak cipta yang lebih baik untuk video yang diunduh dan direkomendasikan untuk sebagian besar skenario.
Batasan
-
Untuk menggunakan fitur unduh aman, Anda harus mengintegrasikan SDK ApsaraVideo Player.
-
SDK ApsaraVideo Player hanya mendukung unduh aman berbasis VidSts dan VidAuth.
-
Video yang diunduh dalam mode unduh aman dienkripsi di perangkat lokal dan hanya dapat diputar di SDK ApsaraVideo Player pada aplikasi yang Anda tentukan.
Prasyarat
-
Fitur unduh diaktifkan dan Download Mode diatur ke Secure Download di Konsol ApsaraVideo VOD. Untuk informasi selengkapnya, lihat Aktifkan unduh aman.
-
SDK ApsaraVideo Player telah diintegrasikan. Untuk informasi selengkapnya, lihat Integrasi cepat ApsaraVideo Player untuk Android atau Integrasi cepat ApsaraVideo Player untuk iOS.
-
Video dienkripsi menggunakan Alibaba Cloud proprietary cryptography atau HLS encryption.
Implementasi utama Android
Pengaturan unduh aman
-
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 diunduh dan diputar. Untuk informasi selengkapnya tentang cara menghasilkan key file, lihat Unduh aman.
CatatanPastikan informasi dalam key file sesuai dengan informasi aplikasi yang Anda tentukan. Jika tidak, pengunduhan video akan gagal.
Kami menyarankan Anda melakukan konfigurasi ini hanya sekali di Application. Berikut contohnya:
PrivateService.initService(getApplicationContext(), "Path to encryptedApp.dat file"); // Kami merekomendasikan untuk menyimpan file verifikasi encryptedApp.dat di ponsel dan mengatur jalur file lokalnya di sini. -
Buat dan atur downloader.
Buat downloader menggunakan AliDownloaderFactory. Contoh:
AliMediaDownloader mAliDownloader = null; ...... // Buat downloader. mAliDownloader = AliDownloaderFactory.create(getApplicationContext()); // Konfigurasikan jalur penyimpanan unduhan. mAliDownloader.setSaveDir("Save folder path"); -
Atur event listener.
Downloader menyediakan beberapa event listener. Contoh:
-
Persiapkan sumber unduhan.
Persiapkan sumber unduhan menggunakan metode
prepare. Sumber unduhan mendukung metode VidSts dan VidAuth. Contoh:-
VidSts
// Buat VidSts VidSts aliyunVidSts = new VidSts(); aliyunVidSts.setVid("Vid information"); // ID Video (VideoId). aliyunVidSts.setAccessKeyId("<yourAccessKeyId>"); // ID AccessKey dari pasangan AccessKey STS temporary, dihasilkan dengan memanggil operasi AssumeRole Layanan Token Keamanan (STS). aliyunVidSts.setAccessKeySecret("<yourAccessKeySecret>"); // Rahasia AccessKey dari pasangan AccessKey STS temporary, dihasilkan dengan memanggil operasi AssumeRole Layanan Token Keamanan (STS). aliyunVidSts.setSecurityToken("<yourSecurityToken>"); // Token Layanan Token Keamanan (STS), dihasilkan dengan memanggil operasi AssumeRole Layanan Token Keamanan (STS). aliyunVidSts.setRegion("region"); // Wilayah layanan video-on-demand (VOD). Nilai default: cn-shanghai. // Jika Anda telah mengaktifkan HLS encryption parameter pass-through di Konsol VOD dan nama parameter default adalah MtsHlsUriToken, // Anda harus mengatur config dan meneruskannya ke vid, seperti yang ditunjukkan di bawah ini. // Jika Anda belum mengaktifkan HLS encryption parameter pass-through di Konsol VOD, lewati kode berikut. VidPlayerConfigGen vidConfig = new VidPlayerConfigGen(); vidConfig.setMtsHlsUriToken("<yourMtsHlsUriToken>"); aliyunVidSts.setPlayerConfig(vidConfig); // Persiapkan sumber unduhan mAliDownloader.prepare(aliyunVidSts) -
VidAuth
// Buat VidAuth. VidAuth vidAuth = new VidAuth(); vidAuth.setVid("Vid info");// ID Video. vidAuth.setPlayAuth("<yourPlayAuth>");// Kredensial pemutaran, dihasilkan dengan memanggil API VOD GetVideoPlayAuth. vidAuth.setRegion("Access region");// Untuk versi SDK player 5.5.5.0 ke atas, parameter ini sudah tidak digunakan dan tidak diperlukan; player akan mengurai wilayah secara otomatis. Untuk versi sebelum 5.5.5.0, parameter ini wajib diisi; wilayah akses VOD default adalah cn-shanghai. // Jika Anda mengaktifkan HLS standard encryption parameter pass-through di Konsol VOD dengan nama parameter default MtsHlsUriToken, atur config dan teruskan ke vid seperti berikut. VidPlayerConfigGen vidConfig = new VidPlayerConfigGen(); vidConfig.setMtsHlsUriToken("<yourMtsHlsUriToken>"); vidAuth.setPlayerConfig(config); // Persiapkan sumber unduhan. mAliDownloader.prepare(vidAuth);
Catatan-
Format file sumber sesuai dengan format file yang diunduh; perubahan format tidak didukung.
-
Jika Anda mengaktifkan HLS standard encryption parameter pass-through di Konsol VOD dengan nama parameter default MtsHlsUriToken, lihat HLS standard encryption parameter pass-through, lalu atur nilai MtsHlsUriToken dalam sumber VOD seperti yang ditunjukkan di atas.
-
-
Setelah persiapan berhasil, pilih item unduhan dan mulai unduh.
Setelah persiapan berhasil, metode
OnPreparedListenerdipanggil. TrackInfo yang dikembalikan berisi informasi seperti definisi aliran video. Pilih satu Track untuk diunduh. Contoh:public void onPrepared(MediaInfo mediaInfo) { // Item unduhan berhasil dipersiapkan. List<TrackInfo> trackInfos = mediaInfo.getTrackInfos(); // Contoh: unduh TrackInfo pertama. mAliDownloader.selectItem(trackInfos.get(0).getIndex()); // Mulai unduh. mAliDownloader.start(); } -
(Opsional) Perbarui sumber unduhan.
Untuk mencegah kedaluwarsa VidSts dan VidAuth, Anda dapat memperbarui informasi sumber unduhan dan memulai pengunduhan. Contoh:
// Perbarui sumber unduhan. mAliDownloader.updateSource(VidSts); // Mulai unduh. mAliDownloader.start(); -
Setelah unduhan berhasil atau gagal, lepaskan downloader.
Setelah unduhan berhasil, panggil
releasedalam callbackonCompletionatauonErroruntuk melepaskan downloader. Contoh:mAliDownloader.stop(); mAliDownloader.release(); -
Opsi: Hapus file yang diunduh.
Anda dapat menghapus file yang diunduh selama atau setelah proses unduhan. Contoh:
// Hapus file melalui objek. mAliDownloader.deleteFile(); // Hapus melalui metode statis; mengembalikan 0 jika berhasil. AliDownloaderFactory.deleteFile("Path to download folder","Video ID","Video format","Downloaded video index");
Mainkan video yang diunduh
Video yang diunduh hanya dapat diputar dengan menggunakan URL pemutaran di SDK ApsaraVideo Player. Untuk memutar video yang diunduh, lakukan langkah-langkah berikut:
-
Setelah unduhan selesai, dapatkan jalur mutlak file video.
String path = mAliDownloader.getFilePath(); -
Atur jalur mutlak melalui VOD UrlSource untuk pemutaran.
UrlSource urlSource = new UrlSource(); urlSource.setUri("Playback address");// Atur jalur mutlak video yang diunduh. aliPlayer.setDataSource(urlSource);
Video yang diunduh menggunakan metode playAuth hanya berisi satu aliran video pada definisi yang Anda pilih saat mengunduh. Setelah video diunduh, Anda tidak dapat beralih ke definisi lain. Jika Anda membutuhkan video dengan definisi berbeda, Anda harus mengunduh versi yang sesuai lagi.
Implementasi utama iOS
Pengaturan unduh aman
-
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 diunduh dan diputar. Untuk informasi selengkapnya tentang cara menghasilkan key file, lihat Unduh aman.
CatatanPastikan informasi dalam key file sesuai dengan informasi aplikasi yang Anda tentukan. Jika tidak, pengunduhan video akan gagal.
Kami menyarankan Anda melakukan konfigurasi ini hanya sekali per aplikasi. Berikut contohnya:
NSString *encrptyFilePath = [[NSBundle mainBundle] pathForResource:@"encryptedApp" ofType:@"dat"]; [AliPrivateService initKey:encrptyFilePath]; Buat dan konfigurasikan downloader.
Kode berikut memberikan contoh:
AliMediaDownloader *downloader = [[AliMediaDownloader alloc] init]; [downloader setSaveDirectory:self.downLoadPath]; [downloader setDelegate:self];Atur event listener.
Downloader mendukung beberapa event listener. Kode berikut memberikan contoh:
-(void)onPrepared:(AliMediaDownloader *)downloader mediaInfo:(AVPMediaInfo *)info { // Item unduhan berhasil dipersiapkan. } -(void)onError:(AliMediaDownloader *)downloader errorModel:(AVPErrorModel *)errorModel { // Terjadi error selama 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. }Persiapkan sumber unduhan.
Panggil metode
prepareuntuk mempersiapkan sumber unduhan. Sumber VidSts dan VidAuth didukung. Kode berikut memberikan contoh:VidSts
// Buat sumber VidSts. AVPVidStsSource* stsSource = [[AVPVidStsSource alloc] init]; stsSource.region = @"your_region"; // Wilayah layanan ApsaraVideo VOD Anda. Nilai default: cn-shanghai. stsSource.vid = @"your_video_id"; // ID video. stsSource.securityToken = @"<yourSecurityToken>"; // Token keamanan STS. Untuk mendapatkan token ini, panggil operasi STS AssumeRole. stsSource.accessKeySecret = @"<yourAccessKeySecret>"; // Rahasia AccessKey dari kredensial STS temporary. Untuk mendapatkan rahasia ini, panggil operasi STS AssumeRole. stsSource.accessKeyId = @"<yourAccessKeyId>"; // ID AccessKey dari kredensial STS temporary. Untuk mendapatkan ID ini, panggil operasi STS AssumeRole. // Jika Anda telah mengaktifkan parameter pass-through untuk HLS encryption di Konsol ApsaraVideo VOD // dan nama parameter default adalah MtsHlsUriToken, Anda harus mengatur config dan meneruskannya ke sumber VidSts. // Jika fitur ini tidak diaktifkan, Anda dapat melewati kode berikut. VidPlayerConfigGenerator* vp = [[VidPlayerConfigGenerator alloc] init]; [vp setHlsUriToken:yourMtsHlsUriToken]; stsSource.playConfig = [vp generatePlayerConfig]; // Persiapkan sumber unduhan. [downloader prepareWithVid:stsSource];VidAuth
// Buat sumber VidAuth. AVPVidAuthSource *authSource = [[AVPVidAuthSource alloc] init]; authSource.vid = @"your_video_id"; // ID video. authSource.playAuth = @"<yourPlayAuth>"; // Kredensial pemutaran. Untuk mendapatkan kredensial ini, panggil operasi ApsaraVideo VOD GetVideoPlayAuth. authSource.region = @"your_region"; // Tidak digunakan lagi di SDK ApsaraVideo Player V5.5.5.0 ke atas karena player mengurai wilayah secara otomatis. // Wajib diisi untuk versi sebelumnya. // Wilayah layanan ApsaraVideo VOD Anda. Nilai default: cn-shanghai. // Jika Anda telah mengaktifkan parameter pass-through untuk HLS encryption di Konsol ApsaraVideo VOD // dan nama parameter default adalah MtsHlsUriToken, Anda harus mengatur config dan meneruskannya ke sumber VidAuth. // Jika fitur ini tidak diaktifkan, Anda dapat melewati kode berikut. VidPlayerConfigGenerator* vp = [[VidPlayerConfigGenerator alloc] init]; [vp setHlsUriToken:yourMtsHlsUriToken]; authSource.playConfig = [vp generatePlayerConfig]; // Persiapkan sumber unduhan. [downloader prepareWithVid:authSource];
CatatanJika Anda mengaktifkan parameter pass-through untuk HLS encryption di Konsol ApsaraVideo VOD dan nama parameter default adalah MtsHlsUriToken, Anda harus mengatur nilai MtsHlsUriToken dalam sumber unduhan seperti yang ditunjukkan dalam kode di atas. Untuk informasi selengkapnya, lihat parameter pass-through untuk HLS encryption.
Pilih track video setelah sumber dipersiapkan.
Setelah sumber unduhan dipersiapkan, metode
onPrepareddipanggil. ParametermediaInfodari callback berisi informasi tentang setiap track video yang tersedia, seperti kualitas video. Pilih track untuk diunduh. Kode berikut memberikan contoh:-(void)onPrepared:(AliMediaDownloader *)downloader mediaInfo:(AVPMediaInfo *)info { NSArray<AVPTrackInfo*>* tracks = info.tracks; // Contoh, untuk mengunduh track pertama: [downloader selectTrack:[tracks objectAtIndex:0].trackIndex]; }Perbarui sumber unduhan dan mulai unduhan.
Untuk mencegah kredensial VidSts dan VidAuth kedaluwarsa, kami menyarankan memperbarui informasi sumber sebelum memulai unduhan. Kode berikut memberikan contoh:
// Perbarui sumber unduhan. [downloader updateWithVid:vidSource] // Mulai unduhan. [downloader start];Lepaskan downloader setelah unduhan selesai atau gagal.
Panggil metode
destroyuntuk melepaskan downloader.[self.downloader destroy]; self.downloader = nil;
Mainkan video yang diunduh
Video yang diunduh hanya dapat diputar dengan menggunakan URL pemutaran di SDK ApsaraVideo Player. Untuk memutar video yang diunduh, lakukan langkah-langkah berikut:
-
Dapatkan jalur mutlak file video yang diunduh.
CatatanKami menyarankan Anda menghasilkan jalur mutlak file video yang diunduh sebagai berikut: dapatkan jalur penyimpanan kustom dan nama file dari
downloadedFilePath, ambil direktori sandbox, lalu gabungkan keduanya.NSString *downloadedFilePath = downloader.downloadedFilePath; -
Gunakan VOD UrlSource untuk mengatur jalur mutlak guna pemutaran.
AVPUrlSource *urlSource = [[AVPUrlSource alloc] urlWithString:downloadedFilePath]; [self.player setUrlSource:urlSource];
Video yang diunduh menggunakan metode playAuth hanya berisi satu aliran video pada definisi yang Anda pilih saat mengunduh. Setelah video diunduh, Anda tidak dapat beralih ke definisi lain. Jika Anda membutuhkan video dengan definisi berbeda, Anda harus mengunduh versi yang sesuai lagi.