Использование ffmpeg для копирования метаданных из одного файла в другой

17

Я хочу использовать ffmpeg для копирования всех метаданных, не связанных с основными аспектами видео (частота кадров, разрешение), из одного видео в другое. Есть ли простой способ сделать это с помощью одной команды?

Дэвид
источник

Ответы:

19

Использование -map_metadata.

В этом примере глобальные и потоковые метаданные будут скопированы из in0.mkv. Видео и аудио потоки будут скопированы с 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

Это приведет к чему-то вроде:

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

По умолчанию глобальные метаданные копируются из первого входного файла, поэтому, -map_metadata 0вероятно, могут быть опущены.

llogan
источник
1
Если ваше исходное видео представляет собой файл .mov, вам также необходимо добавить флаг, -movflags use_metadata_tagsиначе выходное видео не будет содержать метаданные.
Мастергален
-3

Если вам нужны только основы (дата создания и т. Д.), Коснитесь -r ФАЙЛ1 ФАЙЛ2 Будет работать как метаданные, копирующие брелок из ФАЙЛА1 в ФАЙЛ2

Эмилиано
источник
Если вы прочитаете вопрос, цель - метаданные видео, а не метаданные файла.
fixer1234