惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

人人都是产品经理
人人都是产品经理
The Hacker News
The Hacker News
D
Darknet – Hacking Tools, Hacker News & Cyber Security
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
L
Lohrmann on Cybersecurity
MyScale Blog
MyScale Blog
GbyAI
GbyAI
博客园 - 【当耐特】
J
Java Code Geeks
Jina AI
Jina AI
I
InfoQ
The Register - Security
The Register - Security
Cyberwarzone
Cyberwarzone
Scott Helme
Scott Helme
S
Schneier on Security
WordPress大学
WordPress大学
月光博客
月光博客
C
Cybersecurity and Infrastructure Security Agency CISA
AWS News Blog
AWS News Blog
The Cloudflare Blog
Google DeepMind News
Google DeepMind News
P
Privacy & Cybersecurity Law Blog
P
Proofpoint News Feed
T
The Exploit Database - CXSecurity.com
Blog — PlanetScale
Blog — PlanetScale
博客园 - Franky
Simon Willison's Weblog
Simon Willison's Weblog
T
Threatpost
Project Zero
Project Zero
I
Intezer
Know Your Adversary
Know Your Adversary
A
About on SuperTechFans
S
Security Affairs
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 聂微东
P
Proofpoint News Feed
Cloudbric
Cloudbric
V2EX - 技术
V2EX - 技术
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Secure Thoughts
IT之家
IT之家
Forbes - Security
Forbes - Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
The Last Watchdog
The Last Watchdog
H
Heimdal Security Blog
Schneier on Security
Schneier on Security
Webroot Blog
Webroot Blog
Apple Machine Learning Research
Apple Machine Learning Research

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派 万字剖析:千问App深度体验报告(2026) - 少数派 在2026年,如何真正防止别人抄袭你的作品 - 少数派 怎么用 50 块搭个 AI 语音助手?我踩了 3 天坑 - 少数派 YeeroAI:让 AI 对话真正成为知识管理的一部分 - 少数派 爬泰山 - 少数派 「旅图显影」 App 更新:这次,我们补上了一点「手感」 - 少数派 假期出门太折磨?我的 23 条经验帮你规划惬意旅行 - 少数派 工作流会变吗 - 少数派 Claude Opus 4.6 怎么用最省钱?我测了 5 种方案 - 少数派 GPT Image 2 让图文并茂不再稀罕 - 少数派 用户侧出发——什么是AI,我要不要学习? - 少数派 找片、转存、整理、播放一条龙!让你的付费网盘值回票价 - 少数派 欢迎试用!日课一问2.0插件 - 少数派 自己做的MDeditor,原本想购买 Typora 试了两次支付不成功,干脆自己做一个 - 少数派 vibe coding了一个 3MB 的小工具,让 ~/Downloads 彻底告别混乱 - 少数派 因为受不了 Mac 的风扇策略,我做了一个风扇控制工具 - 少数派 别只怪模型 - 少数派 Warp 终端的 AI 功能怎么用?我测了一周的体验 - 少数派 AI 写代码老是出 bug?这 5 个配置我后悔没早知道 - 少数派 「新玩意」苹果出相机可能就这样:Sigma BF + 45mm F2.8 DG Contemporary - 少数派 一个面向2030年的AI操作系统是什么样子的:浅谈cola这款有灵魂的Agent - 少数派 别只看写代码 - 少数派 每天解决10个问题,还是一口气攻坚解决400个? - 少数派 AI 交易机器人怎么搭?我用 Claude 跑了一周实盘 - 少数派 Maptoposter Online:把你爱的城市画成艺术海报 - 少数派 Function Calling 怎么用?我测了 3 个模型发现差距真大 - 少数派 Legend Talk:我做了个 AI 圆桌,让 160 位思想家围着你的问题转 - 少数派 如何找到自己的蓝方?在小县城寻找压力测试 - 少数派 语音输入与软件接口|2026年聊AI时,我们都聊些什么(上) - 少数派 混动已经卖爆,纯电又来补刀——钛7闪充版简直“不讲武德” - 少数派 本月玩什么|朋友收藏、识质存在、沙罗周期 - 少数派 为什么要每天坚持输出? - 少数派 Claude API 挂了好几个小时,你的项目有备用方案吗? - 少数派 Function Calling 没你想的复杂——我用它做了个有点用的工具 - 少数派 登录系统立即播放视频或者图片音乐的软件 - 少数派 我为什么创建 FlipHTML5 下载工具 - 少数派 残局没电?多品牌外设电量统一管理软件EasyBluetooth已支持RTSS游戏内显示以及AIDA64 - 少数派 前往通义路的路 - 少数派 太好看了,媲美Sun的个人导航页,NAS部署星云门户 - 少数派 乌黑嘴唇“一键检测”上线了 - 少数派 派早报:Claude AI 接入多个创意软件生态、FILCO 生产方接手品牌等 - 少数派 【更新】BearCLI、Claude 连接器与 MCP 服务器 - 少数派 记了上千条流水,还是看不懂财务?我做了一个让 AI 读懂账本的工作台 - 少数派 MINI R56 升级原厂 Sport 模式 - 少数派 新玩意 | 一棵柠檬树(仿真版) - 少数派 Momenta的“物理AI”野望,需迈过“含摩量”这道关 - 少数派 网页直接投屏控制手机!NAS一键部署PandaScrcpy,流畅丝滑可远程。 - 少数派 众测|邀你一同探索随身 AI 硬件入口 YoooClaw C·ONE - 少数派 2050大会:分享时间是真诚 参会记 - 少数派 iPad 赋能电影创作:国内首部宣纸手绘长片《燃比娃》的幕后故事 - 少数派 AI的审美:我用 8 个大模型给 100 张旅行照片打分 - 少数派 普通人如何破圈?去参加一个本地协会 - 少数派 把极空间的图标全换了,主题DIY全攻略打造你的专属NAS桌面 - 少数派 电子便签墙,帮你实现便签自由 - 少数派 我如何用三个 CLI 工具取代文档创建需求 - 少数派 原来真的有人可以玩一辈子 - 少数派 社区速递 139 | 派友热议三月买了啥、复古单反尼康 Df 体验 - 少数派 06 作品的赏析与评价 - 少数派 TDS REVIEW|索尼 WF-1000XM6 降噪真无线耳机体验 - 少数派 35.98万起售的第二代腾势D9,我看重的不是堆料,而是不凑合 - 少数派 鼠须管 Squirrel 皮肤配置指北 - 少数派 从watch ultra2换到redmi watch6 - 少数派 派早报:阿里巴巴发布视频生成模型 HappyHorse 1.0 等 - 少数派 别迷信1M - 少数派 家人们天塌了!网盘“大封杀”,多个渠道多条路,NAS部署PanHub - 少数派 AI与人勾心斗角!NAS一键部署AI狼人杀,假日休闲必备。 - 少数派 电商必备!Comfyui工作流批量生图插件,一次生成12张!支持Nano banana pro模型 - 少数派 Comfyui工作流配置Gpt-image-2模型教程,0.03/张 - 少数派 OpenClaw第三方APi怎么配置?可使用Gpt-image-2模型 - 少数派 会员社区话题精选 Ep. 103 - 少数派
相册导出正确的视频拍摄时间 - 少数派
2021-02-08 · via 少数派

Previously

继上次写了《如何导出正确的照片拍摄时间》这篇文章之后,下面有两个读者提了同一个问题:如何对视频拍摄时间进行修正?在那篇文章中我提到可以使用 jhead 命令修正照片的拍摄时间。但是jhead 的全称是 jpeg head,正如其名它是专门用于处理 jpeg 格式的图片信息,并不适用于其他格式,那么我们就需要另寻工具来解决这个问题。本文涉及到的命令可通过下面这条命令一键安装:

brew install mediainfo jq parallel coreutils

思路

既然我们要修正视频的拍摄时间,我们可以先假设正确的拍摄时间就藏在视频文件信息里面,只不过导出的时候拍摄时间变成了导出时间。那么我们第一步的任务就是把视频的所有信息都挖掘出来,看看是不是真的存在正确的拍摄时间。我从照片里面拖出一个拍摄于去年的视频,使用 mdls (metadata list) 命令查看元数据信息:

➜ mdls IMG_0713.mov
_kMDItemDisplayNameWithExtensions      = "IMG_0713.mov"
kMDItemAudioBitRate                    = 97
kMDItemAudioChannelCount               = 1
kMDItemCodecs                          = (
    AAC,
    "H.264",
    "Timed Metadata"
)
kMDItemContentCreationDate             = 2021-02-06 14:17:27 +0000
kMDItemContentCreationDate_Ranking     = 2021-02-06 00:00:00 +0000
kMDItemContentModificationDate         = 2021-02-06 14:17:54 +0000
kMDItemContentModificationDate_Ranking = 2021-02-06 00:00:00 +0000
kMDItemContentType                     = "com.apple.quicktime-movie"
kMDItemContentTypeTree                 = (
    "com.apple.quicktime-movie",
    "public.movie",
    "public.audiovisual-content",
    "public.data",
    "public.item",
    "public.content"
)
kMDItemDateAdded                       = 2021-02-06 14:17:54 +0000
kMDItemDateAdded_Ranking               = 2021-02-06 00:00:00 +0000
kMDItemDisplayName                     = "IMG_0713.mov"
kMDItemDocumentIdentifier              = 0
kMDItemDurationSeconds                 = 7.288333333333333
kMDItemEncodingApplications            = (
    "14.2"
)
kMDItemFSContentChangeDate             = 2021-02-06 14:17:54 +0000
kMDItemFSCreationDate                  = 2021-02-06 14:17:27 +0000
kMDItemFSCreatorCode                   = ""
kMDItemFSFinderFlags                   = 0
kMDItemFSHasCustomIcon                 = (null)
kMDItemFSInvisible                     = 0
kMDItemFSIsExtensionHidden             = 0
kMDItemFSIsStationery                  = (null)
kMDItemFSLabel                         = 0
kMDItemFSName                          = "IMG_0713.mov"
kMDItemFSNodeCount                     = (null)
kMDItemFSOwnerGroupID                  = 20
kMDItemFSOwnerUserID                   = 501
kMDItemFSSize                          = 35710907
kMDItemFSTypeCode                      = ""
kMDItemInterestingDate_Ranking         = 2021-02-06 00:00:00 +0000
kMDItemKind                            = "QuickTime影片"
kMDItemLastUsedDate                    = 2021-02-06 14:17:55 +0000
kMDItemLastUsedDate_Ranking            = 2021-02-06 00:00:00 +0000
kMDItemLogicalSize                     = 35710907
kMDItemMediaTypes                      = (
    Sound,
    Video,
    Metadata
)
kMDItemPhysicalSize                    = 36261888
kMDItemPixelHeight                     = 3840
kMDItemPixelWidth                      = 2160
kMDItemProfileName                     = "HD (1-1-1)"
kMDItemStreamable                      = 0
kMDItemTotalBitRate                    = 39185
kMDItemUseCount                        = 7
kMDItemUsedDates                       = (
    "2021-02-05 16:00:00 +0000"
)
kMDItemVideoBitRate                    = 39087

很遗憾的是,我们没有找到任何关于 2020 年的关键词,会不会是真实的拍摄时间信息隐藏在原数据里更深的地方?我在 Google 上搜索了一圈之后找到了 mediainfo 这样一个程序,或者也可以叫它命令。它可以列出媒体文件内相关的所有信息,我们使用它来查看一下去年拍摄的这条视频看看有什么发现:

➜ mediainfo IMG_0713.mov
General
Complete James Hopbourn                            : IMG_0713.mov
Format                                   : MPEG-4
Format profile                           : QuickTime
Codec ID                                 : qt   0000.00 (qt  )
File size                                : 34.1 MiB
Duration                                 : 7 s 288 ms
Overall bit rate mode                    : Variable
Overall bit rate                         : 39.2 Mb/s
Encoded date                             : UTC 2021-02-06 14:17:27
Tagged date                              : UTC 2021-02-06 14:17:53
Writing library                          : Apple QuickTime
com.apple.quicktime.location.accuracy.ho : 12.606383
com.apple.quicktime.make                 : Apple
com.apple.quicktime.model                : iPhone 11
com.apple.quicktime.software             : 14.2
com.apple.quicktime.creationdate         : 2020-11-11T09:14:02+0800
com.apple.photos.originating.signature   : ATFrhl5a6BHZz41K7+dRX0DyTt9h

Video
ID                                       : 2
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : High@L5.2
Format settings                          : CABAC / 2 Ref Frames
Format settings, CABAC                   : Yes
Format settings, Reference frames        : 2 frames
Format settings, GOP                     : M=2, N=30
Codec ID                                 : avc1
Codec ID/Info                            : Advanced Video Coding
Duration                                 : 7 s 288 ms
Bit rate mode                            : Variable
Bit rate                                 : 39.1 Mb/s
Maximum bit rate                         : 768 kb/s
Width                                    : 2 160 pixels
Height                                   : 3 840 pixels
Display aspect ratio                     : 0.562
Frame rate mode                          : Variable
Frame rate                               : 59.940 (59940/1000) FPS
Minimum frame rate                       : 54.545 FPS
Maximum frame rate                       : 60.000 FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.079
Stream size                              : 34.0 MiB (100%)
Title                                    : Core Media Video
Encoded date                             : UTC 2021-02-06 14:17:27
Tagged date                              : UTC 2021-02-06 14:17:53
Color range                              : Limited
Color primaries                          : BT.709
Transfer characteristics                 : BT.709
Matrix coefficients                      : BT.709
Codec configuration box                  : avcC

Audio
ID                                       : 1
Format                                   : AAC LC
Format/Info                              : Advanced Audio Codec Low Complexity
Codec ID                                 : mp4a-40-2
Duration                                 : 7 s 242 ms
Source duration                          : 7 s 268 ms
Bit rate mode                            : Variable
Bit rate                                 : 97.9 kb/s
Channel(s)                               : 1 channel
Channel layout                           : C
Sampling rate                            : 44.1 kHz
Frame rate                               : 43.066 FPS (1024 SPF)
Compression mode                         : Lossy
Stream size                              : 86.6 KiB (0%)
Source stream size                       : 86.8 KiB (0%)
Title                                    : Core Media Audio
Encoded date                             : UTC 2021-02-06 14:17:27
Tagged date                              : UTC 2021-02-06 14:17:53

Other #1
Type                                     : meta
Duration                                 : 7 s 287 ms

Other #2
Type                                     : meta
Duration                                 : 7 s 287 ms

大概扫过去看一眼,看到了 com.apple.quicktime.creationdate : 2020-11-11T09:14:02+0800 正如其名,com.apple.quicktime.creationdate 正是对应着我的照片应用里的拍摄时间,确定了它就是视频的真正拍摄时间而不是导出时间,我们的假设成立,至此第一步完成。顺便通过查阅 Apple Metadata 开发者文档也得知了创建时间确实是属于元数据的,只是 mdls 列出是一些基础数据,并不会把所有元信息都列出才导致了之前找不到真正的拍摄时间。

过滤拍摄时间

现在我们已经确认真正的拍摄时间就存在视频里面,接下来就是要过滤出这个正确时间了。用 awksed 这些老牌文本处理工具吗?不,先看看 mediainfo 这个命令自己能不能支持以指定格式输出,查看帮助信息:

➜ mediainfo --help
MediaInfo Command line,
MediaInfoLib - v20.09

...
--Output=JSON
                    Full information Display using JSON
...

在输出信息里的我看到了 JSON 字样心中就吃下了一颗定心丸,因为我们有 jq 这样的工具可以很方便地处理 JSON ,具体分析过程不再赘述,直接看我如何使用 jq 来处理输出的 JSON 信息:

➜ mediainfo IMG_0713.mov --Output=JSON|jq -c '.media .track[0].extra.com_apple_quicktime_creationdate
2020-11-11T09:14:02+0800

格式化拍摄时间

在 macOS 上可以通过 Setfile 命令修改任何文件的创建时间,但是有一个前提是必须按照 Setfile 命令指定的格式传入日期时间。我们在上一步过滤出了视频真正的拍摄时间,现在要使用 date 命令对这个时间进行格式化,例子和实例如下:

➜ echo '2020-11-11T09:14:02+0800'|xargs gdate +'%m/%d/%Y %H:%M:%S' -d
11/11/2020 09:14:02

➜ mediainfo IMG_0713.mov --Output=JSON|jq -c '.media .track[0].extra.com_apple_quicktime_creationdate'|xargs gdate +'%m/%d/%Y %H:%M:%S' -d
11/11/2020 09:14:02

修正拍摄时间

趁热打铁,最后一步使用 Setfile 命令修正视频拍摄时间,命令如下:

➜ mediainfo IMG_0713.mov --Output=JSON|jq -c '.media .track[0].extra.com_apple_quicktime_creationdate'|xargs gdate +'%m/%d/%Y %H:%M:%S' -d|parallel Setfile -d {} IMG_0713.mov
视频拍摄时间修正前后对比
视频拍摄时间修正前后对比

适用人群

因为一些原因需要知道精确的视频拍摄时间的用户,比如说我使用 SSD 来整理存储我的照片和视频,那么就有可能会有知道某个视频精确拍摄时间的需求。至于 vlog 博主,不知道有没有这个需求,可供参考。

技术总结

开头使用假说演绎法验证了正确的拍摄时间存储在视频内部,正是这一步的成功才能为后续修正时间打下基础。虽然使用 mdls 第一次没有获取到准确的拍摄时间,但是多努力了一下,在网上找到了 mediainfo 命令解决了这个最重要的问题。使用 JSON 格式输出给 jq 处理过滤出正确的拍摄时间传递给 date 命令将时间格式化。最后通过 parallel 将格式化处理之后的日期参数传递给 Setfile 修改为正确的时间,思路总体来说还是非常清楚的。
可改进之处:将这条命令封装成 Automator 快速操作添加到到右键选项就可以不用每次打开终端去执行这条命令了。
另一种思路:不要对视频的时间进行修改,获取正确的拍摄时间之后,将这个拍摄时间作为视频文件的前缀会更加直观。

参考文章

使用Setfile命令修改MacOS文件创建时间(creation date),非touch命令,附Linux文件时间属性介绍