修改视频拍摄时间会被发现吗?修改视频拍摄时间的方法

修改视频的拍摄时间,和图片修改 EXIF 元数据类似,但视频的元数据格式更复杂(常见的有 MP4 的moov原子、MOV 的QuickTime元数据、AVI 的INFO块等)。

下面提供三种实用方法:Python 代码精准修改(适合编程 / 批量场景)和工具手动修改(适合非编程用户),以及界面话的工具修改。

方法一:Python 代码修改(MP4/MOV 格式)视频拍摄时间

安装处理视频元数据的专业库:

复制代码
pip install hachoir3 ffmpeg-python  # hachoir解析元数据,ffmpeg处理视频写入

完整代码(修改拍摄时间 + 批量处理)

复制代码
import os
import datetime
from hachoir.parser import createParser
from hachoir.metadata import extractMetadata
import ffmpeg

def modify_video_creation_time(input_path, output_path, new_datetime):
    """
    修改视频的拍摄/创建时间元数据
    :param input_path: 原始视频路径(MP4/MOV)
    :param output_path: 修改后保存路径(避免覆盖原文件)
    :param new_datetime: 新的拍摄时间(格式:YYYY-MM-DD HH:MM:SS,如"2026-03-06 15:30:00")
    """
    try:
        # 1. 验证时间格式并转换为FFmpeg支持的格式
        try:
            dt = datetime.datetime.strptime(new_datetime, "%Y-%m-%d %H:%M:%S")
            # FFmpeg要求的时间格式:YYYY-MM-DDTHH:MM:SS(T分隔日期和时间)
            ffmpeg_time = dt.strftime("%Y-%m-%dT%H:%M:%S")
        except ValueError:
            raise ValueError("时间格式错误,请使用:YYYY-MM-DD HH:MM:SS")

        # 2. 用FFmpeg修改元数据(核心逻辑)
        # -metadata参数指定要修改的时间字段(覆盖多个时间维度确保兼容性)
        (
            ffmpeg
            .input(input_path)
            .output(
                output_path,
                # 修改核心拍摄时间字段(QuickTime/MP4标准)
                metadata=f"creation_time={ffmpeg_time}",
                # 兼容不同播放器的时间字段
                metadata=f"datetime={ffmpeg_time}",
                metadata=f"date={dt.strftime('%Y-%m-%d')}",
                # 复制视频/音频流,不重新编码(速度快,无画质损失)
                codec="copy"
            )
            .overwrite_output()  # 覆盖已存在的输出文件(可选)
            .run(quiet=True)     # 静默运行,不输出冗余日志
        )

        print(f"✅ 视频拍摄时间已修改!")
        print(f"原文件:{input_path}")
        print(f"新文件:{output_path}")
        print(f"新拍摄时间:{new_datetime}")

        # 验证修改结果
        verify_video_time(output_path)

    except Exception as e:
        print(f"❌ 修改失败:{str(e)}")

def verify_video_time(video_path):
    """验证视频的拍摄时间是否修改成功"""
    try:
        parser = createParser(video_path)
        if not parser:
            print("无法解析视频元数据")
            return
        metadata = extractMetadata(parser)
        if metadata:
            creation_time = metadata.get("creation_date")
            if creation_time:
                print(f"✅ 验证:当前视频拍摄时间 = {creation_time}")
            else:
                print("⚠️  未检测到拍摄时间字段(部分视频无原始元数据)")
        parser.close()
    except Exception as e:
        print(f"验证失败:{str(e)}")

def batch_modify_video_time(input_folder, output_folder, new_datetime):
    """
    批量修改文件夹内所有MP4/MOV视频的拍摄时间
    :param input_folder: 原始视频文件夹
    :param output_folder: 输出文件夹
    :param new_datetime: 新拍摄时间
    """
    # 创建输出文件夹(不存在则创建)
    os.makedirs(output_folder, exist_ok=True)
    
    # 遍历文件夹内的视频文件
    supported_formats = (".mp4", ".mov", ".m4v")
    for filename in os.listdir(input_folder):
        if filename.lower().endswith(supported_formats):
            input_path = os.path.join(input_folder, filename)
            output_path = os.path.join(output_folder, filename)
            print(f"\n处理文件:{filename}")
            modify_video_creation_time(input_path, output_path, new_datetime)

# ------------------- 调用示例 -------------------
if __name__ == "__main__":
    # 示例1:修改单个视频
    modify_video_creation_time(
        input_path="test.mp4",          # 你的原始视频路径
        output_path="test_new_time.mp4",# 修改后保存路径
        new_datetime="2026-03-06 10:00:00"  # 新的拍摄时间
    )

    # 示例2:批量修改文件夹内所有视频
    # batch_modify_video_time(
    #     input_folder="./videos",       # 原始视频文件夹
    #     output_folder="./videos_new_time",  # 输出文件夹
    #     new_datetime="2026-03-06 10:00:00"
    # )

代码关键说明

  1. 核心原理 :通过FFmpeg-metadata参数修改视频的creation_time(核心拍摄时间字段),同时补充datetime/date字段,确保所有播放器 / 系统都能识别。
  2. 无损处理 :代码中指定codec="copy",仅修改元数据,不重新编码视频,速度快且无画质损失。
  3. 验证逻辑 :内置verify_video_time函数,修改后自动验证时间是否生效。
  4. 批量处理batch_modify_video_time函数支持批量修改文件夹内所有 MP4/MOV 视频,适合大量文件场景。

方法 二:用 FFmpeg 改视频时间属性

适合批量改、不改画质:

plaintext

复制代码
ffmpeg -i 原视频.mp4 -c copy -metadata creation_time="2026-03-06 15:30:00" 新视频.mp4

方法三:如果我们不会编程技术怎么办?别着急,我们可以使用界面话的工具帮我们修改,还能使用"汇帮元数据编辑器"界面话的工具来修改,还能批量修改

除此之外我们还可以修改视频的媒体修改时间,标题,版权和评论等信息。

相关推荐
艺杯羹1 分钟前
零成本!3步设置Windows动态壁纸,免费无广告
python
开开心心就好10 分钟前
新手友好的音视频格式转换工具
linux·服务器·网络·智能手机·pdf·beautifulsoup·音视频
huangdong_12 分钟前
京东整店商品图片视频批量下载技术:从商品列表到自动分类
开发语言·python·音视频
Curvatureflight12 分钟前
浏览器音频采集实践:麦克风权限、降噪、回声消除与 PCM 转换
前端·javascript·音视频·信息与通信·web·pcm
糖果店的幽灵18 分钟前
Spring AI 从入门到精通-ChatClient你与 AI 对话的终极武器
人工智能·python·spring
SPC的存折20 分钟前
Redis完整学习手册(赵老师视频精华版)
redis·学习·音视频
海鸥-w21 分钟前
用python (fastapi)做项目第二天实现新闻列表和新闻详情接口
开发语言·python·fastapi
Cloud_Shy61822 分钟前
解读《Effective Python 3rd Edition》:从练气到老魔(第四章 Item 25 - 26)
开发语言·人工智能·经验分享·笔记·python·学习方法
GDAL1 小时前
uv 完整教程:下一代 Python 包管理工具
python·uv
曲幽9 小时前
FastAPI 身份验证总踩坑?这份 FastAPI Users “避坑指南”请收好
python·fastapi·web·jwt·oauth2·user·authentication