我有超过 TB 的家庭电影文件名很糟糕。找到你想要的东西是不可能的。我想将所有文件重命名为它们最初记录的时间(而不是它们放在我电脑上的文件时间)。一些应用程序(如 Ulead Video Studio)可以访问此信息,我相信这些信息嵌入在 CODEC 中。
我很想知道如何编写一个 .Net 应用程序来提取此信息以重命名我的文件,以便我可以轻松地组织它们或找到一个可以为我执行此操作的应用程序。非常感谢您。
附加信息:: 家庭电影是在 miniDV 和 DVD 摄像机上拍摄的。
我有超过 TB 的家庭电影文件名很糟糕。找到你想要的东西是不可能的。我想将所有文件重命名为它们最初记录的时间(而不是它们放在我电脑上的文件时间)。一些应用程序(如 Ulead Video Studio)可以访问此信息,我相信这些信息嵌入在 CODEC 中。
我很想知道如何编写一个 .Net 应用程序来提取此信息以重命名我的文件,以便我可以轻松地组织它们或找到一个可以为我执行此操作的应用程序。非常感谢您。
附加信息:: 家庭电影是在 miniDV 和 DVD 摄像机上拍摄的。
这是一个基于 mplayer 的 hacky howto,它至少适用于我的相机生成的 MOV 文件:
mplayer -vo null -ao null -frames 0 -identify myfile.MOV 2>/dev/null|grep creation_time:
我用它来批量重命名它们:
for m in MVI*.MOV; do
t=$(mplayer -vo null -ao null -frames 0 -identify $m 2>/dev/null|grep creation_time:|sed 's/.*creation_time: *//;s/[-:]//g;s/ /-/')
mv ${m} ${t}_${m}
done
我不能谈论 DVD,但数字视频 (DV)编解码器确实会在每一帧上存储时间和日期(在相机中设置)!
对于 Linux,像dvgrab
处理这些时间戳这样的程序,对于 Windows,我相信一个名为 dvdate.exe 的工具可以做到。
DV 视频可以存储在 AVI 容器 (.avi)、原始 (.dv 或 .dif) 和 QuickTime (.mov) 中。但并非所有 AVI 都是 DV。60分钟的DV视频大约是13GB。– 如果您的文件较小,它们可能已经转换为其他编解码器并且时间戳会丢失。
除非原始捕获使用绝对时间戳,否则您很有可能不走运。根据我的经验,大多数捕获应用程序在第一帧使用时间 0,而不是通用时间。要检查这一点,请获取GraphStudio,在其中加载文件,然后在属性中查看第一个输出引脚的开始时间。
您可能会考虑使用GSpot 来查看您要查找的元数据是否甚至存在于文件中。对于您的 AVI 文件,您还可以在其十六进制编辑器中查看VirtualDub的 RIFF 功能。除非您的捕获应用程序对您很好,否则可能永远不会记录该数据。
假设原始时间戳以某种方式可用,我建议查看帮助您找到它的任何应用程序的来源。
对于我的视频,我已经开始在捕获时获取元数据,将其存储在 XML 文件中,并让我的转码/后处理应用程序将最后修改的时间戳固定为原始时间戳。
这是我不久前发现的一些代码,可以帮助您入门。
http://www.developerfusion.com/code/3435/a-convenient-wrapper-class-to-get-file-info/
你应该看看 exiftool。它是一个非 GUI 实用程序,可让您访问许多媒体文件元数据中的此类信息
http://www.sno.phy.queensu.ca/~phil/exiftool/#supported
您可能可以提取 exiftool 输出来制作一个漂亮的 GUI,以便以您想要的任何语言重命名。我有我自己的 python 脚本。