将文件创建日期复制到 ffmpeg 中的元数据

Sun*_*nil 12 ffmpeg timestamps

我想将 mp4 文件的文件创建日期复制到文件的元数据中。我很确定这可以通过 ffmpeg 和一些漂亮的 Linux 命令来完成。

Sle*_*ger 9

您可以通过-metadata参数使用 ffmpeg 设置元数据。
MP4根据this支持年份属性,但我只让它与VLC中显示的“日期”字段一起使用(如果它只有一年)以及mplayer和winamp中显示的完整日期没有问题。
date通过 VLC 设置年份并使用 ffmpeg 转储元数据找到了该属性

要将日期设置为上次修改的时间(如完整日期,请2014-11-13使用以下内容:

ffmpeg -i inputfile.mp4 -metadata date="$(stat --printf='%y' inputfile.mp4 | cut -d ' ' -f1)" -codec copy outputfile.mp4
Run Code Online (Sandbox Code Playgroud)

最后修改的检测显然可以做得更好,而且我不确定日期元数据的使用范围如何,但它在我的测试用例中有效。

  • 我们可以提供元数据,这很好。但是有没有办法只从输入文件复制元数据信息 (2认同)
  • @afzalex `-map_metadata 0` 将所有元数据从输入文件 0 复制到输出。如果您想覆盖任何原始值,则可以在此之后放置 `-metadata` 选项。如果要删除任何原始值,请使用 `-metadata` 将值设置为空字符串。 (2认同)

小智 7

使用 exiftool 的部分答案。

exiftool -tagsFromFile inputfile.mov -MediaCreateDate outputfile.mp4
Run Code Online (Sandbox Code Playgroud)

这可以在 ffmpeg 转换后完成。

这不依赖于文件修改时间,而是依赖于创建视频的时间,这可能与文件创建时间不同。

根据创建视频元数据的设备可以是 DateTimeOriginal、MediaCreateDate、ContentCreateDate 和其他可能的。检查

exiftool -s -time:all inputfile.mov
Run Code Online (Sandbox Code Playgroud)