Entfernen Sie mit FFmpeg Metadaten aus allen Formaten

43

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
sweb
quelle

Antworten:

63

Wenn ich die Kommandozeile von @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 markiert exiftool) 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.

slhck
quelle
2
In movoder mp4Dateien ist das Erstellungsdatum ein ganzzahliges Feld in der Kopfzeile des Films und in der Titelzeile (ausgedrückt als Sekunden seit 1904). Obwohl Sie den Wert auf 0 oder einen anderen festen Wert setzen könnten, gibt es keine Möglichkeit, ihn zu entfernen, und Sie haben immer noch einen gültigen Wert movoder eine mp4Datei.
mark4o
Ich weiß, dass ich es nicht vollständig entfernen konnte, aber aus irgendeinem Grund war ein Ändern nicht möglich.
Slhck
3
Mit dem aktuellen ffmpeg kann die Erstellungszeit mit -metadata creation_time=2012-12-17T21:30:00(UTC) geändert werden .
mark4o
1
Wie kann ich dies ändern, um auch den Titel zu entfernen? Derzeit wird der Titel auf einen automatisch generierten Wert gesetzt. Ich möchte am Ende den vollständigen Dateinamen als Titel sehen.
Anfänger
2
@Rookie Dann musst du einstellen -metadata title="Some Value". Oder für eine Datei wie ffmpeg -i "$file" -map_metadata -1 -c copy -metadata title="$file" "${file%%*.mp4}-new.mp4
folgt
9

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"
stupsen
quelle
1
Diese Variante war nützlich für mich, danke. Ich wünschte, das ffmpeg-Handbuch würde mehr Beispiele wie das oben gezeigte zeigen. stackoverflow, superuser etc ... sind alle sehr nützlich, weil sie viele hilfreiche Informationen enthalten.
Shevy
8

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

Jetzt funktioniert @ slhck's -map_metadata -1 einwandfrei.

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


Der einfachste Weg, dies zu tun, besteht darin -map_metadata, einen der Eingabestreams zu verwenden, 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 mit ffmpeg kompatibel 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, mit der ich sie gerade getestet habe. Es wurden nur exiftooldie Codec-Informationen gemeldet, 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.

Übelsuppe
quelle
1
WAVE-Dateien können wie andere RIFF-basierte Dateien (z. B. AVI) Metadaten-Tags enthalten, die einen "INFO" -Listenabschnitt verwenden. Es wird einfach nicht sehr oft verwendet.
Blerontin