微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

FFMPEG在MTS到MP4流程上未使用正确的创建日期进行转换

如何解决FFMPEG在MTS到MP4流程上未使用正确的创建日期进行转换

我正在将MTS转换为MP4的过程中,视频/音频和创建日期保持不变。

这是我的过程:

我有test.MTS,我将其转换为test.MP4。

拳头。我的MTS:

OSX:oo bob$ f="test.MTS

OSX:oo bob$     DATE=$(exiftool -d "%Y-%m-%d %H:%M:%s"  "$f" | grep "^Date.*Original" | awk '{print $4,$5;}')

OSX:oo bob$     DATE2=$(exiftool -d "%Y-%m-%d %H:%M:%s%z"  "$f" | grep "^Date.*Original" | awk '{print $4,$5;}')

OSX:oo bob$ echo $DATE

2018-10-26 20:53:27

OSX:oo bob$ echo $DATE2

2018-10-26 20:53:27+0000

我使用$ DATE和$ DATE2来设置UTC并尝试其他选项。

现在,让我们看看Exiftool和mediainfo对我的MTS的看法:

OSX:oo bob$ exiftool $f | grep "Date/Time"

File Modification Date/Time     : 2018:10:26 21:56:55+02:00

File Access Date/Time           : 2020:11:02 16:12:09+01:00

File Inode Change Date/Time     : 2020:11:01 02:48:49+01:00

Date/Time Original              : 2018:10:26 20:53:27+00:00





OSX:oo bob$ mediainfo $f | grep "date"

Recorded date                            : 2018-10-26 20:53:27+00:00

到此为止。.所有好的日期都是2018-10-26 20:53:27+00:00 (so UTC or GMT+0)

现在我的命令进行了转换:

ffmpeg  -i  "$f" -y -acodec aac -ab 128k  -vcodec copy  -f mp4 -Metadata creation_time="$DATE" "./${f%.MTS}.MP4"

ffmpeg  -i  "$f" -y -acodec aac -ab 128k  -vcodec copy  -f mp4 -Metadata creation_time="$DATE2" "./${f%.MTS}_2.MP4"

我尝试了两个选项,$ DATE(没有时区)和$ DATE2(有时区)。转换正常,让我们看看结果:

OSX:oo bob$ exiftool   "./${f%.MTS}.MP4" | grep "Date"

File Modification Date/Time     : 2020:11:02 14:53:24+01:00
File Access Date/Time           : 2020:11:02 16:13:48+01:00
File Inode Change Date/Time     : 2020:11:02 14:53:24+01:00
Create Date                     : 2018:10:26 18:53:27
Modify Date                     : 2018:10:26 18:53:27
Track Create Date               : 2018:10:26 18:53:27
Track Modify Date               : 2018:10:26 18:53:27
Media Create Date               : 2018:10:26 18:53:27
Media Modify Date               : 2018:10:26 18:53:27


OSX:oo bob$ exiftool   "./${f%.MTS}_2.MP4" | grep "Date"

File Modification Date/Time     : 2020:11:02 14:53:13+01:00
File Access Date/Time           : 2020:11:02 16:13:48+01:00
File Inode Change Date/Time     : 2020:11:02 14:53:13+01:00
Create Date                     : 2018:10:26 20:53:27
Modify Date                     : 2018:10:26 20:53:27
Track Create Date               : 2018:10:26 20:53:27
Track Modify Date               : 2018:10:26 20:53:27
Media Create Date               : 2018:10:26 20:53:27
Media Modify Date               : 2018:10:26 20:53:27


OSX:oo bob$ mediainfo  "./${f%.MTS}.MP4" | grep "date"

Recorded date                            : 2018-10-26 20:53:27+00:00
Encoded date                             : UTC 2018-10-26 18:53:27
Tagged date                              : UTC 2018-10-26 18:53:27
Encoded date                             : UTC 2018-10-26 18:53:27
Tagged date                              : UTC 2018-10-26 18:53:27
Encoded date                             : UTC 2018-10-26 18:53:27
Tagged date                              : UTC 2018-10-26 18:53:27



OSX:oo bob$ mediainfo  "./${f%.MTS}_2.MP4" | grep "date"

Recorded date                            : 2018-10-26 20:53:27+00:00
Encoded date                             : UTC 2018-10-26 20:53:27
Tagged date                              : UTC 2018-10-26 20:53:27
Encoded date                             : UTC 2018-10-26 20:53:27
Tagged date                              : UTC 2018-10-26 20:53:27
Encoded date                             : UTC 2018-10-26 20:53:27
Tagged date                              : UTC 2018-10-26 20:53:27

到这里似乎"./${f%.MTS}_2.MP4"(test_2.MP4)是正确的,但是,如果我们检查时期中的值,则:

OSX:oo bob$ exiftool -d "%s" $f | grep "Date/Time"

File Modification Date/Time     : 1540583815
File Access Date/Time           : 1604329945
File Inode Change Date/Time     : 1604195329
Date/Time Original              : 1540587207

OSX:oo bob$ exiftool -d "%s"  "./${f%.MTS}.MP4" | grep "Date"

File Modification Date/Time     : 1604325204
File Access Date/Time           : 1604330053
File Inode Change Date/Time     : 1604325204
Create Date                     : 1540572807
Modify Date                     : 1540572807
Track Create Date               : 1540572807
Track Modify Date               : 1540572807
Media Create Date               : 1540572807
Media Modify Date               : 1540572807



OSX:oo bob$ exiftool -d "%s"  "./${f%.MTS}_2.MP4" | grep "Date"

File Modification Date/Time     : 1604325193
File Access Date/Time           : 1604330058
File Inode Change Date/Time     : 1604325193
Create Date                     : 1540580007
Modify Date                     : 1540580007
Track Create Date               : 1540580007        
Track Modify Date               : 1540580007
Media Create Date               : 1540580007
Media Modify Date               : 1540580007

顺便说一句,我现在在格林尼治标准时间+1(这是我的本地时区)

如您所见:

  1. 使用时区(test_2.MP4)进行的转换似乎是正确的,除了当我使用历元转换时,显示完全不同的时间:

    原始MTS>日期/时间原文:1540587207 没有时区的MP4>创建日期:1540572807 具有时区的MP4>创建日期:1540580007

    MTS >> test.MP4 >> 14400 seg(4h)

    MTS >> test_2.MP4 >> 7200段(2h)

  2. Mediainfo与exiftool的输出相同。

¿¿???这是怎么回事?为什么exiftool的日期相同但又不同?为什么是4h或2h?...我在这里错过了一些东西。

谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。