使用 ffmpeg 将元数据从一个文件复制到另一个文件

Dav*_*vid 28 metadata ffmpeg

我想使用 ffmpeg 将所有与视频的核心方面(帧速率、分辨率)无关的元数据从一个视频复制到另一个视频。有没有一种简单的方法可以用一个命令来做到这一点?

llo*_*gan 31

使用-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
Run Code Online (Sandbox Code Playgroud)

这将导致类似:

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
Run Code Online (Sandbox Code Playgroud)

默认情况下,全局元数据是从第一个输入文件复制的,因此-map_metadata 0可能会被省略。

  • 如果您的源视频是 .mov 文件,您还需要添加标志`-movflags use_metadata_tags`,否则输出视频将不包含元数据。 (2认同)