如何从我的家庭电影文件:: AVI和MPG4获取原始捕获时间戳?

时间:2008-10-17 17:15:43

标签: video codec file-rename

我有超过TB的家庭电影,文件名很糟糕。找到你想要的东西是不可能的。 我想将所有文件重命名为最初记录的时间(不是它们放在我的计算机上的文件时间)。 某些应用程序(如Ulead Video Studio)可以访问此信息,我认为这些信息嵌入在CODEC中。

我很乐意找到如何编写.Net应用程序来提取此信息以重命名我的文件,以便我可以轻松地组织它们或找到一个可以为我执行此操作的应用程序。 非常感谢你的进步。

其他信息::家庭电影是在miniDV和DVD摄像机上拍摄的。

5 个答案:

答案 0 :(得分:7)

这是一个基于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

答案 1 :(得分:1)

以下是我发现的一段代码,可以帮助您入门。

http://www.developerfusion.com/code/3435/a-convenient-wrapper-class-to-get-file-info/

答案 2 :(得分:1)

除非原始捕获使用绝对时间戳,否则你很有可能失去运气。根据我的经验,大多数捕获应用程序在第一帧使用时间0,而不是通用时间。要检查这个,请获取GraphStudio,将文件加载到其中,然后查看第一个输出引脚的属性中的开始时间。

您可以查看使用GSpot查看您要查找的元数据是否存在于文件中。对于AVI文件,您还可以在其十六进制编辑器中查看VirtualDub的RIFF功能。除非您的捕获应用程序对您不好,否则可能从未记录过该数据。

假设原始时间戳以某种方式可用,我建议查看帮助您找到它的任何应用程序的来源。

对于我的视频,我已经在捕获时抓取元数据,将其存储在XML文件中,并使我的转码/后处理应用程序将最后修改的时间戳保持固定为原始时间戳。

答案 3 :(得分:1)

我不能谈论DVD,但Digital Video (DV)编解码器确实在每个帧上存储时间和日期(在相机中设置)!

对于Linux,像dvgrab这样的程序会处理这些时间戳,对于Windows,我认为这是一个名为dvdate.exe的工具。

DV视频可以存储在AVI容器(.avi),raw(.dv或.dif)和QuickTime(.mov)中。但并非所有的AVI都是DV。 60分钟的DV视频约为13GB。 - 如果您的文件较小,它们可能已经转换为其他编解码器,并且时间戳丢失。

答案 4 :(得分:1)

你应该看一下exiftool。它是一个非GUI实用程序,允许您在许多媒体文件元数据中访问此类信息

http://www.sno.phy.queensu.ca/~phil/exiftool/#supported

你可以提取exiftool输出,以便用你想要的任何语言重命名一个漂亮的GUI。我有自己的python脚本。