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

如何用Python获取Windows上iPhone .m4a语音备忘录的Media created元数据

提取iPhone语音备忘录(.m4a)的原始录制时间(Media created)

针对你遇到的问题,这里有两种可行的Python实现方法:


方法1:读取M4A文件本身的元数据(跨平台)

iPhone语音备忘录的原始录制时间存储在M4A文件的QuickTime标准标签©day中,之前用mutagen没找到大概率是标签名没对应对。

步骤:

  1. 安装依赖:
pip install mutagen
  1. 示例代码:
from mutagen.mp4 import MP4
from datetime import datetime
import os

def get_recording_time(m4a_file):
    try:
        mp4 = MP4(m4a_file)
        # 提取原始录制时间标签
        if '©day' in mp4.tags:
            raw_time = mp4.tags['©day'][0]
            # 解析ISO格式时间(YYYYMMDDTHHMMSSZ)
            return datetime.strptime(raw_time, '%Y%m%dT%H%M%SZ').strftime('%Y-%m-%d %H:%M:%S')
        return None
    except Exception as e:
        print(f"处理文件{m4a_file}出错: {str(e)}")
        return None

# 批量处理文件夹下的所有M4A文件
target_dir = "替换为你的语音备忘录文件夹路径"
recording_metadata = []

for file_name in os.listdir(target_dir):
    if file_name.lower().endswith('.m4a'):
        full_path = os.path.join(target_dir, file_name)
        time_str = get_recording_time(full_path)
        if time_str:
            recording_metadata.append({
                "file_name": file_name,
                "original_recording_time": time_str
            })

# 输出结果
for entry in recording_metadata:
    print(f"文件: {entry['file_name']} | 原始录制时间: {entry['original_recording_time']}")

方法2:读取Windows文件属性的「Media created」(仅Windows环境)

如果需要和Windows文件属性里显示的时间完全一致,可以直接读取Shell属性,适合仅在Windows 11上运行的场景。

步骤:

  1. 安装依赖:
pip install pywin32
  1. 示例代码:
import win32com.client
import os

def get_media_created(file_path):
    try:
        shell = win32com.client.Dispatch("Shell.Application")
        folder = shell.NameSpace(os.path.dirname(file_path))
        file_item = folder.ParseName(os.path.basename(file_path))
        # Windows 11中「Media created」对应的属性索引为179
        media_created = folder.GetDetailsOf(file_item, 179)
        return media_created if media_created else None
    except Exception as e:
        print(f"处理文件{file_path}出错: {str(e)}")
        return None

# 批量处理
target_dir = "替换为你的语音备忘录文件夹路径"
recording_metadata = []

for file_name in os.listdir(target_dir):
    if file_name.lower().endswith('.m4a'):
        full_path = os.path.join(target_dir, file_name)
        time_str = get_media_created(full_path)
        if time_str:
            recording_metadata.append({
                "file_name": file_name,
                "original_recording_time": time_str
            })

# 输出结果
for entry in recording_metadata:
    print(f"文件: {entry['file_name']} | 原始录制时间: {entry['original_recording_time']}")

注意事项:

  • 方法1跨平台(Windows/macOS/Linux都能用),读取的是文件本身携带的元数据,更可靠;
  • 方法2仅适用于Windows,直接读取系统显示的属性,和你在文件详情里看到的完全一致;
  • 如果方法1的©day标签不存在,可以尝试查看MP4的creation_time属性,部分旧版本的语音备忘录可能用不同标签。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 16:52:51