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.
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
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 pengunduhan dan pemutaran. 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 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 siniBuat 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");Atur listener.
Downloader menyediakan beberapa event listener. Berikut contoh kodenya:
Persiapkan sumber unduhan.
Anda dapat menggunakan metode
prepareuntuk 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);
CatatanFormat 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.
Setelah persiapan berhasil, pilih item unduhan dan mulai unduhan.
Setelah persiapan berhasil, metode
OnPreparedListenerdipanggil. 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(); }(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();Setelah unduhan berhasil atau gagal, lepas downloader.
Setelah unduhan selesai, Anda dapat memanggil
releasedalam callbackonCompletionatauonErroruntuk melepas downloader. Berikut contoh kodenya:mAliDownloader.stop(); mAliDownloader.release();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:
Setelah unduhan selesai, dapatkan jalur mutlak file video.
String path = mAliDownloader.getFilePath();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
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.
CatatanPastikan 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];Buat dan siapkan downloader.
Contoh:
AliMediaDownloader *downloader = [[AliMediaDownloader alloc] init]; [downloader setSaveDirectory:self.downLoadPath]; [downloader setDelegate:self];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. }Persiapkan sumber unduhan.
Anda dapat menggunakan metode
prepareuntuk 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];
CatatanJika 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.
Setelah persiapan berhasil, pilih item unduhan.
Setelah persiapan berhasil, metode
onPrepareddipanggil 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]; }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];Setelah unduhan berhasil atau gagal, lepas downloader.
Setelah unduhan berhasil, Anda dapat memanggil
destroyuntuk 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:
Dapatkan jalur mutlak file video yang diunduh.
CatatanKami 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;Anda dapat menggunakan VOD UrlSource untuk mengatur jalur mutlak untuk pemutaran.
AVPUrlSource *urlSource = [[AVPUrlSource alloc] urlWithString:downloadedFilePath]; [self.player setUrlSource:urlSource];