Używanie ffmpeg do kopiowania metadanych z jednego pliku do drugiego

17

Chcę użyć ffmpeg, aby skopiować wszystkie metadane niezwiązane z podstawowymi aspektami filmu (częstotliwość klatek, rozdzielczość) z jednego filmu do drugiego. Czy istnieje prosty sposób, aby to zrobić za pomocą jednego polecenia?

David
źródło

Odpowiedzi:

19

Zastosowanie -map_metadata.

W tym przykładzie zostaną skopiowane metadane globalne i strumień in0.mkv. Strumienie wideo i audio będą kopiowane strumieniowo z 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

Spowoduje to coś takiego:

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

Domyślnie globalne metadane są kopiowane z pierwszego pliku wejściowego, więc -map_metadata 0prawdopodobnie można je pominąć.

Llogan
źródło
1
Jeśli źródłowy plik wideo jest plikiem .mov, musisz również dodać flagę, -movflags use_metadata_tagsw przeciwnym razie wyjściowe wideo nie będzie zawierało metadanych.
Mastergalen
-3

Jeśli wszystko, czego potrzebujesz, to podstawy (data utworzenia itp.), A następnie dotknij -R PLIK1 PLIK2 Będzie działał jako urok kopiujący metadane z PLIKU 1 do PLIKU 2

Emiliano
źródło
Jeśli przeczytasz pytanie, celem są metadane wideo, a nie metadane pliku.
fixer1234