it-swarm.com.de

Entfernen Sie mit FFmpeg Metadaten aus allen Formaten

Wie kann ich alle Metadaten aus allen Formaten über FFmpeg entfernen?

Ich kann nur spezielle Metadaten für jedes Format per man ffmpeg einstellen. Gibt es eine Option oder Methode zum Löschen aller Metadaten und zum Entfernen von Medien aus allen auf ffmpeg verfügbaren Metadaten?

   -metadata key=value
       Set a metadata key/value pair.

       For example, for setting the title in the output file:

               ffmpeg -i in.avi -metadata title="my title" out.flv
37
sweb

Wenn ich die Befehlszeile mit @izx leicht ändere, habe ich Folgendes:

ffmpeg -i in.mov -map_metadata -1 -c:v copy -c:a copy out.mov

Das Ergebnis ist (erneut mit exiftool geprüft) ein Metadatensatz, der von 81 auf 52 Zeilen reduziert wurde. Beachten Sie, dass Sie nicht einfach alle Metadaten entfernen können, da einige Dinge erhalten bleiben. Allerdings konnte ich das Erstellungsdatum nicht ändern, was seltsam ist, da es in der Ubuntu-Version zu funktionieren schien.

Ich habe auf der FFmpeg-Mailingliste nach Updates oder Kommentaren gefragt. Mal sehen, was sie zu sagen haben.

53
slhck

HINWEIS: Ich habe ffmpeg aktualisiert (zuvor hatte ich die veraltete Version von avconv aus den Ubuntu-Repositories).

Jetzt funktioniert @ slhcks -map_metadata -1 einwandfrei.

Ich empfehle @ slhcks Lösung , weil sie weniger tippt und aktuell ist. Ich lasse dies hier für alle, die eine veraltete Version verwenden.


Am einfachsten ist es, -map_metadata so einzustellen, dass einer der Eingabestreams verwendet wird, anstatt globale Metadaten zu verwenden. In 99% der Fälle sollte dies funktionieren. HINWEIS: Ich verwende avconv, da dies in den Ubuntu 12.04-Repositories enthalten ist. Dies wird wahrscheinlich Drop-In-kompatibel mit ffmpeg sein, da die Syntax meiner Erfahrung nach immer stimmt.

avconv -i input.mp4 -map 0 -map_metadata 0:s:0 -c copy output.mp4

Dadurch werden die Metadaten aus dem ersten Datenstrom (normalerweise dem Videostrom) entnommen und zum Ersetzen der globalen Metadaten der Containerdatei verwendet. Dies funktioniert, weil in den Datenströmen meist keine aussagekräftigen Metadaten geschrieben sind. Manchmal ist dies jedoch der Fall, und Sie möchten diese Metadaten vollständig entfernen. Leider war die einzige Möglichkeit, die mir in den Sinn kam, eine Pipe und zwei avconv-Prozesse.

avconv -i input.mp4 -f wav - | avconv -i - -i input.mp4 -map 1 -map_metadata 0 -c copy output.mp4

Dies nutzt die Tatsache aus, dass WAV-Dateien keine Metadaten enthalten können (da das Format erstellt wurde, bevor Metadaten-Tags vorhanden waren).

Beide Methoden haben alle Metadaten in einer Datei ausgeblendet, in der ich sie gerade getestet habe - alles, worüber exiftool berichtet wurde, waren die Codec-Informationen, und avprobe hat mir keine Metadaten gemeldet. Die Verwendung einer Pipe ist ziemlich hässlich, und die erste Methode funktioniert in 99% der Fälle, sodass dies bevorzugt werden sollte.

6
evilsoup

Meine Lösung zum Entfernen von Metadaten, Kapiteln, zum Ändern der Erstellungszeit und des Titels. Auf diese Weise sollte sich jeder Metacontent von der Originaldatei unterscheiden:

ffmpeg -y -i "test.mkv" -c copy -map_metadata -1 -metadata title="My Title" -metadata creation_time=2016-09-20T21:30:00 -map_chapters -1 "test.mkv"
6
shub