Video verpixeln - Eine hoffentlich nicht zu grüne Banane.

    • Offizieller Beitrag

    Anhang entfernt. Neue Version 0.2

    In Videos verpixeln hatte ich angekündigt, dass ich eine GUI zum Verpixeln schreiben wollte. Falls es jemand gebrauchen kann, hier der erste Entwurf.

    Die Idee

    Aus datenschutzrechtlichen Gründen sollen Kennzeichen und/oder Gesichter in Videos vor einer Veröffentlichung unkenntlich gemacht werden. Dazu werden mit Avisynth verschiedene Masken auf das Bild gelegt und die entsprechenden Bildteile verdeckt.

    Hintergrund

    Avisynth ist ein scriptbasierter Frameserver. Ein Frameserver lädt Dateien, welche Video-, Audio- und/oder Bilddaten enthalten und gibt sie an andere Programme zur Weiterverarbeitung weiter. Das Script ist ein einfacher Text, welcher in einer ebenso einfachen Textdatei mit der Dateiendung .avs gespeichert ist. Mit Hilfe dieses Scriptes ist es möglich, Bild- und Tondaten mit Hilfe von Filtern in vielfältiger Art und Weise zu bearbeiten. In der Regel wird Avisynth zur Verbesserung von Video- und Bildmaterial verwendet.

    Vorbereitung

    Um Zensor verwenden zu können, muss Avisynth installiert sein. Zensor selbst ist eine portable Anwendung. Das bedeutet, es muss nicht installiert sondern nur entpackt werden, wobei das Programm Schreibrechte für sein Verzeichnis benötigt. In dieses wird eine INI-Datei und das temporäre Avisynth-Script gespeichert.

    Was kann Zensor?

    Zensor stellt im Tab "Avisynth-Script" ein Grundgerüst für das Avisynth-Script zur Verfügung. In dieses fügt es ein vom Anwender ausgewähltes AVI-Video ein. Auf dem Tab "Editor" wird das Originalvideo mit Hilfe von Avisynth angezeigt und der Anwender kann eine größenveränderliche Maske auf dem Bild positionieren. Das heißt, der Anwender sucht das erste und letzte Bild für die Maskierung aus. Dabei kann die Maske nur linear bewegt und noch nicht in der Größe geändert werden. Die Daten werden zunächst in eine Maske und später in das Script eingetragen. Das Script muss derzeit noch nachbearbeitet werden. Im Tab "Zensor" lässt sich die Wirkung des Scriptes kontrolliert werden.

    Nachbearbeitung

    Das Grundgerüst des Avisynth-Scriptes sieht so aus:

    Das Script enthält viele Kommentaren und ein paar Anweisungen. Alle Kommentare beginnen mit dem Zeichen '#'. Es besteht aus drei Teilen:

    Code
    ###=== Das zu verpixelnde Video. ======================
    MyVideo = AviSource("Über den Button links oben laden.")


    Hier wird der Variablen MyVideo das Video zugewiesen. Wie dem Text zu entnehmen ist, soll dazu der Button links über dem Script verwendet werden. Das ausgewählte AVI wird in das Script eingetragen.

    Es wäre auch die Einbindung von Quicktime (.mov) und MPEG (.mpg) möglich.

    Dies ist die Funktion, mit welchem ein schwarzer rechteckiger Fleck an einer bestimmten Stelle im Video gezeichnet wird. Darin muss nichts verändert werden. Die Kommentare erläutern, welche Variablen der Funktion übergeben werden müssen.

    Code
    ###=== Platz für Einzelbefehle. =======================
    ### Beispiel:
    ### a = MyAnimate(MyVideo, 0, 13, 50, 350, 0, 380, 40, 120, 40, 120)  # Funktion wird auf MyVideo von Bild 0 bis 13 angewandt. Maske wandert von 50, 350 nach 0, 380.
    ### b = MyAnimate(a, 12, 31, 265, 330, 100, 400, 40, 120, 40, 120)    # Funktion wird auf a angewandt. Die Maskengröße beträgt unverändert 40 * 120.
    ### MyAnimate(b, 240, 276, 1055, 427, 1060, 450, 40, 120, 40, 120)    # Funktion wird auf b angewandt. Es gibt keine linke Seite, so dass das Ergebnis angezeigt wird.
    
    
    ###=== Fake ===========================================
    MyAnimate(MyVideo, 0, 50, 100, 100, 400, 200, 40, 120, 400, 600)

    Der Teil enthält als Kommentar ein Beispiel dafür, wie die Liste der Funktionsaufrufe, welcher der Nutzer mit Hilfe des Editors erstellt, aussehen sollte. Ausserdem gibt es einen Fakeeintrag, mit welchem man sofort im Tab "Zensor" gucken kann, wie sich so ein Aufruf auswirkt.

    Mit dem Editor wird zum Beispiel eine derartige Liste erstellt:


    Jede einzelne Zeile würde in diesem Zustand eine Fehlermeldung ergeben. Deshalb ist noch Nacharbeit notwendig. Diese soll Version 0.2 entfallen.

    Die Nacharbeit besteht darin, jeweils einen letzten Clip und einen neuen Clip einzutragen. Beim ersten Eintrag soll das Originalvideo bearbeitet werden. Deshalb wird "MyVideo" eingetragen. Für den resultierenden neuen Clip wird eine linke Seite "a = " eingefügt.

    Code
    a = MyAnimate(MyVideo, 0,  13, 150, 350, -40, 380, 40, 120, 40, 120)

    Beim nächsen Eintrag soll dem Clip eine weitere Maske hinzugefügt werden:

    Code
    b = MyAnimate(a, 6, 11, 265, 330, 240, 330, 40, 120, 40, 120)

    Dies zieht sich bis zum vorletzten Eintrag. Nur beim letzten Eintrag wird keine linke Seite benötigt.

    Code
    MyAnimate(p>, 240, 276, 1055, 427, 1060, 450, 40, 120, 40, 120)
    • Offizieller Beitrag

    Eigentlich sollte alles einigermaßen schlüssig sein. Das kann ich natürlich sagen. Geht alles nach "meiner Logik". Deshalb ein paar Hinweise.

    1 - "Neues Script"

    In das Editorfenster wird das Gerüst des AviScriptes geschrieben. Sollte bereits eines darin enthalten sein, kann dieses noch gespeichert werden.

    Schlägt man die anderen Tabs auf, gibt es noch Fehlerhinweise.

    2 - "Script öffnen"

    Damit läßt sich ein bestehendes Script laden. Es wird das Video gesucht und geladen.

    3 - "Script speichern"

    Das Script speichern. Hat das Script bereits einen Namen erfolgt dies ohne Dialog.

    4 - "Script speichern unter"

    Das Script wird mit einem "Speichern unter"-Dialog gespeichert. Dabei sollte im Moment die Dateiendung ".AVS" mit angegeben werden.

    5 - "Video laden"

    Es wird die Zeile

    Code
    MyVideo = AviSource("Über den Button links oben laden.">


    gesucht und dort die mit dem Dialog ausgewählte Datei eingetragen.

    Im Moment werden nur AVIs geladen und die Größe 720 * 1280 verwendet weil dies das Material von meinner Kamera ist. Hat es keine Fehlermeldung gegeben, sollte das Originalvideo im Tab "Editor" und das Ergebnis mit dem Fakeeintrag im Tab "Zensor" zu sehen sein.

    • Offizieller Beitrag

    Im Tab Editor kann man die zu verpixelnden - im Moment nur auszuschwärzenden - Stellen ermittelt.

    1 - Player

    Der Player funtkioniert für "Editor" und "Zensor" wenn dort Video bzw Script geladen sind. Die Tastaturbedienung kann man sich ansehen wenn man das Button mit den sechs Tasten anklickt.

    2 - Aktuelle Position/Gehe zu Bild

    Es wird die aktuelle Bildnummer angezeigt. Man kann eine Nummer eingeben und mit Enter wird dieses dazugehörige Bild angezeigt.

    3 - Trackbar

    Damit kann man durch das Video navigieren.

    4 - Maske

    Zeigt die Größe und Position der Maske an, wenn das aktuelle das erste oder letzte Bild des Bereiches wäre. Um die Position und/oder die Größe zu ändern muss man einmal auf die Maske klicken.

    5 - Bereich

    Hier werden die Daten für den Scripteintrag gesammelt. Wenn man den Button unter Start klickt, werden die aktuelle Bildnummer, die linke ober Ecke sowie die Größe der Maske eingetragen. Dasselbe gilt für Ende. Der Klick auf den Button bei Befehl erstellt einen Scripteintrag.

    Wenn das Panel im Weg ist, kann man es mit der Maus am Rand anfassen und verschieben.

    • Offizieller Beitrag


    Man kann das Beispiel und den Fake- bzw Dummy-Eintrag löschen. Auf jeden Fall sollten die erstellten Einträge nach dem Muster im Beispiel bearbeitet werden. Das müsste selbsterklärend sein.

    • Offizieller Beitrag

    Im Tab "Zensor" kann man sich das fertige Video ansehen.

    Beim Abspielen der Videos kann das Bild flackern. Das liegt daran, dass die Bilder einzeln mit Avisynth geladen und auf ein Image kopiert werden. Deshalb kann die Abspielgeschwindigkeit auch etwas geringer als die tatsächliche Geschwindigkeit sein.

    Wenn andere Videoformate unterstützt werden sollen, bitte ich um entsprechende Informationen und kurze Beispielvideos.

    Da nicht alle Kameras eine Bildauflösung von 720 * 1280 haben, bitte ich auch um entsprechende Infos.

    Und Hinweise, welche zum Reifen dieser Banane beitragen, sind ausdrücklich erwünscht.

    • Offizieller Beitrag

    :face_with_open_mouth: Wer das Thema Videos verpixeln bzw darin die Beiträge #45 ff nicht gelesen hat weiß nicht unbedingt etwas mit dieser Banane anzufangen.

    Die Idee: Mit Hilfe des scriptbaisierten Frameservers Avisynth sollen aus datenschutzrechtlichen Gründen zum Beispiel Kennzeichen in Videos unkenntlich gemacht werden. Die grafische Benutzeroberfläche soll das Script anzeigen, einen Editor für die Erstellung einzelnen Befehle und eine Vorschau für das Script zur Verfügung stellen. Ist das Script fertig kann das Video damit encodet werden.

    Die Banane: Sie stellt das Grundgerüst eines Avisynth-Scriptes zur Verfügung. In dieses Script kann ein Video im AVI-Format und Befehle eingefügt werden. Die Befehle lassen sich mit dem Editor erstellen und bewirken, dass sich ein schwarzes Rechteck in einer bestimmten Größe ab einem bestimmten Bild von einer bestimmten Position linear bis zu einem bestimmten Bild zu einer anderen bestimmten Position bewegt. Die Befehle müssen im Script vom Anwender noch nachbearbeitet werden.

    • Offizieller Beitrag

    Um auch die Größe ändern zu können, muss in dem Script die Function MyAnimate ersetzt werden:


    Ich überlege, in der nächsten Version die Reihenfolge der Variablen zu ändern. Im Moment ist die Reihenfolge Frames, Position, Größe jeweils Start und End. Ich würde lieber erst alle Start- und dann alle Endvariablen haben.

  • Dieses Thema enthält 27 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind, bitte registrieren Sie sich oder melden Sie sich an um diese lesen zu können. Registrierte Benutzer sehen keine Werbung.