这是一个长期存在(超过一年)的实际问题。我一直想完成它,但每次尝试都失败了。为此我咨询了好几个帖子。
我有很多日常生活视频,我正在用我的 iPhone 制作更多。在我的 MacBook 被这些视频塞满之前,我真的想以一种干净、系统的方式压缩和整理它们。
总结
目的:我想压缩视频而不丢失元数据,或者至少保留最少量的元数据这样我的 iPhone 就可以显示视频的拍摄时间和地点。
障碍:Exiftool 的“-tagsfromfile”不会完全复制和覆盖元数据。我甚至尝试了一些变体:-全部,-全部:全部,−覆盖原始...
背景
我使用 ffmpeg 进行压缩,并使用 exiftool 进行重新标记,如下所示
请参阅此答案。为方便起见,下面引用:
ffmpeg -i input.mp4 -vcodec libx264 -crf 20 output.mp4
然而,ffmpeg 的压缩会杀死几乎所有的元数据,所以我转向了 exiftool
我建议使用 Phil Harvey 提供的出色的 exiftool:
exiftool -TagsFromFile fromImage.jpg toImage.jpg
问题
主要问题是-TagsFromFile确实会复制/覆盖一些元数据,但不会完全覆盖,至少对于我的视频来说是这样。我也尝试过
exiftool −overwrite_original -r -TagsFromFile from.MOV -all to.MOV
以及其他一些品种,例如更换-全部到-全部:全部,但没有任何效果。
也许我最关心的是标签-创建日期和-全球定位系统(见附录)因为我想追踪照片和视频的拍摄时间和地点,并且我希望这些数据至少能够显示在我的 iPhone 中。
以下是视频预览来自.MOV(原文)和到.MOV(压缩)在我的 iPhone 中。
来自.MOV(位置隐藏):
到.MOV(未显示地址/位置!):
显然,缺少了一些东西,所以压缩后的位置無法出示。
问题
- 我该怎么做才能让我的 iPhone 显示压缩视频的原始文件的拍摄地点?
- 有没有办法复制并覆盖所有元数据?是否可以使元数据完全相同?
- 附带问题:当我在玩外置工具的-TagsFromFile函数,我用它来尝试将一张图片的元数据覆盖到另一张图片上(都是用 iPhone 拍摄的)。然而,这种情况比视频的情况更糟糕:不仅位置没有被覆盖,时间也没有被覆盖!同样,我尝试了一些替换-全部到-全部:全部。那么有办法解决这个问题吗?
附录
在此附录中,我列出了原始视频和压缩视频的日期/时间和 GPS 相关元数据。
from.MOV(原始):
File Size : 2.9 MB File Modification Date/Time : 2018:05:16 05:50:36-05:00 File Access Date/Time : 2018:05:16 07:54:42-05:00 File Inode Change Date/Time : 2018:05:16 07:51:58-05:00 File Permissions : rw-r--r-- File Type : MOV Create Date : 2018:05:16 10:50:36 Modify Date : 2018:05:16 10:50:38 Track Create Date : 2018:05:16 10:50:36 Track Modify Date : 2018:05:16 10:50:38 Creation Date : 2018:05:16 05:50:36-05:00 GPS Coordinates : xx deg yy' z.zz" N, aa deg bb' c.cc" W, 261.305 m Above Sea Level GPS Altitude : 261.305 m GPS Altitude Ref : Above Sea Level GPS Latitude : xx deg yy' z.zz" N GPS Longitude : aa deg bb' c.cc" W GPS Position : xx deg yy' z,zz" N, aa deg bb' c.cc" W
至.MOV(压缩):
File Size : 194 kB File Modification Date/Time : 2018:05:16 07:54:42-05:00 File Access Date/Time : 2018:05:16 07:54:57-05:00 File Inode Change Date/Time : 2018:05:16 07:54:42-05:00 File Permissions : rw-r--r-- File Type : MOV Creation Date : 2018:05:16 05:50:36-05:00 Track Create Date : 2018:05:16 10:50:36 Track Modify Date : 2018:05:16 10:50:38 Media Create Date : 2018:05:16 10:50:36 Media Modify Date : 2018:05:16 10:50:38 Creation Date : 2018:05:16 05:50:36-05:00 Create Date : 2018:05:16 10:50:36 Modify Date : 2018:05:16 10:50:38 GPS Altitude Ref : Above Sea Level GPS Latitude : xx deg yy' z.zz" N GPS Longitude : aa deg bb' c.cc" W GPS Altitude : 261.3 m Above Sea Level GPS Latitude Ref : North GPS Longitude Ref : West GPS Position : xx deg yy' z.zz" N, aa deg bb' c.cc" W
(为了保护隐私,我已将位置更改为 xyzabc :P)
如您所见,不仅日期/时间略有不同,而且还有更多多余的新标签。可能最让我担心的是标签-GPS 坐标并非抄袭自来自.MOV到到.MOV。虽然基本信息已经复制了,但我想这可能是我的 iphone 不显示其位置的原因。因此这引出了我的第二个问题(上述)。
答案1
不是一个解决方案,而是一个解决方法https://www.bento4.com从https://trac.ffmpeg.org/ticket/6193#comment:6
ffmpeg -i source.mov converted.mp4
mp4extract moov/meta source.mov source-metadata
mp4edit --insert moov:source-metadata converted.mp4 converted-withmeta.mp4
希望这可以帮助!