You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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。
  • 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 13:28:06