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

如何用Python编辑MOV/MP4元数据?求推荐可读写的Python库

支持读写视频元数据的Python库推荐

以下几个库可以满足你编辑视频元数据的需求,附带具体使用示例:

1. ffmpeg-python(基于FFmpeg)

FFmpeg是业界通用的音视频处理工具,ffmpeg-python作为其Python绑定,支持几乎所有主流视频格式的元数据读写,且处理速度快(可避免重新编码)。

安装

pip install ffmpeg-python

(需确保系统已安装FFmpeg工具,可通过官网下载或包管理器安装)

示例:修改MP4的recorded_date

import ffmpeg
import os
import datetime

def get_file_creation_date(file_path):
    stat = os.stat(file_path)
    return datetime.datetime.fromtimestamp(stat.st_ctime).isoformat()

def update_video_metadata(input_path, output_path):
    creation_date = get_file_creation_date(input_path)
    # 写入元数据,codec=copy避免重新编码
    ffmpeg.input(input_path).output(
        output_path,
        metadata=f"recorded_date={creation_date}",
        codec="copy"
    ).run(overwrite_output=True)

if __name__ == "__main__":
    update_video_metadata("Video/video.mp4", "Video/video_updated.mp4")

2. exiftool-python(基于ExifTool)

ExifTool支持的元数据格式覆盖极广,包括几乎所有音视频、图片类型,功能全面,适合处理复杂元数据场景。

安装

pip install exiftool

(需先安装系统级ExifTool:Ubuntu用apt install libimage-exiftool-perl,Windows下载官方安装包)

示例:更新视频录制日期

from exiftool import ExifToolHelper
import os

def update_video_metadata(input_path):
    # 读取原文件的创建时间
    with ExifToolHelper() as et:
        metadata = et.get_metadata(input_path)[0]
        creation_date = metadata.get("File:FileCreateDate")
    
    if creation_date:
        # 写入QuickTime格式的创建日期(对应recorded_date)
        with ExifToolHelper() as et:
            et.set_tags(
                input_path,
                tags={"QuickTime:CreateDate": creation_date},
                params=["-overwrite_original"]  # 直接覆盖原文件
            )

if __name__ == "__main__":
    update_video_metadata("Video/video.mp4")

3. mutagen(针对特定格式优化)

你之前尝试的mutagen其实支持MP4等格式的元数据编辑,只是需要针对格式调用对应类:

示例:编辑MP4元数据

from mutagen.mp4 import MP4
import os
import datetime

def update_video_metadata(input_path):
    video = MP4(input_path)
    # 获取文件创建时间并转换为MP4兼容格式
    stat = os.stat(input_path)
    creation_date = datetime.datetime.fromtimestamp(stat.st_ctime).strftime("%Y-%m-%dT%H:%M:%SZ")
    # MP4中recorded_date对应©day标签
    video["©day"] = creation_date
    video.save()

if __name__ == "__main__":
    update_video_metadata("Video/video.mp4")

内容的提问来源于stack exchange,提问作者AweSte

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 15:55:20