如何用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
相关产品推荐
相关产品推荐

