Usando o ffmpeg para copiar metadados de um arquivo para outro


17

Eu quero usar o ffmpeg para copiar todos os metadados não associados aos aspectos principais de um vídeo (taxa de quadros, resolução) de um vídeo para outro. Existe uma maneira simples de fazer isso com um único comando?

Respostas:


19

Use -map_metadata.

Neste exemplo, os metadados globais e de fluxo serão copiados in0.mkv. Os fluxos de vídeo e áudio serão copiados 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

Isso resultará em 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

Por padrão, os metadados globais são copiados do primeiro arquivo de entrada e, portanto, -map_metadata 0provavelmente podem ser omitidos.


1
Se o seu vídeo de origem for um arquivo .mov, você também precisará adicionar o sinalizador -movflags use_metadata_tagsou o vídeo de saída não conterá os metadados.
Mastergalen 28/08/19

-3

Se tudo o que você precisa é o básico (data de criação, etc.), toque em -r FILE1 FILE2 Funcionará como um encadeamento de metadados do FILE1 para FILE2


Se você ler a pergunta, o objetivo são os metadados do vídeo, não os metadados do arquivo.
fixer1234
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.