我正在将旧的 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
将显示为编码日期和标记日期用于mediainfo
MP4 文件。这当然可以编写脚本,或者根据您的操作系统/脚本语言/shell,您可以
ffprobe
在命令中嵌入该命令ffmpeg
。