FFMPEG 将 AVI 的录制日期元数据保存为 MP4 标记日期?

FFMPEG 将 AVI 的录制日期元数据保存为 MP4 标记日期?

我正在将旧的 DV 磁带从 AVI 文件转换为 MP4 格式。有没有办法将 AVI 的“录制日期”转换为 MP4 的“标记日期”?

我计划批量执行此操作,因此我希望将其自动化,但我一直不知道如何让它工作,这让我很沮丧。到目前为止,我发现 AVI 将日期和时间存储在 ICRD=2001-04-29 11:27:04 中。如果有人能帮助我,我将不胜感激。

我正在使用 Windows,并且正在 bat 文件中编写和写入命令:

ffmpeg -i "in.avi" -vf yadif -c:v libx264 -preset slow -crf 18 -c:a aac -b:a 128k
-movflags metadata ICRD -metadata tagged_date
"out.mp4"
General
Complete name               : E:\VideoCapture\2001_04_29 11_27_04Z.avi
Format                      : AVI
Format/Info                 : Audio Video Interleave
Commercial name             : DVCPRO
File size                   : 133 MiB
Duration                    : 36 s 668 ms
Overall bit rate mode       : Constant
Overall bit rate            : 30.3 Mb/s
Recorded date               : UTC 2001-04-29 11:27:04
General
Complete name               : E:\2001_04_29 11_27_04.mp4
Format                      : MPEG-4
Format profile              : Base Media / Version 2
Codec ID                    : mp42 (isom/iso2/avc1/mp41)
File size                   : 46.8 MiB
Duration                    : 36 s 672 ms
Overall bit rate            : 10.7 Mb/s
Encoded date                : UTC 2020-01-23 01:33:14
Tagged date                 : UTC 2020-01-23 01:33:14
Writing application         : HandBrake 1.3.1 2020010400

答案1

您可以使用ffprobe来获取日期元数据:

$ ffprobe -v error -show_entries format_tags=date -of csv=p=0 in.avi
  2001-04-29T11:27:04Z
  • 我猜这是ISO 8601您的日期格式:可能略有不同,但仍应有效。

ffmpeg然后在你的命令中使用它:

ffmpeg -i "in.avi" -vf "yadif,format=yuv420p" -c:v libx264 -preset slow -crf 18 -c:a aac -b:a 128k -movflags +faststart -metadata creation_time="2001-04-29T11:27:04Z" "out.mp4"
  • 使用-metadata creation_time将显示为编码日期标记日期用于mediainfoMP4 文件。

  • 这当然可以编写脚本,或者根据您的操作系统/脚本语言/shell,您可以ffprobe在命令中嵌入该命令ffmpeg

相关内容