2016-09-27 2 views
0

Ich habe die folgende Implementierung verwendet, um einen geschützten Videoinhalt vom Medienserver abzuspielen, aber es zeigt ein Wiedergabesymbol mit einer Kreuzlinie.Wie geschützter Videoinhalt in iOS mit AVPlayer wiedergegeben wird

Nach der Anmeldung App müssen Sie die Cookies auf die Medien-Assets synchronisieren, um das geschützte Video nach der Authentifizierung zu spielen.
Mit AVURLAsset streamen wir das geschützte Video, aber es funktioniert nicht.

NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]; 
NSDictionary *opt = @{ 
          AVURLAssetReferenceRestrictionsKey: @(AVAssetReferenceRestrictionForbidRemoteReferenceToLocal), 
          AVURLAssetHTTPCookiesKey: cookies 
         }; 
AVAsset *asset = [AVURLAsset URLAssetWithURL:linkUrl//Media protected URL(http://www.example.com/media/video/media_mp4) 
             options:opt]; 

AVPlayerItem * item = [AVPlayerItem playerItemWithAsset:asset]; 
AVPlayer *player = [[AVPlayer alloc] initWithPlayerItem:item]; 
AVPlayerViewController *playerVC = [[AVPlayerViewController alloc]init]; 
playerVC.player = player; 

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.6 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
    [self presentViewController:playerVC animated:NO completion:nil];   
}); 
+0

Welche Art von geschützten Video? DRM? – Raptor

+0

Es ist nicht DRM, aber es erfordert Single-Sign-On-Authentifizierung, die bereits vom Login-Service erhalten. –

+0

Sie müssen erklären, wie die Authentifizierung auf das Video angewendet wird. Wenn jemand den direkten Link der Medien erhält, wird er das Video abspielen können? oder die Verbindung wird basierend auf dem Authentifizierungsergebnis generiert und wird einige Zeit später ablaufen? Wir brauchen viel mehr Details, bevor wir helfen können. – Raptor

Antwort

2

Nach der Suche viel und endlich funktionierte es für mich. Ich habe die App-Cookies von NSHTTPCookieStorage Klasse. Dann mit diesem habe ich ein Wörterbuch mit den wichtigsten Wert-Paare wie unten, @{AVURLAssetHTTPCookiesKey : cookies}

Dann habe ich dieses Wörterbuch zu den Optionen in den AVURLAsset URLAssetWithURL:linkUrl Optionen:

NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]; 

AVURLAsset * asset = [AVURLAsset URLAssetWithURL:linkUrl options:@{AVURLAssetHTTPCookiesKey : cookies}]; 

AVPlayerItem * item = [AVPlayerItem playerItemWithAsset:asset]; 

AVPlayer *player = [[AVPlayer alloc] initWithPlayerItem:item]; 

AVPlayerViewController *playerVC = [[AVPlayerViewController alloc]init]; 

playerVC.player = player; 

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.6 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 

    [self presentViewController:playerVC animated:NO completion:nil]; 

}); 
+0

@Dipen Panchasara, Es funktioniert nicht für mich :(. Ich benutze dies in swift Sprache. –

+0

@PallaviNikumbh Ich habe nicht versucht, schnell, aber für Objective-C funktioniert es. Es wäre gut, Sie setzen Ihren Code. –

+0

@Dipen Panchasara, wo ich den Code setzen? –

Verwandte Themen