Usando ffmpeg para copiar metadatos de un archivo a otro

17

Quiero usar ffmpeg para copiar todos los metadatos no asociados con los aspectos centrales de un video (velocidad de cuadros, resolución) de un video a otro. ¿Hay una manera simple de hacer esto con un solo comando?

David
fuente

Respuestas:

19

Uso -map_metadata.

En este ejemplo, se copiarán los metadatos globales y de flujo in0.mkv. Las transmisiones de video y audio se copiarán de 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

Esto resultará en algo como:

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

De forma predeterminada, los metadatos globales se copian del primer archivo de entrada, por lo -map_metadata 0que probablemente podrían omitirse.

lema
fuente
1
Si su video fuente es un archivo .mov, también debe agregar la bandera -movflags use_metadata_tagso el video de salida no contendrá los metadatos.
Mastergalen
-3

Si todo lo que necesita es lo básico (fecha de creación, etc.), toque -r ARCHIVO1 ARCHIVO2 Funcionará como un metadato de adaptación de encanto de ARCHIVO1 a ARCHIVO2

Emiliano
fuente
Si lee la pregunta, el objetivo son los metadatos del video, no los metadatos del archivo.
Fixer1234