Wie entferne ich alle Metadaten aus einer Quicktime-Filmdatei?

7

Meine Kamera nimmt .mov-Dateien als Filme auf. Wie kann ich alle Metadaten aus ihnen entfernen, damit ich sicher sein kann, sie auf Youtube zu teilen, ohne versehentlich zu teilen, wann / wo sie gefilmt wurden, welchen Kameratyp ich habe usw. Ein Befehlszeilen-Einzeiler ist nett, aber wenn es zu verwirrend ist wäre ein GUI-Programm besser.

John Baber-Lucero
quelle

Antworten:

13

Nun, ich habe eine Befehlszeilenantwort:

Hinweis: Dies funktioniert ffmpegstandardmäßig nur mit dem in Ubuntu enthaltenen: Es wird eine ähnliche Version haben wie 0.8.1-4:0.8.1-0ubuntu1; Es funktioniert NICHT mit ffmpeg-Binärdateien, die Sie von einem PPA eines Drittanbieters installiert oder selbst kompiliert haben. Ihr Kilometerstand kann variieren.

  • Installieren Sie diese: sudo apt-get install ffmpeg libimage-exiftool-perl
  • Navigieren Sie dann zu Ihrer Quelldatei .mov, wir nennen sie test.mov
  • Und Renn:

    ffmpeg -i test.mov -map_metadata -1 -vcodec copy -acodec copy test-nometadata.mov
    
  • Sie können dann exiftoolüberprüfen, ob es funktioniert hat. exiftool test.movund exiftool test-nometadata.movsollte Ihnen den Unterschied zeigen.

  • Hier sind meine Beispielausgaben einer alten Nikon .mov mit Tonnen von Metadaten (pastebin'd):

    1. vor - 80 Metadatenzeilen
    2. nach - 52 Metadatenzeilen (sogar die Zeiten zum Erstellen, Ändern usw. wurden auf Null gesetzt)

(Beachten Sie, dass die Reihenfolge in ffmpeg oben wichtig ist - die Eingabe- und Ausgabedateien müssen ganz am Ende angegeben werden.)

ish
quelle
Ich bekomme das, wenn ich versuche, das zu tun, was Sie vorgeschlagen haben.
John Baber-Lucero
Das liegt daran, dass Sie einen Nicht-Standard verwenden ffmpeg git-2012-05-13-a927641, nicht den Standard-Libav aus den offiziellen Repos. Meine Version ist 0.8.1-4:0.8.1-0ubuntu1und funktioniert gut.
ish
Ach. Das liegt daran, dass ich diese Anweisungen befolgt habe, für die das neueste ffmpeg erforderlich war. Ich werde auf Meta fragen, ob diese Frage aus askubuntu entfernt werden soll, da dies mit ubuntus ffmpeg nicht möglich ist.
John Baber-Lucero
-1, izx, was für eine Reihenfolge ist das?! FFmpeg geht eindeutig davon aus, dass jeder zuvor angegebene -iCodec der Codec ist, mit dem die Eingabe analysiert werden soll. Sie können Eingaben nicht mit Kopie analysieren . "Kopieren" ist kein gültiger Decoder, daher schlägt der Befehl natürlich fehl. Sie müssen sich nur -i test.movvor dem vcodec/ bewegen acodecund es wird funktionieren. Vielleicht möchten Sie ersetzen , vcodecmit c:vund acodecmit c:aals auch, da sie für wie ... für immer weiterentwickelt worden sind. Dies ist kein Mangel einer "nicht standardmäßigen" Version. Es ist nur die neueste Version.
Slhck
Sie wissen, dann möchten Sie vielleicht Ubuntu dazu bewegen, zu ffmpeg anstelle von libav zu wechseln. Ich bin mir der Probleme bewusst, auf die Sie hinweisen, ABER diese Syntax ist die einzige, die mit dem (veralteten) ffmpeg funktioniert, das in Ubuntus libav enthalten ist . Unser Ziel bei AskUbuntu ist es, mit allen Tools zu arbeiten, die Ubuntu standardmäßig zur Verfügung stellt, und nicht mit inoffiziellen Gabeln oder selbst kompilierten Git Pulls oder PPAs von Drittanbietern zu helfen.
ish
2

HINWEIS: Mit einer aktuellen Version von ffmpeg (und vermutlich avconv, aber ich habe das nicht getestet) können Sie einfach Folgendes verwenden:

ffmpeg -i input.mp4 -map 0 -map_metadata -1 -c copy output.mp4

Mit -map_metadata -1wird eine leere 'Dummy'-Metadatenquelle erstellt. Verwenden Sie für die Version von avconv in den Repos oder andere veraltete Versionen die unten beschriebene Methode.


Mit avconv (oder ffmpeg, wenn dies Ihre bevorzugte Waffe ist, ist die Syntax dieselbe):

Der einfachste Weg, dies zu tun, besteht darin -map_metadata, einen der Eingabestreams anstelle globaler Metadaten zu verwenden. In 99% der Fälle sollte dies funktionieren.

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 Videostream) entnommen und zum Ersetzen der globalen Metadaten der Containerdatei verwendet. Dies funktioniert, da in die Datenströme meistens keine aussagekräftigen Metadaten geschrieben sind. Manchmal tun sie dies jedoch, und Sie möchten diese Metadaten vollständig entfernen. Leider kann ich mir nur eine Pipe und zwei avconv-Prozesse vorstellen.

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. Es wurden lediglich exiftooldie Codec-Informationen gemeldet, und avprobe hat mir keine Metadaten gemeldet. Die Verwendung einer Pfeife ist ziemlich hässlich, und die erste Methode funktioniert in 99% der Fälle, daher sollte dies bevorzugt werden.

BONUS: um eine ausgeblendete Version jedes MP4 in einem Verzeichnis zu erstellen und dann die Metadatenversionen durch die ausgeblendeten Versionen zu ersetzen (Warnung - ziemlich irreversibel):

for f in *.mp4; do avconv -i "$f" -map 0 -map_metadata 0:s:0 -c copy "out.$f"; mv "out.$f" "$f"; done
Übelsuppe
quelle