2012-09-02 8 views
10

Ich möchte DRM in einem iOS-Videoplayer implementieren, aber ich bin mir nicht sicher, wie dies zu implementieren ist. Um Video-DRM zu implementieren (während ich immer noch Apples hardwarebeschleunigte H264-Decodierung verwende), brauche ich eine Möglichkeit, den entschlüsselten H264-Stream in die standardmäßigen iOS-Videowiedergabe-APIs zu leiten.So implementieren Sie Video DRM in iOS

Laut this question war es nicht möglich DRM von Drittanbietern im September 2010 zu implementieren. Es gibt eine thread in the Apple Developer Forums, die nirgendwohin geht. Ab heute gibt es jedoch eine Reihe von DRM-Bibliotheken von Drittanbietern: Widevine, Irdeto (PDF), Marlin. Sie haben eindeutig einen Weg gefunden, einen angepassten Stream an den Media Player in von Apple genehmigten Apps zu übergeben.

Ich habe zwei Leads gefunden. Einer ist ein Vorschlag zu create a custom URL protocol, aber die Leute scheinen schlechte Ergebnisse mit diesem Video zu haben. Die andere besteht darin, einen lokalen HTTP-Server-Thread zu erstellen und den Inhalt per HTTP-Live-Streaming auf 127.0.0.1 innerhalb des iDevice bereitzustellen. Ich wäre mir sehr sicher, dass Apple zustimmen wird, bevor ich diesen Weg gehe.

Also - welche von Apple genehmigten APIs verwenden Drittanbieter-DRM-Implementierungen, um entschlüsselte Videodaten in den Videoplayer zu importieren?

Edit: latest BBC iPlayer for iOS ermöglicht das Herunterladen von Programmen für die spätere Anzeige. Entweder sie speichern den Inhalt im Klaren, oder sie haben dieses Problem geknackt.

+1

In Bezug auf die HTTP auf 127.0.0.1 Live-Stream kann ich Ihnen sagen, dass es von Apple funktioniert und wird akzeptiert. Kommerzielle Lösungen wie Verimatrix verwenden diesen Ansatz. –

+0

Danke - Ich hatte Verimatrix noch nicht kennengelernt und füge es unserer Liste hinzu. –

+0

überprüfen Sie diesen Artikel, den ich kürzlich schrieb: http://aameer.github.io/articles/digital-rights-management-multi-drm/ es erklärt im Detail, wie Multi-Drm zu erreichen – Aameer

Antwort

2

Sie können mit dem Entschlüsseln der Datei in eine andere Datei beginnen und diese Datei beim Entschlüsseln wiedergeben. Sie müssen es ein paar Sekunden im Wert von Video puffern lassen, aber es wird funktionieren.

Zusätzlich müssen Sie sicherstellen, dass das moov Atom vor dem mdat Atom in der Datei ist, sonst wird es nicht funktionieren. (AVFoundation, zum Beispiel, erstellt MP4s, wo das moov Atom kommt nach dem mdat Atom, und so müssten sie geändert werden, um zu arbeiten)

+0

Danke - ich kontrolliere die Codierung, Daher sollte die interne Reihenfolge der Datei einfach sein. Das wirft ein paar Probleme auf - ob ich versuche, Versuche des Benutzers, im Video nachzuspüren, und was man mit der großen entschlüsselten Datei im Dateisystem tun kann. Ich denke nicht, dass iOS Sparse-Dateien unterstützt, daher muss ich das Video wahrscheinlich in Stücke teilen, die ähnlich wie HLS sind, um dies zu vereinfachen. –

+0

Ja, ich kann Ihnen nicht sagen, was die richtige Lösung in Ihrem Fall ist. Zum Suchen können Sie wahrscheinlich die Unteratome des "stbl" -Atoms verwenden, um herauszufinden, wo in der Datei Sie entschlüsseln und dann von dort in eine neue Datei entschlüsseln sollten. Ich denke, dass dies eine interessante Übung ist, um den MP4-Container zu missbrauchen. Sie wollen wahrscheinlich auch vermeiden, das ganze Ding sofort zu entschlüsseln, aber Sie können das ziemlich einfach vermeiden, indem Sie mehrere aassetreaders verwenden. – jgh

+0

Ich denke, dass jede Antwort ein Hack sein wird, und wir haben gerade angefangen, die Architektur für das Android in Betracht zu ziehen Ausführung. Ich war überrascht, wie begrenzt diese mobilen APIs mit DirectShow verglichen werden. –