Video 如何从我的家庭电影文件中获取原始的捕获时间戳::AVI和MPG4?
我有超过TB的家庭电影,文件名很糟糕。找到你想要的是不可能的。 我想将所有文件重命名为它们最初录制的时间(而不是它们放在我的计算机上的文件时间)。 一些应用程序(如Ulead Video Studio)可以访问这些信息,我相信这些信息嵌入在编解码器中 我很想知道如何编写一个.Net应用程序来提取这些信息以重命名我的文件,这样我就可以轻松地组织它们,或者找到一个可以为我这样做的应用程序。 非常感谢您的光临Video 如何从我的家庭电影文件中获取原始的捕获时间戳::AVI和MPG4?,video,codec,file-rename,Video,Codec,File Rename,我有超过TB的家庭电影,文件名很糟糕。找到你想要的是不可能的。 我想将所有文件重命名为它们最初录制的时间(而不是它们放在我的计算机上的文件时间)。 一些应用程序(如Ulead Video Studio)可以访问这些信息,我相信这些信息嵌入在编解码器中 我很想知道如何编写一个.Net应用程序来提取这些信息以重命名我的文件,这样我就可以轻松地组织它们,或者找到一个可以为我这样做的应用程序。 非常感谢您的光临 附加信息::家庭电影是用miniDV和DVD摄像机拍摄的。这是我不久前发现的一段代码,应该可
附加信息::家庭电影是用miniDV和DVD摄像机拍摄的。这是我不久前发现的一段代码,应该可以让您开始学习
除非原始捕获使用了绝对时间戳,否则很有可能你运气不佳。根据我的经验,大多数捕获应用程序在第一帧使用时间0,而不是通用时间。要检查这一点,获取并加载其中的文件,然后查看第一个输出管脚的属性中的开始时间 您可以查看使用来查看您正在查找的元数据是否存在于文件中。对于AVI文件,您还可以在其十六进制编辑器中查看的RIFF特性。除非您的捕获应用程序对您很好,否则这些数据可能从未被记录 假设原始时间戳以某种方式可用,我建议查看帮助您找到它的任何应用程序的源代码
对于我的视频,我开始在捕获时获取元数据,将其存储在XML文件中,并让我的转码/后处理应用程序将最后修改的时间戳固定为原始时间戳 这是一个基于mplayer的黑客操作系统,它至少适用于我的相机生成的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,但编解码器确实在每一帧上存储时间和日期(如相机中设置的) 对于Linux,像
dvgrab
这样的程序可以处理这些时间戳,对于Windows,我相信名为dvdate.exe的工具可以处理这些时间戳
DV视频可以存储在AVI容器(.AVI)、原始(.DV或.dif)和QuickTime(.mov)中。但并非所有AVI都是DV。60分钟的DV视频约为13GB如果您的文件较小,它们可能已经转换为其他编解码器,并且时间戳丢失。您应该看看exiftool。它是一个非GUI实用程序,允许您访问许多媒体文件元数据中的此类信息
您可能可以提取exiftool输出,以制作一个漂亮的GUI,用您想要的任何语言重命名。我有自己的python脚本。谢谢你的建议。不幸的是,我要查找的信息不在文件属性中,这些选项无法获取它。我试过:(我相信摄像机的时间/日期戳嵌入了文件中。不过谢谢!这太棒了,谢谢。作为一个小小的调整,你可以通过将
$m
更改为“$m”
并将mv
行更改为mv“${m}”${t}{m}来处理文件名中的空格。)
。我知道如果文件直接从手机发送,您不会希望文件中有任何空格,但这是一个更好的通用解决方案。这一解决方案为我节省了大量整理视频的时间!它可以读取时间戳并根据新目录移动文件。查找../Videos/-iname'*.avi'-exec exiftool'-目录