Frage

Als nächstes möchte ich den Video -Inhalt schützen (verschlüsseln) und in der Lage sein, ihn abzuspielen.

Schwieriger Teil ist, dass wir nicht alles gleichzeitig in den Gedächtnis laden und dort entschlüsseln möchten (obwohl dies auch eine Option ist)

Was im Wesentlichen auf der Suche nach uns auf der Suche ist, ist die Lösung für uns, um engyted Videoinhalte von HDD zu spielen, so dass nur unsere Anwendung dieses Video abspielen kann.

Doch sollte die Datei von Block per Block gelesen werden (denn wenn wir mit einer 2 -GB -Datei zu tun haben, sollte sie nicht auf einmal in den Speicher geladen werden).

Bitte lassen Sie uns wissen, was sind mögliche Wege?

  • Silverlight4 DRM - Okay, das sieht nach einer vernünftigen Lösung aus, die für unsere Bedürfnisse flexibel genug ist. Das PlayReady SDK kostet jedoch etwa 30.000 US -Dollar und wir möchten Silverlight nicht verwenden. Vermutlich C# oder C ++

  • Nun, eine Idee, die wir hatten, besteht darin, große Videodatei in die separaten verschlüsselten Videodateien (wie Sequenz) zu trennen und dann jede Datei ("Block") in direktem Speicher zu laden/zu entschlüsseln und aus dem Speicher abzuspielen (und zwischen den Sequenzdateien zu alternieren). Dies scheint der bisher am einfachsten und wahrscheinlich das, was wirklich getan werden könnte. Welche LIBs können jedoch Videodateien von MemoryStream abspielen? Ich glaube, VLC sollte es tun können ..?

  • Eine andere Idee bestand darin, nur unkomprimierte AVI zu nehmen, Videoband nach Frame zu verarbeiten, jeden Frame zu ändern (irgendwie verschlüsseln). Wenn wir das Video abspielen, machen wir den Rahmen im Speicher neu auf und entschlüsseln es.

  • Der Umgang mit nur einem bestimmten Codec und dem Schreiben einer benutzerdefinierten Lösung dafür - eigentlich klingt das ziemlich cool, aber ich fürchte, es wird uns viel zu viel Zeit brauchen, aber lassen Sie es uns über diesen Ansatz informieren

  • Der andere, der VLC verwendet, um verschlüsselten Stream von Localhost (z. B. Anwendung zu streamen, die verschlüsselte HDD -Datei in die Localhost: 800/Blahblah) und dieselbe Anwendung hat dort VLC -Steuerung, um den verschlüsselten Stream zu entschlüsseln. Wir wissen immer noch nicht, ob die Datei auf HDD auch tatsächlich verschlüsselt werden kann (so kann der Benutzer diese Datei nicht auf einem anderen Spieler abspielen) und VLC ist GPL, was nicht gut für uns ist.

War es hilfreich?

Lösung

Die Wiedergabepipeline ist in der Regel ein Satz von Komponenten, die zusammen angeschlossen sind. Im DirectShow, Eine der APIs und die beliebteste und man verwendet Leser-, Splitter-, Codecs-, Post-Prozess- und Präsentationsteile, die als Filter bezeichnet werden, und das Ganze spielt sich zurück. Es ist möglich, den Leser durch Ihren eigenen Ersatz zu ersetzen, der verschlüsselte Inhalte und Decodes im laufenden Fliegen liest. Es kann leicht bei Bedarf dekodieren, nicht nötig, den gesamten 2 GB -Block zu dekodieren, um beispielsweise einen ersten Frame oder ein Miniaturansichten zu erhalten.

Nachdem Sie den Leserteil nur angeschlossen haben, können Sie die Verschlüsselungsmethode zwischen benutzerdefiniertem Algorithmus, einer der bekannten API- oder externen Bibliothek, auswählen.

Trotzdem denke ich, dass dies und andere (zumindest die meisten anderen) Wege keine kugelsichere Garantie erhalten, dass codierte Inhalte nicht umgekehrt werden können. Jemand anderes kann immer noch in die Pipeline einbinden und von dort aus dekodierten Inhalten greifen. Wenn Sie froh sind, dass dies zumindest Komplexität und Erfahrung erfordert, wird eine solche Verschlüsselung ziemlich gut funktionieren.

Andere Tipps

Nahezu jeder weit verbreitete Verschlüsselungsalgorithmus funktioniert auf Größenblöcken zwischen 128 und 256 Bit - und entschlüsselt gerne nur einige davon gleichzeitig, nur gut zum Streaming. Schauen Sie sich an, z. B., zB,, Crypto ++ für eine Softwarebibliothek mit Streaming -Schnittstellen. (Dh, Sie öffnen einfach eine Datei, stellen einen Filter um und setzen dann einfach wie bei jeder anderen Datei weiter.)

Ok, so habe ich es gemacht. (Android)

Das verschlüsselte Video wird in SD-Karten platziert. RC4 verschlüsselt - so kann es während des Streams im laufenden Fliegen konvertiert werden. Dann habe ich einen lokalen Dateiserver erstellt, der auf dem Gerät (als Dienst) ausgeführt wird. Der Ausgabestream macht etwas mehr zusätzlich, bevor er Daten versendet - er filtert ihn durch einen RC4 -Entschlüsselung, bevor er sie in den Puffer schreibt. Zeigen Sie dann einfach den Media Player auf die URL des Videos (http: // localhost: port/abc.3gp "). Infolgedessen bleibt das Video von der SDCard sicher - Sie können es nicht abspielen, wenn Sie den Schlüssel haben - was Sie haben - was Sie sollte sich für jedes Video für zusätzliche Sicherheit unterscheiden.

Vielen Dank für die Ansers. Ich bin ein Typ, der viele verschiedene Ansätze durchgemacht hat.

Ich habe meinen eigenen Videoplayer mit OpenGL+FFMPEG geschrieben, das MP4 abspielen und jeden Frame in der GPU mit Shader entschlüsselt. Ich habe auch mit anderen möglichen Lösungen experimentiert, wie z. B. Streaming von einem Webserver mit VLC. (VLC bietet eine Art Verschlüsselung/Entschlüsselung beim Umgang mit Strömen) und yada yada yada.

Eine Lösung bestand auch darin, 4 Medienelemente (WPF) zu verwenden, und das tatsächliche Video wurde praktisch in 4 Bereiche aufgeteilt und jeder Bereich wurde gedreht, sodass das Video nicht angezeigt wurde. Sobald Sie das Video in 4 Medien geladen haben, können Sie herausfinden, welcher Teil Sie anzeigen und auch zurückdrehen möchten. Aber ehrlich gesagt ist Medienelement schlecht.

Allerdings war ich genau mit dem, was Romanr sagte. Ich habe das DirectShow -Diagramm mit MP4SPLITTERTERT, FFDSHOW, Videorenderer und MP4Splitter SourceFilter erstellt. Der Messwert erfolgt in BaseSPlitter/Asyncreader.cpp (modifizieren Sie einfach die Syncread -Funktion), die MP4Splitter verwendet.

Wenn Sie es selbst implementieren möchten, verwenden Sie einfach das MPC-HC-Projekt und ändern Sie die Filter, wie Sie möchten. Ich habe einige Zeit gebraucht, um das DirectShow -Konzept zu umgehen, aber sobald Sie es verstanden haben, wird es zu großartiger Waffe.

http://sourceforge.net/apps/trac/mpc-hc/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top