2008-10-17 43 views
7

我有超过TB的家庭电影与可怕的文件名。找到你想要的是不可能的。 我想将所有文件重命名为它们最初记录的时间(而不是文件放置在我的电脑上的时间)。 某些应用程序(如Ulead Video Studio)可以访问我认为嵌入在CODEC中的这些信息。如何从我的家庭电影文件获取原始捕获时间戳:AVI和MPG4?

我很想知道我该如何编写一个.Net应用程序来提取这些信息来重命名我的文件,以便我可以轻松地组织它们,或者找到一个能够为我做到这一点的应用程序。 非常感谢您的高级。

附加信息::在miniDV和DVD摄像机上拍摄家庭电影。

回答

1

有你的运气,除非原来的拍摄中使用绝对时间戳的好机会。根据我的经验,大多数捕捉应用程序在第一帧使用时间0,而不是世界时。要检查这一点,请获得GraphStudio,加载文件,然后查看第一个输出引脚属性中的开始时间。

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

假设原始时间戳在某种程度上可用,我建议您查看哪些应用程序帮助您找到它的来源。

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

7

这是基于mplayer的哈克的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 
+0

这是真棒,谢谢。作为一个小调整,你可以通过改变`$ m`来处理文件名中的空格到`“$ m”`和`mv`行到`mv“$ {m}”“$ {t} _ $ {m}”`我知道你不会在文件中有任何空格 – 2015-08-11 14:19:10

1

我可以不谈DVD,但Digital Video (DV)编解码器确实在每个单帧上存储时间和日期(如相机中设置的那样)!

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

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

1

你应该看看exiftool。这是一个非GUI工具,让您在众多媒体文件的元数据访问这些信息

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

你或许可以提取exiftool输出,以一个漂亮的图形用户界面在你想要的任何语言来命名。我有我自己的python脚本。

+0

这个节省了我大量的时间来组织我的视频!它可以读取时间戳和根据新目录移动文件。'find ../Videos/ -iname'这是一个更好的通用解决方案。 * .avi'-exec exiftool“-Directory Pianoman 2018-02-26 12:53:38