ApsaraVideo Player SDKは、安全なダウンロード機能を提供します。 このモードでローカルデバイスにダウンロードされたビデオは暗号化されます。 暗号化されたビデオは、指定したアプリから生成されたキーファイルを使用してのみ再生できます。 セキュアダウンロードは、悪意のある再生や配信からビデオを保護します。 このトピックでは、ApsaraVideo Player SDK for AndroidおよびiOSを使用してビデオを安全にダウンロードする方法について説明します。
概要
ApsaraVideo VODは、オフライン再生用のモバイルデバイスへのビデオダウンロードをサポートします。 通常のダウンロードモードと安全なダウンロードモードがサポートされています。 次の内容は、2つのモードの違いを説明します。
安全なダウンロード (推奨): このモードでダウンロードされた動画は、Alibaba Cloudによって暗号化されます。 ビデオを再生する前に、キーファイルを使用してビデオを復号化する必要があります。 ビデオはApsaraVideo Playerを使用してのみ再生できます。
通常のダウンロード: このモードでダウンロードされた動画はAlibaba Cloudによって暗号化されず、任意のプレーヤーを使用してコピーおよび再生できます。 通常のダウンロードモードを使用するときは注意してください。
安全なダウンロードにより、ダウンロードしたビデオが暗号化されます。 暗号化されたビデオは、ApsaraVideo VODコンソールでキーファイルを生成するときに指定したアプリを使用してのみ再生できます。 通常のダウンロードモードと比較して、安全なダウンロードモードはより信頼性が高く、ダウンロードしたビデオの著作権を保護するのに適しています。 ほとんどの場合、安全なダウンロードモードを使用することをお勧めします。
制限事項
安全なダウンロード機能を使用するには、ApsaraVideo Player SDKを統合する必要があります。
ApsaraVideo Player SDKは、VidStsとVidAuthのみに基づく安全なダウンロードをサポートします。
セキュアダウンロードモードを使用してダウンロードされたビデオはローカルデバイスで暗号化され、指定したアプリのApsaraVideo Player SDKの再生URLに基づいてのみ再生できます。
前提条件
ApsaraVideo VODコンソールで、ダウンロード機能が有効になっており、ダウンロードモードがセキュアダウンロードに設定されています。 詳細については、「ダウンロード設定の構成」をご参照ください。
ApsaraVideo Player SDKは統合されています。 詳細については、「ApsaraVideo Player For Androidのクイック統合」または「ApsaraVideo Player for iOSのクイック統合」をご参照ください。
ビデオは、Alibaba Cloud独自の暗号化またはHLS暗号化を使用して暗号化されます。
ApsaraVideo Player SDK for Androidを使用した安全なダウンロード
安全なダウンロード設定
暗号化検証用のキーファイルを設定します。
ApsaraVideo Player SDKのApsaraVideo VODコンソールで生成されたキーファイルを設定します。 キーファイルは、ダウンロードと再生のためにビデオを暗号化および復号化するために使用されます。 キーファイルを生成する方法の詳細については、「安全なダウンロード」をご参照ください。
説明キーファイルの情報が、指定したアプリ情報と一致していることを確認してください。 それ以外の場合、ビデオのダウンロードは失敗します。
アプリケーションでセキュリティファイルを1回だけ構成することをお勧めします。 サンプルコード:
PrivateService.initService(getApplicationContext(), "The path in which the encryptedApp.dat file is stored"); // We recommend that you store the encryptedApp.dat file on your mobile phone and set this parameter to the path in which the file is stored.
ビデオダウンローダーを作成して設定します。
AliDownloaderFactoryクラスを使用して、ダウンロードオブジェクトを作成します。 サンプルコード:
AliMediaDownloader mAliDownloader = null; ...... // Create a download object. mAliDownloader = AliDownloaderFactory.create(getApplicationContext()); // Specify the path for storing downloaded files. mAliDownloader.setSaveDir("The storage path");
リスナーを設定します。
ダウンローダは複数のリスナーを提供します。 サンプルコード:
ダウンロードソースを準備します。
prepare
メソッドを呼び出して、ダウンロードソースを準備できます。 VidStsおよびVidAuthソースがサポートされています。 サンプルコード:VidSts
// Create the VidSts download source. VidSts aliyunVidSts = new VidSts(); aliyunVidSts.setVid("Vid");// The ID of the video. aliyunVidSts.setAccessKeyId("<yourAccessKeyId>");// The AccessKey ID that is generated when the temporary STS token is issued. To generate the AccessKey ID, call the AssumeRole operation in STS. aliyunVidSts.setAccessKeySecret"<yourAccessKeySecret>");// The AccessKey secret that is generated when the temporary STS token is issued. To generate the AccessKey secret, call the AssumeRole operation in STS. aliyunVidSts.setSecurityToken("<yourSecurityToken>");// The STS token. To obtain the STS token, call the AssumeRole operation in STS. aliyunVidSts.setRegion("Access region");// The region in which ApsaraVideo VOD is activated. Default value: cn-shanghai. // Prepare the download source. mAliDownloader.prepare(aliyunVidSts)
VidAuth
// Create the VidAuth download source. VidAuth vidAuth = new VidAuth(); vidAuth.setVid("Vid"); // The ID of the video. vidAuth.setPlayAuth("<yourPlayAuth>");// The playback credential. To obtain the playback credential, call the GetVideoPlayAuth operation. vidAuth.setRegion("Access region"); // This parameter is deprecated in ApsaraVideo Player SDK V5.5.5.0 or later. If you use ApsaraVideo Player SDK V5.5.5.0 or later, the player automatically parses the region information. If you use ApsaraVideo Player SDK V5.5.5.0 or earlier, this parameter is required. Specify the ID of the region in which ApsaraVideo VOD is activated for this parameter. Default value: cn-shanghai. // Prepare the download source. mAliDownloader.prepare(vidAuth);
説明出力ファイルと入力ファイルは同じ形式であり、変更できません。
準備したダウンロードソースからダウンロードするコンテンツを選択します。
ダウンロードソースの準備が完了すると、OnPreparedListenerコールバックが発生します。 TrackInfoパラメーターの値は、ビデオ定義などのビデオトラックに関する情報を示します。 ダウンロードするトラックを選択します。 サンプルコード:
public void onPrepared(MediaInfo mediaInfo) { // Prepare the content to be downloaded. List<TrackInfo> trackInfos = mediaInfo.getTrackInfos(); // Download the information about tracks, such as the first track. mAliDownloader.selectItem(trackInfos.get(0).getIndex()); // Start the download. mAliDownloader.start(); }
オプション。 ダウンロードソースを更新します。
VidStsまたはVidAuthソースは、ダウンロード前に期限切れになる場合があります。 したがって、ダウンロードを開始する前にダウンロードソースを更新することをお勧めします。 サンプルコード:
// Update the download source. mAliDownloader.updateSource(VidSts); // Start the download. mAliDownloader.start();
ダウンロードが成功または失敗した後、ダウンロードオブジェクトをリリースします。
ダウンロードが成功したら、
release
メソッドを呼び出してダウンロードオブジェクトをリリースします。onCompletion
またはonError
コールバックが呼び出された後、ダウンロードオブジェクトをリリースできます。 サンプルコード:mAliDownloader.stop(); mAliDownloader.release();
オプションです。 ダウンロードしたファイルを削除します。
ダウンロードしたファイルは、ダウンロード中またはダウンロード完了後に削除できます。 サンプルコード:
// Delete the file by using the download object. mAliDownloader.deleteFile(); // Delete the file by using the static method. If 0 is returned, the file is deleted. AliDownloaderFactory.deleteFile("The path of the downloaded file","Video ID","Video format","The index of the downloaded video");
ダウンロードしたビデオを再生
ダウンロードされたビデオは、ApsaraVideo Player SDKの再生URLに基づいてのみ再生できます。 ダウンロードしたビデオを再生するには、次の手順を実行します。
ダウンロードしたビデオファイルの絶対パスを取得します。
String path = mAliDownloader.getFilePath();
UrlSourceをダウンロードしたビデオファイルの絶対パスに設定して、ビデオを再生します。
UrlSource urlSource = new UrlSource(); urlSource.setUri("Playback URL");// Specify the absolute path of the downloaded video file. aliPlayer.setDataSource(urlSource);
ApsaraVideo Player SDK for iOSを使用した安全なダウンロード
安全なダウンロード設定
暗号化検証用のキーファイルを設定します。
ApsaraVideo Player SDKのApsaraVideo VODコンソールで生成されたキーファイルを設定します。 キーファイルは、ダウンロードと再生のためにビデオを暗号化および復号化するために使用されます。 キーファイルを生成する方法の詳細については、「安全なダウンロード」をご参照ください。
説明キーファイルの情報が、指定したアプリ情報と一致していることを確認してください。 それ以外の場合、ビデオのダウンロードは失敗します。
アプリケーションでセキュリティファイルを1回だけ構成することをお勧めします。 サンプルコード:
NSString *encrptyFilePath = [[NSBundle mainBundle] pathForResource:@"encryptedApp" ofType:@"dat"]; [AliPrivateService initKey:encrptyFilePath];
ビデオダウンローダーを作成して設定します。
サンプルコード:
AliMediaDownloader *downloader = [[AliMediaDownloader alloc] init]; [downloader setSaveDirectory:self.downLoadPath]; [downloader setDelegate:self];
リスナーを設定します。
ダウンロードオブジェクトは複数のリスナーを提供します。 サンプルコード:
-(void)onPrepared:(AliMediaDownloader *)downloader mediaInfo:(AVPMediaInfo *)info { // The listener for the preparation of the content to be downloaded. } -(void)onError:(AliMediaDownloader *)downloader errorModel:(AVPErrorModel *)errorModel { // The listener for a download error. } -(void)onDownloadingProgress:(AliMediaDownloader *)downloader percentage:(int)percent { // The listener for the download progress in percentage. } -(void)onProcessingProgress:(AliMediaDownloader *)downloader percentage:(int)percent { // The listener for the processing progress in percentage. } -(void)onCompletion:(AliMediaDownloader *)downloader { // The listener for a successful download. }
ダウンロードソースを準備します。
prepare
メソッドを呼び出して、ダウンロードソースを準備できます。 AVPVidStsSourceとAVPVidAuthSourceがサポートされています。 サンプルコード:VidSts
// Create the VidSts download source. AVPVidStsSource* stsSource = [[AVPVidStsSource alloc] init]; stsSource.region = @"Access region"; // The region in which ApsaraVideo VOD is activated. Default value: cn-shanghai. stsSource.vid = @"Video ID"; // The ID of the video. stsSource.securityToken = @"<Your security token>"; // The STS token. To generate an STS token, call the AssumeRole operation in STS. stsSource.accessKeySecret = @"<Your AccessKey secret>"; // The AccessKey secret that is generated when the temporary STS token is issued. To generate the AccessKey secret, call the AssumeRole operation in STS. stsSource.accessKeyId = @"<Your AccessKey ID>"; // The AccessKey ID that is generated when the temporary STS token is issued. To generate the AccessKey ID, call the AssumeRole operation in STS. // Prepare the download source. [downloader prepareWithVid:stsSource];
VidAuth
// Add the VidAuth download source. AVPVidAuthSource *authSource = [[AVPVidAuthSource alloc] init]; authSource.vid = @"Video ID";// The ID of the video. authSource.playAuth = @"<Your playback credential>"; // The playback credential. To obtain the playback credential, call the GetVideoPlayAuth operation in ApsaraVideo VOD. authSource.region = @"Access region"; // This parameter is deprecated in ApsaraVideo Player SDK V5.5.5.0 or later. If you use ApsaraVideo Player SDK V5.5.5.0 or later, the player automatically parses the region information. If you use ApsaraVideo Player SDK V5.5.5.0 or earlier, this parameter is required. Specify the ID of the region in which ApsaraVideo VOD is activated for this parameter. Default value: cn-shanghai. // Prepare the download source. [downloader prepareWithVid:authSource];
準備したダウンロードソースからダウンロードするコンテンツを選択します。
ダウンロードソースが準備された後、
onPrepared
メソッドによってコールバックが呼び出されます。 TrackInfoパラメーターの値は、ビデオ定義などのビデオトラックに関する情報を示します。 ダウンロードするトラックを選択します。 サンプルコード:-(void)onPrepared:(AliMediaDownloader *)downloader mediaInfo:(AVPMediaInfo *)info { NSArray<AVPTrackInfo*>* tracks = info.tracks; // In this example, download the content of the first track. [downloader selectTrack:[tracks objectAtIndex:0].trackIndex]; }
ダウンロードソースを更新し、ダウンロードを開始します。
VidStsまたはVidAuthは、ダウンロード前に期限切れになる場合があります。 したがって、ダウンロードを開始する前にダウンロードソースを更新することをお勧めします。 サンプルコード:
// Update the download source. [downloader updateWithVid:vidSource] // Start the download. [downloader start];
ダウンロードが成功または失敗した後、ダウンローダーをリリースします。
ダウンロードが成功したら、
destroy
メソッドを呼び出してダウンローダーをリリースします。[self.downloader destroy]; self.downloader = nil;
ダウンロードしたビデオを再生
ダウンロードされたビデオは、ApsaraVideo Player SDKの再生URLに基づいてのみ再生できます。 ダウンロードしたビデオを再生するには、次の手順を実行します。
ダウンロードしたビデオファイルの絶対パスを取得します。
説明ダウンロードしたビデオファイルの絶対パスを生成するには、次の操作を実行することを推奨します。
downloadedFilePath
からカスタムストレージパスとファイル名を取得し、サンドボックスディレクトリを取得してから、カスタムストレージパス、ファイル名、およびサンドボックスディレクトリを連結します。NSString *downloadedFilePath = downloader.downloadedFilePath;
UrlSourceをダウンロードしたビデオファイルの絶対パスに設定して、ビデオを再生します。
AVPUrlSource *urlSource = [[AVPUrlSource alloc] urlWithString:downloadedFilePath]; [self.player setUrlSource:urlSource];