Verwenden von ffmpeg zum Kopieren von Metadaten von einer Datei in eine andere

17

Ich möchte ffmpeg verwenden, um alle Metadaten, die nicht mit Kernaspekten eines Videos (Bildrate, Auflösung) verknüpft sind, von einem Video in ein anderes zu kopieren. Gibt es eine einfache Möglichkeit, dies mit einem einzigen Befehl zu tun?

David
quelle

Antworten:

19

Verwenden Sie -map_metadata.

In diesem Beispiel werden die globalen und Stream-Metadaten kopiert in0.mkv. Die Video- und Audio-Streams werden von folgenden Streams kopiert in1.mkv:

ffmpeg -i in0.mkv -i in1.mkv -map 1 -c copy \
# copies all global metadata from in0.mkv to out.mkv  
-map_metadata 0 \
# copies video stream metadata from in0.mkv to out.mkv
-map_metadata:s:v 0:s:v \
# copies audio stream metadata from in0.mkv to out.mkv
-map_metadata:s:a 0:s:a \
out.mkv

Dies führt zu etwas wie:

Output #0, matroska, to 'out.mkv':
  Metadata:
    title           : Global Title
    AUTHOR          : Global Author
    Stream #0:0: Video: h264
    Metadata:
      title           : Stream 0 Title
    Stream #0:1: Audio: vorbis
    Metadata:
      title           : Stream 1 Title

Standardmäßig werden globale Metadaten aus der ersten Eingabedatei kopiert und können daher -map_metadata 0möglicherweise weggelassen werden.

llogan
quelle
1
Wenn es sich bei Ihrem Quellvideo um eine .mov-Datei handelt, müssen Sie auch das Flag hinzufügen, da -movflags use_metadata_tagsdas Ausgabevideo sonst keine Metadaten enthält.
Mastergalen
-3

Wenn Sie nur die Grundlagen (Erstellungsdatum usw.) benötigen, berühren Sie -r DATEI1. DATEI2 Funktioniert als Charm-Coping-Metadaten von DATEI1 zu DATEI2

Emiliano
quelle
Wenn Sie die Frage lesen, sind die Video-Metadaten das Ziel, nicht die Datei-Metadaten.
Fixer1234