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

如何将手机中的MP4传输到PC且不修改文件原始创建时间

MP4文件创建时间提取与防篡改解决方案

核心前提说明

  • MP4格式内置的creation_time元数据字段封装在文件二进制内容中,只要不对文件做重新编码、转封装操作,无论系统如何修改文件系统级属性,该字段都不会发生变化,是最可靠的时间来源
  • 单纯将文件转为二进制流传输的操作不会修改文件本身的任何内容,系统传输后变更的仅为目标磁盘上的文件系统级属性(资源管理器中可见的创建时间、修改时间等),可通过代码主动覆盖修正

可行方案

方案1:直接读取MP4内置元数据(开发成本最低,优先推荐)

Windows系统移动文件时仅修改文件系统属性,不会改动MP4内部封装的时间字段,你之前读取的大概率是系统暴露的文件属性而非文件内部字段,可直接读取内置字段实现需求:

  • C# 中可直接解析MP4文件结构获取时间:找到moov容器下mvhd块的第4字节起始的32位无符号整数,该值为从1904-01-01 00:00:00开始计算的秒数,转换为本地时间即可得到原始创建时间
  • 也可引入成熟的媒体处理库完成解析,无需手动处理文件结构

方案2:自定义C#传输工具(需保留文件系统级属性时使用)

如果业务要求必须让PC端文件的系统级创建时间和手机端完全一致,自己开发传输工具完全可行,实现逻辑如下:

  1. 手机端读取两个信息:MP4文件完整二进制流、文件原始创建时间戳
  2. 传输时将时间戳、文件长度、文件流按约定顺序依次发送
  3. PC端接收完成写入文件后,调用C#内置方法File.SetCreationTimeUtc()将接收到的原始时间戳写入文件的系统属性即可,完全避免系统自动生成的时间篡改问题

方案3:无开发快速验证方案

如果需要先验证时间准确性,可直接用FFmpeg命令读取MP4内置创建时间,命令如下:
ffprobe -v error -select_streams v:0 -show_entries format=creation_time -of default=noprint_wrappers=1:nokey=1 目标文件路径.mp4

该命令读取的是文件内部封装的原始时间,不受任何系统文件属性修改的影响


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 19:54:03