如何用Python修改MP4文件的Origin(源信息)创建日期?
如何用Python修改MP4文件的Origin(源信息)创建日期?
嗨,我刚好碰到过类似的问题!MP4文件里的“Origin”日期其实就是元数据中的媒体创建时间(对应QuickTime/MP4标准里的creation_time字段),和文件系统层面的“File创建日期”是完全分开的两个属性。下面给你一个实用的Python解决方案,能批量处理你的2000个视频:
第一步:准备依赖
我们需要用到两个工具:
- ExifTool:这是处理多媒体元数据的神器,几乎支持所有格式,MP4的Origin日期就是靠它来修改的。
- Windows:下载解压后,把
exiftool.exe放到系统PATH能找到的地方(比如C:\Windows目录)。 - macOS:用Homebrew安装,命令是
brew install exiftool。 - Linux:用包管理器安装,比如Debian/Ubuntu系可以用
sudo apt install libimage-exiftool-perl。
- Windows:下载解压后,把
- pyexiftool:Python的ExifTool封装库,方便用代码调用。安装命令:
pip install pyexiftool
第二步:批量修改代码
下面的代码会读取每个MP4的文件系统创建日期,然后把这个日期写入到MP4的“Origin”元数据字段里,同时还会同步修改相关的元数据字段确保一致性:
import os import platform import exiftool from datetime import datetime def get_file_creation_time(file_path): """跨平台获取文件的创建时间(兼容Windows/macOS/Linux)""" if platform.system() == "Windows": # Windows下用getctime获取文件创建时间 return os.path.getctime(file_path) else: # macOS/Linux下用st_birthtime获取真正的文件创建时间 return os.stat(file_path).st_birthtime def update_mp4_origin_date(mp4_path): """修改单个MP4的Origin创建日期""" # 获取文件系统的创建时间并转换成ExifTool需要的格式:YYYY:MM:DD HH:MM:SS file_ctime = get_file_creation_time(mp4_path) formatted_time = datetime.fromtimestamp(file_ctime).strftime("%Y:%m:%d %H:%M:%S") # 用ExifTool写入元数据 with exiftool.ExifTool() as et: # QuickTime:CreationDate就是对应Origin的创建日期字段 et.execute(f"-QuickTime:CreationDate={formatted_time}", mp4_path) # 同步修改ModifyDate,确保元数据一致性 et.execute(f"-QuickTime:ModifyDate={formatted_time}", mp4_path) # 可选:如果你的管理软件还读取其他字段,比如MediaCreateDate,可以一起设置 # et.execute(f"-MediaCreateDate={formatted_time}", mp4_path) def batch_update_all_mp4s(folder_path): """批量处理指定文件夹下的所有MP4文件""" for root, _, files in os.walk(folder_path): for file in files: if file.lower().endswith(".mp4"): full_path = os.path.join(root, file) print(f"正在处理:{full_path}") try: update_mp4_origin_date(full_path) print(f"✅ 处理完成:{full_path}") except Exception as e: print(f"❌ 处理失败 {full_path}:{str(e)}") # ---------------------- 使用示例 ---------------------- # 替换成你的视频文件夹路径 target_folder = "/Users/you/Videos/HomeVideos" batch_update_all_mp4s(target_folder)
重要提醒
- 先备份测试:一定要先拿几个视频做测试,确认修改后符合你的管理软件要求,再批量处理2000个文件,避免意外。
- 时间格式:ExifTool要求的时间格式是
YYYY:MM:DD HH:MM:SS,代码里已经自动转换好了,不用手动调整。 - 权限问题:如果是Linux/macOS系统,可能需要给文件加读写权限,否则会修改失败。
备注:内容来源于stack exchange,提问作者Aidan Saunders
相关产品推荐
相关产品推荐

