18 Stimmen

Verschlüsselte Videos mit AVPlayer abspielen

Ich implementiere eine Anwendung, die einen Videoplayer enthält. Aus einigen Gründen werden Videodateien mit AES verschlüsselt, und die Größe dieser Dateien kann ziemlich groß sein, um zu vermeiden, dass sie in einem Stück in den RAM geladen werden. Ich suche nach einer Möglichkeit, sie mit AVPlayer abzuspielen.

Versucht:

1) Benutzerdefiniertes NSURLProtokoll wie hier vorgeschlagen http://aptogo.co.uk/2010/07/protecting-resources/ Hat nicht funktioniert, ich vermute, dass AVPlayer seine eigene Software verwendet und meine nicht aufgerufen wird.

2) Verwenden Sie AVAsset, um Videos in kleine Stücke zu schneiden und sie dann an AVPlayer weiterzuleiten - dies ist fehlgeschlagen, weil es dafür keine API in AVPlayer gibt.

Für jede Abhilfe wären wir sehr dankbar :)

4voto

Jernej Strasner Punkte 4530

Sie haben 2 Möglichkeiten:

  1. Wenn Sie auf iOS 7 und neuer abzielen, sollten Sie AVAssetResourceLoaderDelegate . Sie können damit das tun, was Sie auch mit einer benutzerdefinierten NSURLProtocol sondern speziell für AVPlayer .

  2. Emulieren Sie einen HTTP-Server mit Unterstützung für den Range-Header und zeigen Sie die AVURLAsset auf localhost.

Ich habe #2 bereits umgesetzt und kann bei Bedarf weitere Informationen liefern.

3voto

Martin Punkte 11375

Ich habe gerade das Apple-Beispielprojekt heruntergeladen https://developer.apple.com/library/ios/samplecode/sc1791/Listings/ReadMe_txt.html und es scheint genau das zu tun, was Sie wollen.

Der Delegierte fängt jeden AVURLAsset 's AVAssetResourceLoader anruft und eine brandneue .m3a8 Datei mit einem benutzerdefinierten Entschlüsselungsschlüssel enthalten.
Dann füttert es den Spieler mit allen .ts Datei-URLs in der m3a8 .

Das Projekt gibt einen guten Überblick darüber, was mit HLS-Feeds alles möglich ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X